support_section_widget.dart 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import 'package:flutter/material.dart';
  2. import 'package:logging/logging.dart';
  3. import 'package:photos/core/configuration.dart';
  4. import 'package:photos/core/constants.dart';
  5. import 'package:photos/ui/settings/settings_section_title.dart';
  6. import 'package:photos/ui/settings/settings_text_item.dart';
  7. import 'package:photos/ui/web_page.dart';
  8. import 'package:photos/utils/dialog_util.dart';
  9. import 'package:photos/utils/email_util.dart';
  10. import 'package:url_launcher/url_launcher.dart';
  11. class SupportSectionWidget extends StatelessWidget {
  12. const SupportSectionWidget({Key key}) : super(key: key);
  13. @override
  14. Widget build(BuildContext context) {
  15. return Column(
  16. children: [
  17. SettingsSectionTitle("support"),
  18. Padding(padding: EdgeInsets.all(4)),
  19. GestureDetector(
  20. behavior: HitTestBehavior.translucent,
  21. onTap: () async {
  22. try {
  23. final Uri emailLaunchUri = Uri(
  24. scheme: 'mailto',
  25. path: kSupportEmail,
  26. );
  27. launchUrl(emailLaunchUri);
  28. } catch (e) {
  29. Logger("SupportSection").severe(e);
  30. showErrorDialog(context, "", "please email us at $kSupportEmail");
  31. }
  32. },
  33. child: SettingsTextItem(text: "email", icon: Icons.navigate_next),
  34. ),
  35. Divider(height: 4),
  36. GestureDetector(
  37. behavior: HitTestBehavior.translucent,
  38. onTap: () {
  39. Navigator.of(context).push(
  40. MaterialPageRoute(
  41. builder: (BuildContext context) {
  42. final endpoint = Configuration.instance.getHttpEndpoint() +
  43. "/users/roadmap";
  44. final isLoggedIn = Configuration.instance.getToken() != null;
  45. final url = isLoggedIn
  46. ? endpoint + "?token=" + Configuration.instance.getToken()
  47. : kRoadmapURL;
  48. return WebPage("roadmap", url);
  49. },
  50. ),
  51. );
  52. },
  53. child: SettingsTextItem(text: "roadmap", icon: Icons.navigate_next),
  54. ),
  55. Divider(height: 4),
  56. GestureDetector(
  57. behavior: HitTestBehavior.translucent,
  58. onTap: () async {
  59. await sendLogs(context, "report bug", "bug@ente.io");
  60. },
  61. child: SettingsTextItem(
  62. text: "report bug 🐞", icon: Icons.navigate_next),
  63. ),
  64. ],
  65. );
  66. }
  67. }