@@ -7,6 +7,7 @@ class ProVersionProvider extends ChangeNotifier {
77
88 bool _isProStatus = false ;
99 bool _isPurchaseError = false ;
10+ bool _isRestoreError = false ;
1011
1112 final InAppPurchaseRepository _repository;
1213
@@ -21,15 +22,23 @@ class ProVersionProvider extends ChangeNotifier {
2122 }
2223
2324 void _setProStatus (bool status) {
25+ if (_isProStatus == status) return ;
2426 _isProStatus = status;
2527 notifyListeners ();
2628 }
2729
2830 void _setPurchaseError (bool isError) {
31+ if (_isPurchaseError == isError) return ;
2932 _isPurchaseError = isError;
3033 notifyListeners ();
3134 }
3235
36+ void _setRestoreError (bool isRestoreError) {
37+ if (_isRestoreError == isRestoreError) return ;
38+ _isRestoreError = isRestoreError;
39+ notifyListeners ();
40+ }
41+
3342 Future <void > upgradeToPro () async {
3443 try {
3544 await _repository.buyProduct (_proVersionKey);
@@ -47,6 +56,18 @@ class ProVersionProvider extends ChangeNotifier {
4756 _setProStatus (false );
4857 }
4958
59+ Future <void > restorePurchases () async {
60+ final isRestoreCompleted = await _repository.restorePurchases ();
61+ if (isRestoreCompleted) {
62+ _setRestoreError (false );
63+ } else {
64+ _setRestoreError (true );
65+ await Future .delayed (const Duration (milliseconds: 100 ));
66+ _setRestoreError (false );
67+ }
68+ }
69+
5070 bool get isPro => _isProStatus;
5171 bool get isPurchaseError => _isPurchaseError;
72+ bool get isRestoreError => _isRestoreError;
5273}
0 commit comments