support_section_widget.dart 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. // @dart=2.9
  2. import 'package:ente_auth/core/constants.dart';
  3. import 'package:ente_auth/core/logging/super_logging.dart';
  4. import 'package:ente_auth/l10n/l10n.dart';
  5. import 'package:ente_auth/theme/ente_theme.dart';
  6. import 'package:ente_auth/ui/components/captioned_text_widget.dart';
  7. import 'package:ente_auth/ui/components/expandable_menu_item_widget.dart';
  8. import 'package:ente_auth/ui/components/menu_item_widget.dart';
  9. import 'package:ente_auth/ui/components/toggle_switch_widget.dart';
  10. import 'package:ente_auth/ui/settings/common_settings.dart';
  11. import 'package:ente_auth/utils/email_util.dart';
  12. import 'package:flutter/material.dart';
  13. class SupportSectionWidget extends StatefulWidget {
  14. const SupportSectionWidget({Key key}) : super(key: key);
  15. @override
  16. State<SupportSectionWidget> createState() => _SupportSectionWidgetState();
  17. }
  18. class _SupportSectionWidgetState extends State<SupportSectionWidget> {
  19. @override
  20. Widget build(BuildContext context) {
  21. final l10n = context.l10n;
  22. return ExpandableMenuItemWidget(
  23. title: l10n.support,
  24. selectionOptionsWidget: _getSectionOptions(context),
  25. leadingIcon: Icons.help_outline_outlined,
  26. );
  27. }
  28. Widget _getSectionOptions(BuildContext context) {
  29. final l10n = context.l10n;
  30. return Column(
  31. children: [
  32. sectionOptionSpacing,
  33. MenuItemWidget(
  34. captionedTextWidget: CaptionedTextWidget(
  35. title: l10n.email,
  36. ),
  37. pressedColor: getEnteColorScheme(context).fillFaint,
  38. trailingIcon: Icons.chevron_right_outlined,
  39. trailingIconIsMuted: true,
  40. onTap: () async {
  41. await sendEmail(context, to: supportEmail);
  42. },
  43. ),
  44. sectionOptionSpacing,
  45. MenuItemWidget(
  46. captionedTextWidget: CaptionedTextWidget(
  47. title: l10n.reportABug,
  48. ),
  49. pressedColor: getEnteColorScheme(context).fillFaint,
  50. trailingIcon: Icons.chevron_right_outlined,
  51. trailingIconIsMuted: true,
  52. onTap: () async {
  53. await sendLogs(context, l10n.reportBug, "auth@ente.io");
  54. },
  55. onDoubleTap: () async {
  56. final zipFilePath = await getZippedLogsFile(context);
  57. await shareLogs(context, "auth@ente.io", zipFilePath);
  58. },
  59. ),
  60. sectionOptionSpacing,
  61. MenuItemWidget(
  62. captionedTextWidget: CaptionedTextWidget(
  63. title: l10n.crashAndErrorReporting,
  64. ),
  65. trailingSwitch: ToggleSwitchWidget(
  66. value: SuperLogging.shouldReportErrors(),
  67. onChanged: (value) async {
  68. await SuperLogging.setShouldReportErrors(value);
  69. setState(() {});
  70. },
  71. ),
  72. ),
  73. sectionOptionSpacing,
  74. ],
  75. );
  76. }
  77. }