-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathview_model.dart
More file actions
123 lines (112 loc) · 3.5 KB
/
Copy pathview_model.dart
File metadata and controls
123 lines (112 loc) · 3.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
import 'package:mindbox/mindbox.dart';
import 'package:permission_handler/permission_handler.dart';
class ViewModel {
//https://developers.mindbox.ru/docs/%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-flutter-sdk
static syncOperation() {
Mindbox.instance.executeSyncOperation(
operationSystemName: 'APIMethodForReleaseExampleIos',
operationBody: {
"viewProduct": {
"product": {
"ids": {"website": "1"}
}
}
},
onSuccess: (data) {},
onError: (error) {},
);
}
static asyncOperation() {
Mindbox.instance.executeAsyncOperation(
operationSystemName: "APIMethodForReleaseExampleIos",
operationBody: {
"viewProduct": {
"product": {
"ids": {"website": "2"}
}
}
});
}
//used for send action "notification center was opened"
static asyncOperationNCOpen() {
Mindbox.instance.executeAsyncOperation(
operationSystemName: "mobileapp.NCOpen", operationBody: {});
}
//used for send action "click on push from notification center"
static asyncOperationNCPushOpen(String pushName, String pushDate) {
Mindbox.instance.executeAsyncOperation(
operationSystemName: "mobileapp.NCPushOpen",
operationBody: getPushOpenOperationBody(pushName, pushDate));
}
static getSDKVersion(Function complition) {
Mindbox.instance.nativeSdkVersion.then((value) {
complition(value);
});
}
static getToken(Function complition) {
Mindbox.instance.getToken((value) {
complition(value);
});
}
static getDeviceUUID(Function complition) {
Mindbox.instance.getDeviceUUID((value) {
print(value);
complition(value);
});
}
static Future<void> requestPermissions() async {
var status = await Permission.notification.status;
if (!status.isGranted) {
status = await Permission.notification.request();
print("Permission status: $status");
Mindbox.instance.refreshNotificationPermissionStatus();
}
}
//https://developers.mindbox.ru/docs/in-app
static chooseInAppCallback(ChooseInappCallback chooseInappCallback) {
switch (chooseInappCallback) {
case ChooseInappCallback.defaultInAppCallback:
break;
case ChooseInappCallback.customInAppCallback:
Mindbox.instance.registerInAppCallback(callbacks: [
CustomInAppCallback((id, redirectUrl, payload) {
print("On click");
print(id);
print(redirectUrl);
print(payload);
}, (id) {
print("On close");
print(id);
})
]);
case ChooseInappCallback.urlInAppCallback:
Mindbox.instance.registerInAppCallback(callbacks: [UrlInAppCallback()]);
case ChooseInappCallback.copyPayloadInAppCallback:
Mindbox.instance
.registerInAppCallback(callbacks: [CopyPayloadInAppCallback()]);
case ChooseInappCallback.emptyInAppCallback:
Mindbox.instance
.registerInAppCallback(callbacks: [EmptyInAppCallback()]);
}
}
static Map<String, dynamic> getPushOpenOperationBody(
String pushName, String pushDate) {
return {
"data": {
"customerAction": {
"customFields": {
"mobPushSendDateTime": pushDate,
"mobPushTranslateName": pushName
}
}
}
};
}
}
enum ChooseInappCallback {
defaultInAppCallback,
customInAppCallback,
urlInAppCallback,
emptyInAppCallback,
copyPayloadInAppCallback,
}