From 2f8bb983d5929308027a1b0471dcefef0a6906b0 Mon Sep 17 00:00:00 2001 From: Vadim <44135514+vodemn@users.noreply.github.com> Date: Wed, 10 Apr 2024 22:30:35 +0200 Subject: [PATCH] MLI-7 Manually restore purchases (#165) * added `RestorePurchasesListTile` * added `restorePurchases` to iap stub * reordered settings * migrated to iap 0.9.0 * migrated to iap 0.9.1 * use version in release commit * Revert "use version in release commit" This reverts commit 513b13eb964542db826adf9f5dcc4681bf575e04. * migrated to iap 0.9.2 * allow manual restore if Pro features are not unlocked --- iap/lib/src/providers/iap_products_provider.dart | 2 ++ lib/l10n/intl_en.arb | 1 + lib/l10n/intl_fr.arb | 1 + lib/l10n/intl_ru.arb | 1 + lib/l10n/intl_zh.arb | 1 + .../widget_list_tile_restore_purchases.dart | 16 ++++++++++++++++ .../about/widget_settings_section_about.dart | 13 ++++++++----- pubspec.yaml | 4 ++-- 8 files changed, 32 insertions(+), 7 deletions(-) create mode 100644 lib/screens/settings/components/about/components/restore_purchases/widget_list_tile_restore_purchases.dart diff --git a/iap/lib/src/providers/iap_products_provider.dart b/iap/lib/src/providers/iap_products_provider.dart index c8ad2ba..2c4ca5c 100644 --- a/iap/lib/src/providers/iap_products_provider.dart +++ b/iap/lib/src/providers/iap_products_provider.dart @@ -32,6 +32,8 @@ class IAPProductsProviderState extends State { } Future buy(IAPProductType type) async {} + + Future restorePurchases() async {} } class IAPProducts extends InheritedModel { diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb index ba429c9..46b8ad8 100644 --- a/lib/l10n/intl_en.arb +++ b/lib/l10n/intl_en.arb @@ -82,6 +82,7 @@ "primaryColor": "Primary color", "choosePrimaryColor": "Choose primary color", "about": "About", + "restorePurchases": "Restore purchases", "sourceCode": "Source code", "reportIssue": "Report an issue", "writeEmail": "Write an email", diff --git a/lib/l10n/intl_fr.arb b/lib/l10n/intl_fr.arb index fe0f831..fd661a3 100644 --- a/lib/l10n/intl_fr.arb +++ b/lib/l10n/intl_fr.arb @@ -82,6 +82,7 @@ "primaryColor": "Couleur primaire", "choosePrimaryColor": "Choisir la couleur primaire", "about": "À propos de l'application", + "restorePurchases": "Restaurer les achats", "sourceCode": "Code source", "reportIssue": "Rapporter un problème", "writeEmail": "Écrire un email", diff --git a/lib/l10n/intl_ru.arb b/lib/l10n/intl_ru.arb index 9e4784c..4543e1f 100644 --- a/lib/l10n/intl_ru.arb +++ b/lib/l10n/intl_ru.arb @@ -82,6 +82,7 @@ "primaryColor": "Основной цвет", "choosePrimaryColor": "Выберите основной цвет", "about": "О приложении", + "restorePurchases": "Восстановить покупки", "sourceCode": "Исходный код", "reportIssue": "Сообщить о проблеме", "writeEmail": "Написать на почту", diff --git a/lib/l10n/intl_zh.arb b/lib/l10n/intl_zh.arb index e389eaa..8994e91 100644 --- a/lib/l10n/intl_zh.arb +++ b/lib/l10n/intl_zh.arb @@ -82,6 +82,7 @@ "primaryColor": "主题颜色", "choosePrimaryColor": "选择主题颜色", "about": "关于", + "restorePurchases": "恢复购买", "sourceCode": "源代码", "reportIssue": "报告问题", "writeEmail": "Email", diff --git a/lib/screens/settings/components/about/components/restore_purchases/widget_list_tile_restore_purchases.dart b/lib/screens/settings/components/about/components/restore_purchases/widget_list_tile_restore_purchases.dart new file mode 100644 index 0000000..8bbbdea --- /dev/null +++ b/lib/screens/settings/components/about/components/restore_purchases/widget_list_tile_restore_purchases.dart @@ -0,0 +1,16 @@ +import 'package:flutter/material.dart'; +import 'package:lightmeter/generated/l10n.dart'; +import 'package:m3_lightmeter_iap/m3_lightmeter_iap.dart'; + +class RestorePurchasesListTile extends StatelessWidget { + const RestorePurchasesListTile({super.key}); + + @override + Widget build(BuildContext context) { + return ListTile( + leading: const Icon(Icons.restore), + title: Text(S.of(context).restorePurchases), + onTap: IAPProductsProvider.of(context).restorePurchases, + ); + } +} diff --git a/lib/screens/settings/components/about/widget_settings_section_about.dart b/lib/screens/settings/components/about/widget_settings_section_about.dart index d911ae8..0bb712c 100644 --- a/lib/screens/settings/components/about/widget_settings_section_about.dart +++ b/lib/screens/settings/components/about/widget_settings_section_about.dart @@ -1,10 +1,12 @@ import 'package:flutter/material.dart'; import 'package:lightmeter/generated/l10n.dart'; import 'package:lightmeter/screens/settings/components/about/components/report_issue/widget_list_tile_report_issue.dart'; +import 'package:lightmeter/screens/settings/components/about/components/restore_purchases/widget_list_tile_restore_purchases.dart'; import 'package:lightmeter/screens/settings/components/about/components/source_code/widget_list_tile_source_code.dart'; import 'package:lightmeter/screens/settings/components/about/components/version/widget_list_tile_version.dart'; import 'package:lightmeter/screens/settings/components/about/components/write_email/widget_list_tile_write_email.dart'; import 'package:lightmeter/screens/settings/components/shared/settings_section/widget_settings_section.dart'; +import 'package:lightmeter/utils/context_utils.dart'; class AboutSettingsSection extends StatelessWidget { const AboutSettingsSection({super.key}); @@ -13,11 +15,12 @@ class AboutSettingsSection extends StatelessWidget { Widget build(BuildContext context) { return SettingsSection( title: S.of(context).about, - children: const [ - SourceCodeListTile(), - ReportIssueListTile(), - WriteEmailListTile(), - VersionListTile(), + children: [ + const SourceCodeListTile(), + if (!context.isPro) const RestorePurchasesListTile(), + const ReportIssueListTile(), + const WriteEmailListTile(), + const VersionListTile(), ], ); } diff --git a/pubspec.yaml b/pubspec.yaml index cc4eb2a..1745e90 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -29,13 +29,13 @@ dependencies: m3_lightmeter_iap: git: url: "https://github.com/vodemn/m3_lightmeter_iap" - ref: v0.8.1 + ref: v0.9.2 m3_lightmeter_resources: git: url: "https://github.com/vodemn/m3_lightmeter_resources" ref: main material_color_utilities: 0.5.0 - package_info_plus: 4.0.2 + package_info_plus: 4.2.0 permission_handler: 10.4.3 platform: 3.1.0 shared_preferences: 2.2.0