support_section_widget.dart 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import 'dart:io';
  2. import 'package:flutter/material.dart';
  3. import 'package:photos/core/constants.dart';
  4. import "package:photos/generated/l10n.dart";
  5. import 'package:photos/theme/ente_theme.dart';
  6. import 'package:photos/ui/components/captioned_text_widget.dart';
  7. import 'package:photos/ui/components/expandable_menu_item_widget.dart';
  8. import 'package:photos/ui/components/menu_item_widget/menu_item_widget.dart';
  9. import 'package:photos/ui/settings/about_section_widget.dart';
  10. import 'package:photos/ui/settings/common_settings.dart';
  11. import 'package:photos/utils/email_util.dart';
  12. import "package:url_launcher/url_launcher_string.dart";
  13. class SupportSectionWidget extends StatelessWidget {
  14. const SupportSectionWidget({Key? key}) : super(key: key);
  15. @override
  16. Widget build(BuildContext context) {
  17. return ExpandableMenuItemWidget(
  18. title: S.of(context).support,
  19. selectionOptionsWidget: _getSectionOptions(context),
  20. leadingIcon: Icons.help_outline_outlined,
  21. );
  22. }
  23. Widget _getSectionOptions(BuildContext context) {
  24. final String bugsEmail =
  25. Platform.isAndroid ? "android-bugs@ente.io" : "ios-bugs@ente.io";
  26. return Column(
  27. children: [
  28. sectionOptionSpacing,
  29. MenuItemWidget(
  30. captionedTextWidget: CaptionedTextWidget(
  31. title: S.of(context).contactSupport,
  32. ),
  33. pressedColor: getEnteColorScheme(context).fillFaint,
  34. trailingIcon: Icons.chevron_right_outlined,
  35. trailingIconIsMuted: true,
  36. onTap: () async {
  37. await sendEmail(context, to: supportEmail);
  38. },
  39. ),
  40. sectionOptionSpacing,
  41. AboutMenuItemWidget(
  42. title: S.of(context).faq,
  43. url: "https://ente.io/faq",
  44. ),
  45. sectionOptionSpacing,
  46. MenuItemWidget(
  47. captionedTextWidget: CaptionedTextWidget(
  48. title: S.of(context).suggestFeatures,
  49. ),
  50. pressedColor: getEnteColorScheme(context).fillFaint,
  51. trailingIcon: Icons.chevron_right_outlined,
  52. trailingIconIsMuted: true,
  53. onTap: () async {
  54. // ignore: unawaited_futures
  55. launchUrlString(
  56. githubDiscussionsUrl,
  57. mode: LaunchMode.externalApplication,
  58. );
  59. },
  60. ),
  61. sectionOptionSpacing,
  62. MenuItemWidget(
  63. captionedTextWidget: CaptionedTextWidget(
  64. title: S.of(context).reportABug,
  65. ),
  66. pressedColor: getEnteColorScheme(context).fillFaint,
  67. trailingIcon: Icons.chevron_right_outlined,
  68. trailingIconIsMuted: true,
  69. onTap: () async {
  70. await sendLogs(context, S.of(context).reportBug, bugsEmail);
  71. },
  72. onLongPress: () async {
  73. final zipFilePath = await getZippedLogsFile(context);
  74. await shareLogs(context, bugsEmail, zipFilePath);
  75. },
  76. ),
  77. sectionOptionSpacing,
  78. ],
  79. );
  80. }
  81. }