Skip to content

Commit 34e1e46

Browse files
add support for trackingConsentState
1 parent dcd40a5 commit 34e1e46

9 files changed

Lines changed: 100 additions & 1 deletion

File tree

android/src/main/kotlin/com/squareup/square_mobile_payments_sdk/SquareMobilePaymentsSdkPlugin.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,12 @@ class SquareMobilePaymentsSdkPlugin : FlutterPlugin, MethodCallHandler, StreamHa
6666
"isOfflineProcessingAllowed" -> SettingsModule.isOfflineProcessingAllowed(result)
6767
"getOfflineTotalStoredAmountLimit" -> SettingsModule.getOfflineTotalStoredAmountLimit(result)
6868
"getOfflineTransactionAmountLimit" -> SettingsModule.getOfflineTransactionAmountLimit(result)
69+
"getTrackingConsentState" -> SettingsModule.getTrackingConsentState(result)
70+
"updateTrackingConsent" -> {
71+
val granted = call.argument<Boolean>("granted")
72+
granted?.let { SettingsModule.updateTrackingConsent(result, it) }
73+
}
74+
6975
"getPayments" -> PaymentModule.getPayments(result)
7076
"getTotalStoredPaymentAmount" -> PaymentModule.getTotalStoredPaymentAmount(result)
7177
"getReaders" -> ReaderModule.getReaders(result)

android/src/main/kotlin/com/squareup/square_mobile_payments_sdk/modules/SettingsModule.kt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,5 +57,18 @@ class SettingsModule {
5757
val paymentSettings = settingsManager.getPaymentSettings()
5858
result.success(paymentSettings.offlineTransactionAmountLimit?.toMoneyMap())
5959
}
60+
61+
@JvmStatic
62+
fun getTrackingConsentState(result: MethodChannel.Result) {
63+
val consentState = settingsManager.trackingConsentState
64+
result.success(consentState.name) // Or map it to a specific string/integer if needed
65+
}
66+
67+
@JvmStatic
68+
fun updateTrackingConsent(result: MethodChannel.Result, granted: Boolean) {
69+
settingsManager.updateTrackingConsent(granted) // Assuming the method name is similar
70+
result.success(true)
71+
}
72+
6073
}
6174
}

ios/Classes/Extensions/ReaderExtensions.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ extension ReaderInfo {
1515
"name" : name,
1616
"serialNumber" : serialNumber ?? NSNull(),
1717
"state" : state.toName(),
18+
"status": statusInfo.status.rawValue,
19+
"statusReason": statusInfo.reason.rawValue,
1820
"supportedInputMethods" : supportedInputMethods.toList()
1921
]
2022
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import SquareMobilePaymentsSDK
2+
3+
public class SettingsMapper {
4+
5+
static func getTrackingConsentState(from state: UInt) -> String {
6+
switch state {
7+
case 0: return "PENDING"
8+
case 1: return "GRANTED"
9+
case 2: return "DENIED"
10+
case 3: return "NOT_REQUIRED"
11+
default: return "UNKNOWN"
12+
}
13+
}
14+
}

ios/Classes/Modules/SettingsModule.swift

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,4 +53,16 @@ public class SettingsModule {
5353
result(NSNull())
5454
}
5555
}
56+
57+
public static func getTrackingConsentState(result: @escaping FlutterResult) {
58+
let consentState = settingsManager.trackingConsentState
59+
result(SettingsMapper.getTrackingConsentState(from: consentState.rawValue))
60+
}
61+
62+
public static func updateTrackingConsent(result: @escaping FlutterResult, granted: Bool) {
63+
settingsManager.updateTrackingConsent(withGranted: granted)
64+
result(true)
65+
66+
}
67+
5668
}

ios/Classes/SquareMobilePaymentsSdkPlugin.swift

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,20 @@ public class SquareMobilePaymentsSdkPlugin: NSObject, FlutterPlugin, FlutterStre
8787
PaymentModule.getPayments(result: result)
8888
case "getTotalStoredPaymentAmount":
8989
PaymentModule.getTotalStoredPaymentAmount(result: result)
90-
90+
case "getTrackingConsentState":
91+
SettingsModule.getTrackingConsentState(result: result)
92+
93+
case "updateTrackingConsent":
94+
if let arguments = call.arguments as? [String: Any],
95+
let granted = arguments["granted"] as? Bool {
96+
SettingsModule.updateTrackingConsent(result: result, granted: granted)
97+
} else {
98+
result(FlutterError(
99+
code: "missingParameters",
100+
message: "Missing granted parameter",
101+
details: nil))
102+
}
103+
91104
case "getReaders":
92105
ReaderModule.getReaders(result: result)
93106
case "getReader":

lib/square_mobile_payments_sdk_method_channel.dart

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,27 @@ class MethodChannelSquareMobilePaymentsSdk
301301
return result;
302302
}
303303

304+
@override
305+
Future<String> getTrackingConsentState() async {
306+
final state = await methodChannel.invokeMethod<String>('getTrackingConsentState');
307+
if (state == null) {
308+
throw getChannelStateError("getTrackingConsentState()", "returned null");
309+
}
310+
return state;
311+
}
312+
313+
@override
314+
Future<void> updateTrackingConsent({required bool granted}) async {
315+
try {
316+
await methodChannel.invokeMethod<void>(
317+
'updateTrackingConsent',
318+
{'granted': granted},
319+
);
320+
} on PlatformException catch (e) {
321+
throw SettingsError(e.code, e.message, e.details);
322+
}
323+
}
324+
304325
@override
305326
ReaderCallbackReference setReaderChangedCallback(
306327
FutureOr<void> Function(ReaderChangedEvent event) callback) {

lib/square_mobile_payments_sdk_platform_interface.dart

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,4 +151,12 @@ abstract class SquareMobilePaymentsSdkPlatform extends PlatformInterface {
151151
PairingHandle pairReader(void Function(bool, String?) callback) {
152152
throw UnimplementedError('pairReader() has not been implemented.');
153153
}
154+
155+
Future<String> getTrackingConsentState() {
156+
throw UnimplementedError('getTrackingConsentState() has not been implemented.');
157+
}
158+
159+
Future<void> updateTrackingConsent({required bool granted}) {
160+
throw UnimplementedError('updateTrackingConsent() has not been implemented.');
161+
}
154162
}

lib/src/managers/settings_manager.dart

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,16 @@ class SettingsManager {
2323
SquareMobilePaymentsSdkPlatform.instance.showSettings();
2424
}
2525

26+
Future<String> getTrackingConsentState() {
27+
return SquareMobilePaymentsSdkPlatform.instance.getTrackingConsentState();
28+
}
29+
30+
Future<void> updateTrackingConsent({required bool granted}) {
31+
return SquareMobilePaymentsSdkPlatform.instance
32+
.updateTrackingConsent(granted: granted);
33+
}
34+
35+
2636
final PaymentSettings paymentSettings = _PaymentSettings();
2737
}
2838

0 commit comments

Comments
 (0)