diff --git a/app/lib/help_utils.dart b/app/lib/help_utils.dart index a1de2926..1add6b7e 100644 --- a/app/lib/help_utils.dart +++ b/app/lib/help_utils.dart @@ -14,3 +14,5 @@ const editPhotosUrl = "https://bit.ly/3v82oKA"; const collectionTypesUrl = "https://bit.ly/3OwSiNq"; const contributorsUrl = "https://bit.ly/3QhlQQs"; const videoPreviewUrl = "https://bit.ly/4c7cazP"; + +const donateUrl = "https://bit.ly/3wQOHPZ"; diff --git a/app/lib/l10n/app_en.arb b/app/lib/l10n/app_en.arb index 6524266d..bb6be399 100644 --- a/app/lib/l10n/app_en.arb +++ b/app/lib/l10n/app_en.arb @@ -1532,6 +1532,10 @@ }, "fileNotFound": "File not found", + "donationTitle": "Buy me a coffee", + "donationButtonLabel": "BUY ME A COFFEE", + "donationShortMessage": "Want to help?", + "errorUnauthenticated": "Unauthenticated access. Please sign-in again if the problem continues", "@errorUnauthenticated": { "description": "Error message when server responds with HTTP401" diff --git a/app/lib/widget/changelog.dart b/app/lib/widget/changelog.dart index eb02337f..dc360b40 100644 --- a/app/lib/widget/changelog.dart +++ b/app/lib/widget/changelog.dart @@ -74,6 +74,15 @@ class Changelog extends StatelessWidget { Widget _buildContent(BuildContext context) { return Column( children: [ + _ChangelogBanner( + title: Text(L10n.global().donationShortMessage), + action: TextButton( + onPressed: () { + launch(help_util.donateUrl); + }, + child: Text(L10n.global().donationButtonLabel), + ), + ), Expanded( child: ListView.builder( itemCount: _changelogs.length, diff --git a/app/lib/widget/settings.dart b/app/lib/widget/settings.dart index f721080a..b801a95d 100644 --- a/app/lib/widget/settings.dart +++ b/app/lib/widget/settings.dart @@ -6,6 +6,7 @@ import 'package:logging/logging.dart'; import 'package:nc_photos/app_localizations.dart'; import 'package:nc_photos/controller/pref_controller.dart'; import 'package:nc_photos/debug_util.dart'; +import 'package:nc_photos/help_utils.dart' as help_util; import 'package:nc_photos/k.dart' as k; import 'package:nc_photos/language_util.dart' as language_util; import 'package:nc_photos/mobile/platform.dart' @@ -138,6 +139,13 @@ class _SettingsState extends State { } }, ), + ListTile( + leading: const Icon(Icons.coffee_outlined), + title: Text(L10n.global().donationTitle), + onTap: () { + launch(help_util.donateUrl); + }, + ), ListTile( title: Text(L10n.global().settingsSourceCodeTitle), onTap: () {