Skip to content

Commit dc253bb

Browse files
authored
[2.2.0]
* The library has been split into modules * Added buttons: `AdaptivePayButton`, `ApplePayButton`, `GooglePayButton` * Changed `processingPayment`, it now accepts a `PaymentRequest` model * Support iOS 14.0
1 parent 63f3b0f commit dc253bb

File tree

19 files changed

+337
-286
lines changed

19 files changed

+337
-286
lines changed

example/lib/main.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,7 @@ class _MyAppState extends State<MyApp> {
147147
},
148148
),
149149
googlePayButton: GooglePayButton(
150+
type: GooglePayButtonType.plain,
150151
request: PaymentRequest.google(
151152
google: googleParameters,
152153
currencyCode: 'USD',

example/pubspec.lock

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -92,27 +92,27 @@ packages:
9292
path: "../packages/mad_pay"
9393
relative: true
9494
source: path
95-
version: "2.2.0-beta.1"
95+
version: "2.2.0-beta.6"
9696
mad_pay_android:
97-
dependency: "direct overridden"
97+
dependency: transitive
9898
description:
99-
path: "../packages/mad_pay_android"
100-
relative: true
101-
source: path
102-
version: "2.2.0-beta.1"
99+
name: mad_pay_android
100+
url: "https://pub.dartlang.org"
101+
source: hosted
102+
version: "2.2.0-beta.3"
103103
mad_pay_ios:
104104
dependency: "direct overridden"
105105
description:
106106
path: "../packages/mad_pay_ios"
107107
relative: true
108108
source: path
109-
version: "2.2.0-beta.1"
109+
version: "2.2.0-beta.2"
110110
mad_pay_platform_interface:
111-
dependency: "direct overridden"
111+
dependency: transitive
112112
description:
113-
path: "../packages/mad_pay_platform_interface"
114-
relative: true
115-
source: path
113+
name: mad_pay_platform_interface
114+
url: "https://pub.dartlang.org"
115+
source: hosted
116116
version: "2.2.0-beta.1"
117117
matcher:
118118
dependency: transitive

packages/mad_pay/lib/mad_pay.dart

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,25 @@
11
library mad_pay;
22

3-
export 'src/mad_pay.dart';
3+
import 'dart:async';
44

5-
export 'src/widgets/adaptive_pay_button.dart';
5+
import 'package:flutter/foundation.dart'
6+
show TargetPlatform, defaultTargetPlatform;
67

7-
export 'src/widgets/pay_button.dart'
8-
show ApplePayButton, GooglePayButton, PaymentCallback, ErrorCallback;
8+
import 'package:flutter/material.dart';
99

10-
export 'package:mad_pay_platform_interface/mad_pay_platform_interface.dart';
10+
import 'package:mad_pay_ios/mad_pay_ios.dart';
11+
import 'package:mad_pay_android/mad_pay_android.dart';
12+
import 'package:mad_pay_platform_interface/mad_pay_platform_interface.dart';
13+
import 'package:mad_pay_platform_interface/mad_pay_platform_interface_private.dart';
14+
15+
import 'package:mad_pay/src/utils/debouncer.dart';
1116

12-
export 'package:mad_pay_android/mad_pay_android.dart'
13-
show GooglePayButtonStyle, GooglePayButtonType;
17+
export 'package:mad_pay_platform_interface/mad_pay_platform_interface.dart';
18+
export 'package:mad_pay_android/mad_pay_android.dart';
19+
export 'package:mad_pay_ios/mad_pay_ios.dart';
1420

15-
export 'package:mad_pay_ios/mad_pay_ios.dart'
16-
show ApplePayButtonStyle, ApplePayButtonType;
21+
part 'src/mad_pay.dart';
22+
part 'src/widgets/pay_button.dart';
23+
part 'src/widgets/apple_pay_button.dart';
24+
part 'src/widgets/google_pay_button.dart';
25+
part 'src/widgets/adaptive_pay_button.dart';

packages/mad_pay/lib/src/mad_pay.dart

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,4 @@
1-
import 'dart:async';
2-
3-
import 'package:flutter/foundation.dart'
4-
show TargetPlatform, defaultTargetPlatform;
5-
import 'package:mad_pay_platform_interface/mad_pay_platform_interface.dart';
6-
import 'package:mad_pay_platform_interface/mad_pay_platform_interface_private.dart';
1+
part of mad_pay;
72

83
/// {@macro mad_pay}
94
class MadPay {
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import 'dart:async';
2+
3+
/// {@macro debouncer}
4+
class Debouncer {
5+
/// {@template debouncer}
6+
/// Сlass for handling method call debouncing.
7+
/// {@endtemplate}
8+
Debouncer(this._milliseconds);
9+
final int _milliseconds;
10+
late void Function() _action;
11+
bool _block = false;
12+
13+
/// Run action and blocks execution of other actions for a specified time
14+
Future<void> run(void Function() action) async {
15+
_action = action;
16+
if (!_block) {
17+
_block = true;
18+
_action();
19+
await Future<void>.delayed(Duration(milliseconds: _milliseconds));
20+
_block = false;
21+
}
22+
}
23+
}

packages/mad_pay/lib/src/widgets/adaptive_pay_button.dart

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
1-
import 'package:flutter/foundation.dart';
2-
import 'package:flutter/widgets.dart';
3-
4-
import 'package:mad_pay/src/widgets/pay_button.dart';
1+
part of mad_pay;
52

63
/// {@macro adaptive_pay_button}
74
class AdaptivePayButton extends StatelessWidget {

packages/mad_pay/lib/src/widgets/apple_pay_button.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
part of 'pay_button.dart';
1+
part of mad_pay;
22

33
/// {@macro apple_pay_button}
44
class ApplePayButton extends _PayButton {

packages/mad_pay/lib/src/widgets/google_pay_button.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
part of 'pay_button.dart';
1+
part of mad_pay;
22

33
/// {@macro google_pay_button}
44
class GooglePayButton extends _PayButton {

packages/mad_pay/lib/src/widgets/pay_button.dart

Lines changed: 20 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,4 @@
1-
import 'dart:async';
2-
3-
import 'package:flutter/foundation.dart' show defaultTargetPlatform;
4-
5-
import 'package:flutter/material.dart';
6-
7-
import 'package:mad_pay_platform_interface/mad_pay_platform_interface.dart';
8-
import 'package:mad_pay_ios/mad_pay_ios.dart';
9-
import 'package:mad_pay_android/mad_pay_android.dart';
10-
11-
import '../mad_pay.dart';
12-
13-
part 'apple_pay_button.dart';
14-
part 'google_pay_button.dart';
1+
part of mad_pay;
152

163
/// On Payment Callback
174
typedef PaymentCallback = void Function(PaymentResponse? result);
@@ -49,18 +36,22 @@ abstract class _PayButton extends StatefulWidget {
4936
final Widget? childIfUnavailable;
5037
final Widget? loadingIndicator;
5138

39+
final Debouncer debouncer = Debouncer(300);
40+
5241
VoidCallback _defaultOnPressed(
5342
VoidCallback? onPressed, PaymentRequest request) {
54-
return () async {
55-
onPressed?.call();
56-
57-
try {
58-
final PaymentResponse? result =
59-
await _payClient.processingPayment(request);
60-
onPaymentResult(result);
61-
} catch (error) {
62-
onError?.call(error);
63-
}
43+
return () {
44+
debouncer.run(() async {
45+
onPressed?.call();
46+
47+
try {
48+
final PaymentResponse? result =
49+
await _payClient.processingPayment(request);
50+
onPaymentResult(result);
51+
} catch (error) {
52+
onError?.call(error);
53+
}
54+
});
6455
};
6556
}
6657

@@ -78,6 +69,8 @@ class _PayButtonState extends State<_PayButton> with WidgetsBindingObserver {
7869
final StreamController<bool> availablePaymentsStatus =
7970
StreamController<bool>();
8071

72+
AppLifecycleState? _lastState;
73+
8174
@override
8275
void initState() {
8376
super.initState();
@@ -93,10 +86,12 @@ class _PayButtonState extends State<_PayButton> with WidgetsBindingObserver {
9386

9487
@override
9588
void didChangeAppLifecycleState(AppLifecycleState state) {
96-
if (state == AppLifecycleState.resumed) {
89+
if (_lastState == AppLifecycleState.paused &&
90+
state == AppLifecycleState.resumed) {
9791
availablePaymentsStatus
9892
.addStream(Stream<bool>.fromFuture(checkPayments()));
9993
}
94+
_lastState = state;
10095
}
10196

10297
Future<bool> checkPayments() async {

packages/mad_pay/pubspec.yaml

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: mad_pay
22
description: Mad Pay will help you make payments through Apple Pay and Google Pay
3-
version: 2.2.0-beta.1
3+
version: 2.2.0
44
repository: https://github.com/MadBrains/Mad-Pay-Flutter
55
issue_tracker: https://github.com/MadBrains/Mad-Pay-Flutter/issues
66
homepage: https://madbrains.ru/
@@ -12,9 +12,9 @@ environment:
1212
dependencies:
1313
flutter:
1414
sdk: flutter
15-
mad_pay_platform_interface: 2.2.0-beta.1
16-
mad_pay_android: 2.2.0-beta.1
17-
mad_pay_ios: 2.2.0-beta.1
15+
mad_pay_platform_interface: ^2.2.0
16+
mad_pay_android: ^2.2.0
17+
mad_pay_ios: ^2.2.0
1818

1919
# For development. Remove/comment before publishing to pub.
2020
# dependency_overrides:
@@ -27,4 +27,12 @@ dependencies:
2727

2828
dev_dependencies:
2929
flutter_test:
30-
sdk: flutter
30+
sdk: flutter
31+
32+
flutter:
33+
plugin:
34+
platforms:
35+
android:
36+
default_package: mad_pay_android
37+
ios:
38+
default_package: mad_pay_ios

0 commit comments

Comments
 (0)