@convep_mobilogy/react-native-qms-plugin 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/build.gradle +1 -1
- package/ios/QmsPlugin/QmsDashboardViewManager.mm +21 -0
- package/ios/QmsPlugin/UIViewController+QmsAnalytics.m +3 -1
- package/ios/QmsPluginFramework.xcframework/Info.plist +5 -5
- package/ios/QmsPluginFramework.xcframework/ios-arm64/QmsPluginFramework.framework/Assets.car +0 -0
- package/ios/QmsPluginFramework.xcframework/ios-arm64/QmsPluginFramework.framework/QmsPluginFramework +0 -0
- package/ios/QmsPluginFramework.xcframework/ios-arm64/QmsPluginFramework.framework/_CodeSignature/CodeResources +4 -4
- package/ios/QmsPluginFramework.xcframework/ios-arm64/QmsPluginFramework.framework/en.json +4 -4
- package/ios/QmsPluginFramework.xcframework/ios-arm64_x86_64-simulator/QmsPluginFramework.framework/Assets.car +0 -0
- package/ios/QmsPluginFramework.xcframework/ios-arm64_x86_64-simulator/QmsPluginFramework.framework/QmsPluginFramework +0 -0
- package/ios/QmsPluginFramework.xcframework/ios-arm64_x86_64-simulator/QmsPluginFramework.framework/_CodeSignature/CodeResources +4 -4
- package/ios/QmsPluginFramework.xcframework/ios-arm64_x86_64-simulator/QmsPluginFramework.framework/en.json +4 -4
- package/lib/module/QmsDashboardView.android.js +6 -0
- package/lib/module/QmsDashboardView.android.js.map +1 -1
- package/lib/module/QmsDashboardView.ios.js +6 -2
- package/lib/module/QmsDashboardView.ios.js.map +1 -1
- package/lib/module/analyticsUtils.js +30 -0
- package/lib/module/analyticsUtils.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/src/QmsDashboardView.android.d.ts.map +1 -1
- package/lib/typescript/src/QmsDashboardView.ios.d.ts.map +1 -1
- package/lib/typescript/src/QmsDashboardView.types.d.ts +13 -0
- package/lib/typescript/src/QmsDashboardView.types.d.ts.map +1 -1
- package/lib/typescript/src/analyticsUtils.d.ts +31 -0
- package/lib/typescript/src/analyticsUtils.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +1 -1
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/QmsDashboardView.android.tsx +15 -1
- package/src/QmsDashboardView.ios.tsx +15 -3
- package/src/QmsDashboardView.types.ts +14 -0
- package/src/analyticsUtils.ts +64 -0
- package/src/index.tsx +4 -1
package/android/build.gradle
CHANGED
|
@@ -75,7 +75,7 @@ dependencies {
|
|
|
75
75
|
implementation "com.facebook.react:react-android"
|
|
76
76
|
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
|
77
77
|
implementation 'com.facebook.react:react-native:+'
|
|
78
|
-
implementation "com.convep.qms:qms-plugin:1.
|
|
78
|
+
implementation "com.convep.qms:qms-plugin:1.19.0"
|
|
79
79
|
|
|
80
80
|
implementation 'androidx.appcompat:appcompat:1.6.1'
|
|
81
81
|
|
|
@@ -27,6 +27,7 @@ static NSString * const kQmsRoutePayloadNotification = @"QmsRoutePayloadNotifica
|
|
|
27
27
|
|
|
28
28
|
@property (nonatomic, copy) RCTDirectEventBlock onClose;
|
|
29
29
|
@property (nonatomic, copy) RCTDirectEventBlock onLogout;
|
|
30
|
+
@property (nonatomic, copy) RCTDirectEventBlock onActiveAccountChange;
|
|
30
31
|
@property (nonatomic, copy) RCTDirectEventBlock onAnalyticsScreen;
|
|
31
32
|
@property (nonatomic, copy) RCTDirectEventBlock onAnalyticsEvent;
|
|
32
33
|
@end
|
|
@@ -84,6 +85,10 @@ static NSString * const kQmsRoutePayloadNotification = @"QmsRoutePayloadNotifica
|
|
|
84
85
|
selector:@selector(handleDashboardLogout:)
|
|
85
86
|
name:@"QmsDashboardDidLogoutNotification"
|
|
86
87
|
object:nil];
|
|
88
|
+
[[NSNotificationCenter defaultCenter] addObserver:self
|
|
89
|
+
selector:@selector(handleActiveAccountChange:)
|
|
90
|
+
name:@"QmsActiveAccountDidChangeNotification"
|
|
91
|
+
object:nil];
|
|
87
92
|
[[NSNotificationCenter defaultCenter] addObserver:self
|
|
88
93
|
selector:@selector(handleRoutePayloadNotification:)
|
|
89
94
|
name:kQmsRoutePayloadNotification
|
|
@@ -145,6 +150,12 @@ static NSString * const kQmsRoutePayloadNotification = @"QmsRoutePayloadNotifica
|
|
|
145
150
|
}
|
|
146
151
|
}
|
|
147
152
|
|
|
153
|
+
- (void)handleActiveAccountChange:(NSNotification *)note {
|
|
154
|
+
if (self.onActiveAccountChange) {
|
|
155
|
+
self.onActiveAccountChange(note.userInfo ?: @{});
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
148
159
|
- (void)cleanupDashboard {
|
|
149
160
|
if (!_dashboardVC) return;
|
|
150
161
|
|
|
@@ -627,6 +638,7 @@ RCT_EXPORT_VIEW_PROPERTY(fontFamily, NSString)
|
|
|
627
638
|
RCT_EXPORT_VIEW_PROPERTY(isOrigin, BOOL)
|
|
628
639
|
RCT_EXPORT_VIEW_PROPERTY(payload, NSDictionary)
|
|
629
640
|
RCT_EXPORT_VIEW_PROPERTY(onLogout, RCTDirectEventBlock)
|
|
641
|
+
RCT_EXPORT_VIEW_PROPERTY(onActiveAccountChange, RCTDirectEventBlock)
|
|
630
642
|
RCT_EXPORT_VIEW_PROPERTY(onAnalyticsScreen, RCTDirectEventBlock)
|
|
631
643
|
RCT_EXPORT_VIEW_PROPERTY(onAnalyticsEvent, RCTDirectEventBlock)
|
|
632
644
|
|
|
@@ -670,6 +682,10 @@ RCT_EXPORT_MODULE();
|
|
|
670
682
|
selector:@selector(handleDashboardLogout:)
|
|
671
683
|
name:@"QmsDashboardDidLogoutNotification"
|
|
672
684
|
object:nil];
|
|
685
|
+
[[NSNotificationCenter defaultCenter] addObserver:self
|
|
686
|
+
selector:@selector(handleActiveAccountChangeEmitter:)
|
|
687
|
+
name:@"QmsActiveAccountDidChangeNotification"
|
|
688
|
+
object:nil];
|
|
673
689
|
}
|
|
674
690
|
return self;
|
|
675
691
|
}
|
|
@@ -678,6 +694,7 @@ RCT_EXPORT_MODULE();
|
|
|
678
694
|
return @[
|
|
679
695
|
@"onClose",
|
|
680
696
|
@"onLogout",
|
|
697
|
+
@"onActiveAccountChange",
|
|
681
698
|
@"onAnalyticsScreen",
|
|
682
699
|
@"onAnalyticsEvent",
|
|
683
700
|
@"QmsSdkOnAnalyticsScreen",
|
|
@@ -704,6 +721,10 @@ RCT_EXPORT_MODULE();
|
|
|
704
721
|
[self sendEventWithName:@"onLogout" body:note.userInfo];
|
|
705
722
|
}
|
|
706
723
|
|
|
724
|
+
- (void)handleActiveAccountChangeEmitter:(NSNotification *)note {
|
|
725
|
+
[self sendEventWithName:@"onActiveAccountChange" body:note.userInfo];
|
|
726
|
+
}
|
|
727
|
+
|
|
707
728
|
- (void)dealloc {
|
|
708
729
|
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
|
709
730
|
}
|
|
@@ -230,7 +230,9 @@ static void qms_swizzleInstanceMethod(Class cls, SEL originalSelector, SEL swizz
|
|
|
230
230
|
|
|
231
231
|
- (void)qms_applyPrimaryRecursively:(UIView *)view themeColor:(UIColor *)themeColor {
|
|
232
232
|
if (!view || !themeColor) return;
|
|
233
|
-
|
|
233
|
+
BOOL skipSemanticStatusPill = (view.tag == 500 &&
|
|
234
|
+
[NSStringFromClass([self class]) isEqualToString:@"AppointmentDetailsViewController"]);
|
|
235
|
+
if (!skipSemanticStatusPill && [self qms_isDefaultPrimaryColor:view.backgroundColor]) {
|
|
234
236
|
view.backgroundColor = themeColor;
|
|
235
237
|
}
|
|
236
238
|
for (UIView *subview in view.subviews) {
|
|
@@ -8,32 +8,32 @@
|
|
|
8
8
|
<key>BinaryPath</key>
|
|
9
9
|
<string>QmsPluginFramework.framework/QmsPluginFramework</string>
|
|
10
10
|
<key>LibraryIdentifier</key>
|
|
11
|
-
<string>ios-
|
|
11
|
+
<string>ios-arm64</string>
|
|
12
12
|
<key>LibraryPath</key>
|
|
13
13
|
<string>QmsPluginFramework.framework</string>
|
|
14
14
|
<key>SupportedArchitectures</key>
|
|
15
15
|
<array>
|
|
16
16
|
<string>arm64</string>
|
|
17
|
-
<string>x86_64</string>
|
|
18
17
|
</array>
|
|
19
18
|
<key>SupportedPlatform</key>
|
|
20
19
|
<string>ios</string>
|
|
21
|
-
<key>SupportedPlatformVariant</key>
|
|
22
|
-
<string>simulator</string>
|
|
23
20
|
</dict>
|
|
24
21
|
<dict>
|
|
25
22
|
<key>BinaryPath</key>
|
|
26
23
|
<string>QmsPluginFramework.framework/QmsPluginFramework</string>
|
|
27
24
|
<key>LibraryIdentifier</key>
|
|
28
|
-
<string>ios-
|
|
25
|
+
<string>ios-arm64_x86_64-simulator</string>
|
|
29
26
|
<key>LibraryPath</key>
|
|
30
27
|
<string>QmsPluginFramework.framework</string>
|
|
31
28
|
<key>SupportedArchitectures</key>
|
|
32
29
|
<array>
|
|
33
30
|
<string>arm64</string>
|
|
31
|
+
<string>x86_64</string>
|
|
34
32
|
</array>
|
|
35
33
|
<key>SupportedPlatform</key>
|
|
36
34
|
<string>ios</string>
|
|
35
|
+
<key>SupportedPlatformVariant</key>
|
|
36
|
+
<string>simulator</string>
|
|
37
37
|
</dict>
|
|
38
38
|
</array>
|
|
39
39
|
<key>CFBundlePackageType</key>
|
package/ios/QmsPluginFramework.xcframework/ios-arm64/QmsPluginFramework.framework/Assets.car
CHANGED
|
Binary file
|
package/ios/QmsPluginFramework.xcframework/ios-arm64/QmsPluginFramework.framework/QmsPluginFramework
CHANGED
|
Binary file
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
<dict>
|
|
7
7
|
<key>Assets.car</key>
|
|
8
8
|
<data>
|
|
9
|
-
|
|
9
|
+
OFNSvB3amYHYvcSdVpA4/9zqjGI=
|
|
10
10
|
</data>
|
|
11
11
|
<key>Headers/QmsPlugin.h</key>
|
|
12
12
|
<data>
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
</data>
|
|
47
47
|
<key>en.json</key>
|
|
48
48
|
<data>
|
|
49
|
-
|
|
49
|
+
4Tqlnsl9cvRAJ3mMAQNj1MokMPA=
|
|
50
50
|
</data>
|
|
51
51
|
</dict>
|
|
52
52
|
<key>files2</key>
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
<dict>
|
|
56
56
|
<key>hash2</key>
|
|
57
57
|
<data>
|
|
58
|
-
|
|
58
|
+
gi1+dFKH/mzhWhHXI7FnH1u9DFI1VBn0+nH5FFy2cQk=
|
|
59
59
|
</data>
|
|
60
60
|
</dict>
|
|
61
61
|
<key>Headers/QmsPlugin.h</key>
|
|
@@ -118,7 +118,7 @@
|
|
|
118
118
|
<dict>
|
|
119
119
|
<key>hash2</key>
|
|
120
120
|
<data>
|
|
121
|
-
|
|
121
|
+
3gHzwkpXeTuAPWs/zdPLAma6GZdL51xbjVc4VR+WSrk=
|
|
122
122
|
</data>
|
|
123
123
|
</dict>
|
|
124
124
|
</dict>
|
|
@@ -232,7 +232,7 @@
|
|
|
232
232
|
"BY_CATEGORY": "By Category",
|
|
233
233
|
"BY_CONTRACTOR": "By Contractor",
|
|
234
234
|
"DESELECT_ALL": "Deselect All",
|
|
235
|
-
"SELECT_ALL": "Select All
|
|
235
|
+
"SELECT_ALL": "Select All",
|
|
236
236
|
"SEARCH_LABEL1": "Search Issues",
|
|
237
237
|
"REJECTED": "Rejected",
|
|
238
238
|
"TAKE_PHOTO": "Take Photo",
|
|
@@ -447,7 +447,7 @@
|
|
|
447
447
|
"REJECTS": "Reject",
|
|
448
448
|
"PHOTO_UPLOAD": "Photo Upload",
|
|
449
449
|
"STORAGE_PERMISSION_MESSAGE": "Storage permission required to access this function",
|
|
450
|
-
"SELECT_ISSUE": "
|
|
450
|
+
"SELECT_ISSUE": "Select Issue",
|
|
451
451
|
"VIEW_SUMMARY": "View Summary",
|
|
452
452
|
"SIGN_OFF_": "Sign Off",
|
|
453
453
|
"CANCEL_POA_MESSAGE": "Cancel pending owner acceptance sign off?",
|
|
@@ -775,8 +775,8 @@
|
|
|
775
775
|
"TUTORIAL_LINKSUB2": "The link created and shared by you will allow your authorised person to view the submitted issues.",
|
|
776
776
|
"TUTORIAL_LINKTITLE3": "Change link access at your convenience",
|
|
777
777
|
"TUTORIAL_LINKSUB3": "Toggle to switch link access when you no longer need the authorised person’s assistance.",
|
|
778
|
-
"HANDOVER_SURVEY": "
|
|
778
|
+
"HANDOVER_SURVEY": "Customer Satisfaction Survey",
|
|
779
779
|
"EMPTY_SURVEY": "Please fill up the required fields in this survey before submitting.",
|
|
780
780
|
"CONFIRM_SUBMIT_SURVEY": "Confirm to submit survey ?",
|
|
781
|
-
"ALERT_MESSAGE_ISSUE_SURVEY": "Please complete the survey before submitting an issue."
|
|
781
|
+
"ALERT_MESSAGE_ISSUE_SURVEY": "Please complete the customer satisfaction survey before submitting an issue."
|
|
782
782
|
}
|
|
Binary file
|
|
Binary file
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
<dict>
|
|
7
7
|
<key>Assets.car</key>
|
|
8
8
|
<data>
|
|
9
|
-
|
|
9
|
+
OFNSvB3amYHYvcSdVpA4/9zqjGI=
|
|
10
10
|
</data>
|
|
11
11
|
<key>Headers/QmsPlugin.h</key>
|
|
12
12
|
<data>
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
</data>
|
|
47
47
|
<key>en.json</key>
|
|
48
48
|
<data>
|
|
49
|
-
|
|
49
|
+
4Tqlnsl9cvRAJ3mMAQNj1MokMPA=
|
|
50
50
|
</data>
|
|
51
51
|
</dict>
|
|
52
52
|
<key>files2</key>
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
<dict>
|
|
56
56
|
<key>hash2</key>
|
|
57
57
|
<data>
|
|
58
|
-
|
|
58
|
+
gi1+dFKH/mzhWhHXI7FnH1u9DFI1VBn0+nH5FFy2cQk=
|
|
59
59
|
</data>
|
|
60
60
|
</dict>
|
|
61
61
|
<key>Headers/QmsPlugin.h</key>
|
|
@@ -118,7 +118,7 @@
|
|
|
118
118
|
<dict>
|
|
119
119
|
<key>hash2</key>
|
|
120
120
|
<data>
|
|
121
|
-
|
|
121
|
+
3gHzwkpXeTuAPWs/zdPLAma6GZdL51xbjVc4VR+WSrk=
|
|
122
122
|
</data>
|
|
123
123
|
</dict>
|
|
124
124
|
</dict>
|
|
@@ -232,7 +232,7 @@
|
|
|
232
232
|
"BY_CATEGORY": "By Category",
|
|
233
233
|
"BY_CONTRACTOR": "By Contractor",
|
|
234
234
|
"DESELECT_ALL": "Deselect All",
|
|
235
|
-
"SELECT_ALL": "Select All
|
|
235
|
+
"SELECT_ALL": "Select All",
|
|
236
236
|
"SEARCH_LABEL1": "Search Issues",
|
|
237
237
|
"REJECTED": "Rejected",
|
|
238
238
|
"TAKE_PHOTO": "Take Photo",
|
|
@@ -447,7 +447,7 @@
|
|
|
447
447
|
"REJECTS": "Reject",
|
|
448
448
|
"PHOTO_UPLOAD": "Photo Upload",
|
|
449
449
|
"STORAGE_PERMISSION_MESSAGE": "Storage permission required to access this function",
|
|
450
|
-
"SELECT_ISSUE": "
|
|
450
|
+
"SELECT_ISSUE": "Select Issue",
|
|
451
451
|
"VIEW_SUMMARY": "View Summary",
|
|
452
452
|
"SIGN_OFF_": "Sign Off",
|
|
453
453
|
"CANCEL_POA_MESSAGE": "Cancel pending owner acceptance sign off?",
|
|
@@ -775,8 +775,8 @@
|
|
|
775
775
|
"TUTORIAL_LINKSUB2": "The link created and shared by you will allow your authorised person to view the submitted issues.",
|
|
776
776
|
"TUTORIAL_LINKTITLE3": "Change link access at your convenience",
|
|
777
777
|
"TUTORIAL_LINKSUB3": "Toggle to switch link access when you no longer need the authorised person’s assistance.",
|
|
778
|
-
"HANDOVER_SURVEY": "
|
|
778
|
+
"HANDOVER_SURVEY": "Customer Satisfaction Survey",
|
|
779
779
|
"EMPTY_SURVEY": "Please fill up the required fields in this survey before submitting.",
|
|
780
780
|
"CONFIRM_SUBMIT_SURVEY": "Confirm to submit survey ?",
|
|
781
|
-
"ALERT_MESSAGE_ISSUE_SURVEY": "Please complete the survey before submitting an issue."
|
|
781
|
+
"ALERT_MESSAGE_ISSUE_SURVEY": "Please complete the customer satisfaction survey before submitting an issue."
|
|
782
782
|
}
|
|
@@ -10,6 +10,7 @@ export const QmsDashboardView = ({
|
|
|
10
10
|
style,
|
|
11
11
|
onClose,
|
|
12
12
|
onLogout,
|
|
13
|
+
onActiveAccountChange,
|
|
13
14
|
onAnalyticsScreen,
|
|
14
15
|
onAnalyticsEvent,
|
|
15
16
|
onLocate,
|
|
@@ -90,6 +91,11 @@ export const QmsDashboardView = ({
|
|
|
90
91
|
const subscription = DeviceEventEmitter.addListener('QmsSdkOnLogout', () => onLogout());
|
|
91
92
|
return () => subscription.remove();
|
|
92
93
|
}, [onLogout]);
|
|
94
|
+
useEffect(() => {
|
|
95
|
+
if (!onActiveAccountChange) return;
|
|
96
|
+
const subscription = DeviceEventEmitter.addListener('QmsSdkOnActiveAccountChange', payload => onActiveAccountChange(payload ?? {}));
|
|
97
|
+
return () => subscription.remove();
|
|
98
|
+
}, [onActiveAccountChange]);
|
|
93
99
|
useEffect(() => {
|
|
94
100
|
if (!onAnalyticsScreen) return;
|
|
95
101
|
const subscription = DeviceEventEmitter.addListener('QmsSdkOnAnalyticsScreen', event => onAnalyticsScreen(event?.screenName, event?.screenClass));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","DeviceEventEmitter","NativeModules","View","jsx","_jsx","QmsModule","QmsDashboardView","style","onClose","onLogout","onAnalyticsScreen","onAnalyticsEvent","onLocate","clientID","clientCode","ClientID","ClientCode","user_token","token","userToken","autoShow","themeColor","headerThemeColor","headerTextColor","headerIconColor","accentColor","fontFamily","isOrigin","payload","resolvedClientID","resolvedClientCode","resolvedToken","hasPayload","Object","keys","length","showQms","setPrimaryColor","resolvedHeaderColor","setHeaderTextColor","resolvedHeaderIconColor","setHeaderIconColor","setAccentColor","setFontFamily","showQmsWithPayload","subscription","addListener","remove","event","screenName","screenClass","eventName","params","lat","lng"],"sourceRoot":"../../src","sources":["QmsDashboardView.android.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,SAAS,QAAQ,OAAO;AACxC,SAASC,kBAAkB,EAAEC,aAAa,EAAEC,IAAI,QAAQ,cAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA;
|
|
1
|
+
{"version":3,"names":["React","useEffect","DeviceEventEmitter","NativeModules","View","jsx","_jsx","QmsModule","QmsDashboardView","style","onClose","onLogout","onActiveAccountChange","onAnalyticsScreen","onAnalyticsEvent","onLocate","clientID","clientCode","ClientID","ClientCode","user_token","token","userToken","autoShow","themeColor","headerThemeColor","headerTextColor","headerIconColor","accentColor","fontFamily","isOrigin","payload","resolvedClientID","resolvedClientCode","resolvedToken","hasPayload","Object","keys","length","showQms","setPrimaryColor","resolvedHeaderColor","setHeaderTextColor","resolvedHeaderIconColor","setHeaderIconColor","setAccentColor","setFontFamily","showQmsWithPayload","subscription","addListener","remove","event","screenName","screenClass","eventName","params","lat","lng"],"sourceRoot":"../../src","sources":["QmsDashboardView.android.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -11,6 +11,7 @@ export const QmsDashboardView = props => {
|
|
|
11
11
|
const {
|
|
12
12
|
onClose,
|
|
13
13
|
onLogout,
|
|
14
|
+
onActiveAccountChange,
|
|
14
15
|
onAnalyticsScreen,
|
|
15
16
|
onAnalyticsEvent,
|
|
16
17
|
clientID,
|
|
@@ -45,7 +46,7 @@ export const QmsDashboardView = props => {
|
|
|
45
46
|
module?.setFontFamily?.(fontFamily ?? '');
|
|
46
47
|
}, [themeColor, resolvedHeaderColor, resolvedHeaderIconColor, accentColor, fontFamily]);
|
|
47
48
|
useEffect(() => {
|
|
48
|
-
if (!onClose && !onLogout) return;
|
|
49
|
+
if (!onClose && !onLogout && !onActiveAccountChange) return;
|
|
49
50
|
const nativeEmitterModule = NativeModules.QmsDashboardEmitter;
|
|
50
51
|
if (!nativeEmitterModule) return;
|
|
51
52
|
const emitter = new NativeEventEmitter(nativeEmitterModule);
|
|
@@ -56,8 +57,11 @@ export const QmsDashboardView = props => {
|
|
|
56
57
|
if (onLogout) {
|
|
57
58
|
subscriptions.push(emitter.addListener('onLogout', onLogout));
|
|
58
59
|
}
|
|
60
|
+
if (onActiveAccountChange) {
|
|
61
|
+
subscriptions.push(emitter.addListener('onActiveAccountChange', raw => onActiveAccountChange(raw ?? {})));
|
|
62
|
+
}
|
|
59
63
|
return () => subscriptions.forEach(sub => sub.remove());
|
|
60
|
-
}, [onClose, onLogout]);
|
|
64
|
+
}, [onClose, onLogout, onActiveAccountChange]);
|
|
61
65
|
useEffect(() => {
|
|
62
66
|
if (!onAnalyticsScreen) return;
|
|
63
67
|
const subscription = DeviceEventEmitter.addListener('QmsSdkOnAnalyticsScreen', payload => onAnalyticsScreen(payload?.screenName, payload?.screenClass));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","DeviceEventEmitter","NativeEventEmitter","NativeModules","requireNativeComponent","jsx","_jsx","NativeQmsDashboardView","QmsDashboardView","props","onClose","onLogout","onAnalyticsScreen","onAnalyticsEvent","clientID","clientCode","ClientID","ClientCode","user_token","userToken","token","isOrigin","themeColor","headerThemeColor","headerTextColor","headerIconColor","accentColor","fontFamily","payload","rest","resolvedClientID","resolvedClientCode","resolvedToken","resolvedHeaderColor","resolvedHeaderIconColor","module","QmsModule","setPrimaryColor","setHeaderTextColor","setHeaderIconColor","setAccentColor","setFontFamily","nativeEmitterModule","QmsDashboardEmitter","emitter","subscriptions","push","addListener","forEach","sub","remove","subscription","screenName","screenClass","eventName","params"],"sourceRoot":"../../src","sources":["QmsDashboardView.ios.tsx"],"mappings":";;AAAA;;AAEA,OAAOA,KAAK,IAAIC,SAAS,QAAQ,OAAO;AACxC,SACEC,kBAAkB,EAClBC,kBAAkB,EAClBC,aAAa,EACbC,sBAAsB,QACjB,cAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA;
|
|
1
|
+
{"version":3,"names":["React","useEffect","DeviceEventEmitter","NativeEventEmitter","NativeModules","requireNativeComponent","jsx","_jsx","NativeQmsDashboardView","QmsDashboardView","props","onClose","onLogout","onActiveAccountChange","onAnalyticsScreen","onAnalyticsEvent","clientID","clientCode","ClientID","ClientCode","user_token","userToken","token","isOrigin","themeColor","headerThemeColor","headerTextColor","headerIconColor","accentColor","fontFamily","payload","rest","resolvedClientID","resolvedClientCode","resolvedToken","resolvedHeaderColor","resolvedHeaderIconColor","module","QmsModule","setPrimaryColor","setHeaderTextColor","setHeaderIconColor","setAccentColor","setFontFamily","nativeEmitterModule","QmsDashboardEmitter","emitter","subscriptions","push","addListener","raw","forEach","sub","remove","subscription","screenName","screenClass","eventName","params"],"sourceRoot":"../../src","sources":["QmsDashboardView.ios.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -18,4 +18,34 @@ export function toFirebaseEventName(raw) {
|
|
|
18
18
|
.replace(/^_+|_+$/g, '') // strip leading/trailing underscores
|
|
19
19
|
.slice(0, 40); // Firebase max 40 chars
|
|
20
20
|
}
|
|
21
|
+
|
|
22
|
+
// ---------------------------------------------------------------------------
|
|
23
|
+
// Structured analytics event types
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Flattens a structured QmsEventParams into Firebase-compatible key-value params.
|
|
28
|
+
* Firebase logEvent only supports flat string/number values.
|
|
29
|
+
*
|
|
30
|
+
* Usage with @react-native-firebase/analytics:
|
|
31
|
+
* analytics().logEvent(
|
|
32
|
+
* toFirebaseEventName(eventName),
|
|
33
|
+
* toFirebaseParams(params as QmsEventParams)
|
|
34
|
+
* );
|
|
35
|
+
*/
|
|
36
|
+
export function toFirebaseParams(params) {
|
|
37
|
+
return {
|
|
38
|
+
user_name: params.user?.name ?? '',
|
|
39
|
+
user_email: params.user?.email ?? '',
|
|
40
|
+
unit_project: params.unit?.project ?? '',
|
|
41
|
+
unit_no: params.unit?.unit_no ?? '',
|
|
42
|
+
lot_no: params.unit?.lot_no ?? '',
|
|
43
|
+
action_name: params.action?.name ?? '',
|
|
44
|
+
action_type: params.action?.type ?? '',
|
|
45
|
+
action_clicked: params.action?.clicked ?? '',
|
|
46
|
+
action_from: params.action?.from ?? '',
|
|
47
|
+
action_to: params.action?.to ?? '',
|
|
48
|
+
created_at: params.created_at ?? ''
|
|
49
|
+
};
|
|
50
|
+
}
|
|
21
51
|
//# sourceMappingURL=analyticsUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["toFirebaseEventName","raw","trim","toLowerCase","replace","slice"],"sourceRoot":"../../src","sources":["analyticsUtils.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,mBAAmBA,CAACC,GAA8B,EAAU;EAC1E,IAAI,CAACA,GAAG,EAAE,OAAO,EAAE;EAEnB,OAAOA,GAAG,CACPC,IAAI,CAAC,CAAC,CACNC,WAAW,CAAC,CAAC,CACbC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;EAAA,CAC5BA,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAK;EAAA,CAC5BC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAe;AACjC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["toFirebaseEventName","raw","trim","toLowerCase","replace","slice","toFirebaseParams","params","user_name","user","name","user_email","email","unit_project","unit","project","unit_no","lot_no","action_name","action","action_type","type","action_clicked","clicked","action_from","from","action_to","to","created_at"],"sourceRoot":"../../src","sources":["analyticsUtils.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,mBAAmBA,CAACC,GAA8B,EAAU;EAC1E,IAAI,CAACA,GAAG,EAAE,OAAO,EAAE;EAEnB,OAAOA,GAAG,CACPC,IAAI,CAAC,CAAC,CACNC,WAAW,CAAC,CAAC,CACbC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;EAAA,CAC5BA,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAK;EAAA,CAC5BC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAe;AACjC;;AAEA;AACA;AACA;;AAkCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,gBAAgBA,CAC9BC,MAAsB,EACE;EACxB,OAAO;IACLC,SAAS,EAAOD,MAAM,CAACE,IAAI,EAAEC,IAAI,IAAQ,EAAE;IAC3CC,UAAU,EAAMJ,MAAM,CAACE,IAAI,EAAEG,KAAK,IAAO,EAAE;IAC3CC,YAAY,EAAIN,MAAM,CAACO,IAAI,EAAEC,OAAO,IAAK,EAAE;IAC3CC,OAAO,EAAST,MAAM,CAACO,IAAI,EAAEE,OAAO,IAAK,EAAE;IAC3CC,MAAM,EAAUV,MAAM,CAACO,IAAI,EAAEG,MAAM,IAAM,EAAE;IAC3CC,WAAW,EAAKX,MAAM,CAACY,MAAM,EAAET,IAAI,IAAM,EAAE;IAC3CU,WAAW,EAAKb,MAAM,CAACY,MAAM,EAAEE,IAAI,IAAM,EAAE;IAC3CC,cAAc,EAAEf,MAAM,CAACY,MAAM,EAAEI,OAAO,IAAI,EAAE;IAC5CC,WAAW,EAAKjB,MAAM,CAACY,MAAM,EAAEM,IAAI,IAAM,EAAE;IAC3CC,SAAS,EAAOnB,MAAM,CAACY,MAAM,EAAEQ,EAAE,IAAQ,EAAE;IAC3CC,UAAU,EAAMrB,MAAM,CAACqB,UAAU,IAAQ;EAC3C,CAAC;AACH","ignoreList":[]}
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["QmsDashboardView","QmsPlugin"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,gBAAgB,QAAQ,uBAAoB;
|
|
1
|
+
{"version":3,"names":["QmsDashboardView","QmsPlugin"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,gBAAgB,QAAQ,uBAAoB;AAKrD,SAASC,SAAS,QAAQ,gBAAa","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QmsDashboardView.android.d.ts","sourceRoot":"","sources":["../../../src/QmsDashboardView.android.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAEzC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"QmsDashboardView.android.d.ts","sourceRoot":"","sources":["../../../src/QmsDashboardView.android.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAEzC,OAAO,KAAK,EAEV,qBAAqB,EACtB,MAAM,0BAA0B,CAAC;AAyBlC,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CA0K5D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QmsDashboardView.ios.d.ts","sourceRoot":"","sources":["../../../src/QmsDashboardView.ios.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAOzC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"QmsDashboardView.ios.d.ts","sourceRoot":"","sources":["../../../src/QmsDashboardView.ios.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAOzC,OAAO,KAAK,EAEV,qBAAqB,EACtB,MAAM,0BAA0B,CAAC;AAMlC,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAkH5D,CAAC"}
|
|
@@ -1,8 +1,21 @@
|
|
|
1
1
|
import type { StyleProp, ViewStyle } from 'react-native';
|
|
2
|
+
/** Payload from native when the xcframework active session identity changes (switch account, logout with fallback, etc.). */
|
|
3
|
+
export type QmsActiveAccountPayload = {
|
|
4
|
+
hasActiveAccount?: boolean;
|
|
5
|
+
storedAccountCount?: number;
|
|
6
|
+
clientID?: string;
|
|
7
|
+
clientCode?: string;
|
|
8
|
+
userToken?: string;
|
|
9
|
+
userName?: string;
|
|
10
|
+
company?: string;
|
|
11
|
+
name?: string;
|
|
12
|
+
};
|
|
2
13
|
export type QmsDashboardViewProps = {
|
|
3
14
|
style?: StyleProp<ViewStyle>;
|
|
4
15
|
onClose?: (event?: unknown) => void;
|
|
5
16
|
onLogout?: (event?: unknown) => void;
|
|
17
|
+
/** Called when native multi-account state changes; persist with {@link QmsActiveAccountPayload} for RN login storage. */
|
|
18
|
+
onActiveAccountChange?: (payload: QmsActiveAccountPayload) => void;
|
|
6
19
|
onAnalyticsScreen?: (screenName?: string, screenClass?: string) => void;
|
|
7
20
|
onAnalyticsEvent?: (eventName?: string, params?: Record<string, unknown> | null) => void;
|
|
8
21
|
onLocate?: (lat?: string, lng?: string) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QmsDashboardView.types.d.ts","sourceRoot":"","sources":["../../../src/QmsDashboardView.types.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACpC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,iBAAiB,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACxE,gBAAgB,CAAC,EAAE,CACjB,SAAS,CAAC,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,KACpC,IAAI,CAAC;IACV,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC1C,CAAC"}
|
|
1
|
+
{"version":3,"file":"QmsDashboardView.types.d.ts","sourceRoot":"","sources":["../../../src/QmsDashboardView.types.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD,6HAA6H;AAC7H,MAAM,MAAM,uBAAuB,GAAG;IACpC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACpC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,yHAAyH;IACzH,qBAAqB,CAAC,EAAE,CAAC,OAAO,EAAE,uBAAuB,KAAK,IAAI,CAAC;IACnE,iBAAiB,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACxE,gBAAgB,CAAC,EAAE,CACjB,SAAS,CAAC,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,KACpC,IAAI,CAAC;IACV,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC1C,CAAC"}
|
|
@@ -11,4 +11,35 @@
|
|
|
11
11
|
* "ScreenAt" → "screenat"
|
|
12
12
|
*/
|
|
13
13
|
export declare function toFirebaseEventName(raw: string | undefined | null): string;
|
|
14
|
+
export type QmsActionType = 'navigation' | 'view' | 'select' | 'submit' | 'edit' | 'update' | 'delete' | 'back' | 'refresh' | 'create';
|
|
15
|
+
export type QmsEventParams = {
|
|
16
|
+
user: {
|
|
17
|
+
name: string;
|
|
18
|
+
email: string;
|
|
19
|
+
};
|
|
20
|
+
unit: {
|
|
21
|
+
project: string;
|
|
22
|
+
unit_no: string;
|
|
23
|
+
lot_no: string;
|
|
24
|
+
};
|
|
25
|
+
action: {
|
|
26
|
+
name: string;
|
|
27
|
+
type: QmsActionType;
|
|
28
|
+
clicked: string;
|
|
29
|
+
from: string;
|
|
30
|
+
to: string;
|
|
31
|
+
};
|
|
32
|
+
created_at: string;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Flattens a structured QmsEventParams into Firebase-compatible key-value params.
|
|
36
|
+
* Firebase logEvent only supports flat string/number values.
|
|
37
|
+
*
|
|
38
|
+
* Usage with @react-native-firebase/analytics:
|
|
39
|
+
* analytics().logEvent(
|
|
40
|
+
* toFirebaseEventName(eventName),
|
|
41
|
+
* toFirebaseParams(params as QmsEventParams)
|
|
42
|
+
* );
|
|
43
|
+
*/
|
|
44
|
+
export declare function toFirebaseParams(params: QmsEventParams): Record<string, string>;
|
|
14
45
|
//# sourceMappingURL=analyticsUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyticsUtils.d.ts","sourceRoot":"","sources":["../../../src/analyticsUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,CAS1E"}
|
|
1
|
+
{"version":3,"file":"analyticsUtils.d.ts","sourceRoot":"","sources":["../../../src/analyticsUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,CAS1E;AAMD,MAAM,MAAM,aAAa,GACrB,YAAY,GACZ,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,SAAS,GACT,QAAQ,CAAC;AAEb,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,IAAI,EAAE;QACJ,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,aAAa,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;KACZ,CAAC;IACF,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,cAAc,GACrB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAcxB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { QmsDashboardView } from './QmsDashboardView';
|
|
2
|
-
export type { QmsDashboardViewProps } from './QmsDashboardView.types';
|
|
2
|
+
export type { QmsActiveAccountPayload, QmsDashboardViewProps, } from './QmsDashboardView.types';
|
|
3
3
|
export { QmsPlugin } from './QmsPlugin';
|
|
4
4
|
export type { InAppNotificationPayload } from './QmsPlugin';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EACV,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import React, { useEffect } from 'react';
|
|
2
2
|
import { DeviceEventEmitter, NativeModules, View } from 'react-native';
|
|
3
|
-
import type {
|
|
3
|
+
import type {
|
|
4
|
+
QmsActiveAccountPayload,
|
|
5
|
+
QmsDashboardViewProps,
|
|
6
|
+
} from './QmsDashboardView.types';
|
|
4
7
|
|
|
5
8
|
const { QmsModule } = NativeModules as {
|
|
6
9
|
QmsModule?: {
|
|
@@ -29,6 +32,7 @@ export const QmsDashboardView: React.FC<QmsDashboardViewProps> = ({
|
|
|
29
32
|
style,
|
|
30
33
|
onClose,
|
|
31
34
|
onLogout,
|
|
35
|
+
onActiveAccountChange,
|
|
32
36
|
onAnalyticsScreen,
|
|
33
37
|
onAnalyticsEvent,
|
|
34
38
|
onLocate,
|
|
@@ -153,6 +157,16 @@ export const QmsDashboardView: React.FC<QmsDashboardViewProps> = ({
|
|
|
153
157
|
return () => subscription.remove();
|
|
154
158
|
}, [onLogout]);
|
|
155
159
|
|
|
160
|
+
useEffect(() => {
|
|
161
|
+
if (!onActiveAccountChange) return;
|
|
162
|
+
const subscription = DeviceEventEmitter.addListener(
|
|
163
|
+
'QmsSdkOnActiveAccountChange',
|
|
164
|
+
(payload?: QmsActiveAccountPayload) =>
|
|
165
|
+
onActiveAccountChange(payload ?? {})
|
|
166
|
+
);
|
|
167
|
+
return () => subscription.remove();
|
|
168
|
+
}, [onActiveAccountChange]);
|
|
169
|
+
|
|
156
170
|
useEffect(() => {
|
|
157
171
|
if (!onAnalyticsScreen) return;
|
|
158
172
|
const subscription = DeviceEventEmitter.addListener(
|
|
@@ -7,7 +7,10 @@ import {
|
|
|
7
7
|
NativeModules,
|
|
8
8
|
requireNativeComponent,
|
|
9
9
|
} from 'react-native';
|
|
10
|
-
import type {
|
|
10
|
+
import type {
|
|
11
|
+
QmsActiveAccountPayload,
|
|
12
|
+
QmsDashboardViewProps,
|
|
13
|
+
} from './QmsDashboardView.types';
|
|
11
14
|
|
|
12
15
|
// Make sure your iOS native view manager is exported as "QmsDashboardView"
|
|
13
16
|
const NativeQmsDashboardView =
|
|
@@ -17,6 +20,7 @@ export const QmsDashboardView: React.FC<QmsDashboardViewProps> = (props) => {
|
|
|
17
20
|
const {
|
|
18
21
|
onClose,
|
|
19
22
|
onLogout,
|
|
23
|
+
onActiveAccountChange,
|
|
20
24
|
onAnalyticsScreen,
|
|
21
25
|
onAnalyticsEvent,
|
|
22
26
|
clientID,
|
|
@@ -69,7 +73,7 @@ export const QmsDashboardView: React.FC<QmsDashboardViewProps> = (props) => {
|
|
|
69
73
|
]);
|
|
70
74
|
|
|
71
75
|
useEffect(() => {
|
|
72
|
-
if (!onClose && !onLogout) return;
|
|
76
|
+
if (!onClose && !onLogout && !onActiveAccountChange) return;
|
|
73
77
|
const nativeEmitterModule = NativeModules.QmsDashboardEmitter;
|
|
74
78
|
if (!nativeEmitterModule) return;
|
|
75
79
|
const emitter = new NativeEventEmitter(nativeEmitterModule);
|
|
@@ -80,8 +84,16 @@ export const QmsDashboardView: React.FC<QmsDashboardViewProps> = (props) => {
|
|
|
80
84
|
if (onLogout) {
|
|
81
85
|
subscriptions.push(emitter.addListener('onLogout', onLogout));
|
|
82
86
|
}
|
|
87
|
+
if (onActiveAccountChange) {
|
|
88
|
+
subscriptions.push(
|
|
89
|
+
emitter.addListener(
|
|
90
|
+
'onActiveAccountChange',
|
|
91
|
+
(raw?: QmsActiveAccountPayload) => onActiveAccountChange(raw ?? {})
|
|
92
|
+
)
|
|
93
|
+
);
|
|
94
|
+
}
|
|
83
95
|
return () => subscriptions.forEach((sub) => sub.remove());
|
|
84
|
-
}, [onClose, onLogout]);
|
|
96
|
+
}, [onClose, onLogout, onActiveAccountChange]);
|
|
85
97
|
|
|
86
98
|
useEffect(() => {
|
|
87
99
|
if (!onAnalyticsScreen) return;
|
|
@@ -2,10 +2,24 @@
|
|
|
2
2
|
|
|
3
3
|
import type { StyleProp, ViewStyle } from 'react-native';
|
|
4
4
|
|
|
5
|
+
/** Payload from native when the xcframework active session identity changes (switch account, logout with fallback, etc.). */
|
|
6
|
+
export type QmsActiveAccountPayload = {
|
|
7
|
+
hasActiveAccount?: boolean;
|
|
8
|
+
storedAccountCount?: number;
|
|
9
|
+
clientID?: string;
|
|
10
|
+
clientCode?: string;
|
|
11
|
+
userToken?: string;
|
|
12
|
+
userName?: string;
|
|
13
|
+
company?: string;
|
|
14
|
+
name?: string;
|
|
15
|
+
};
|
|
16
|
+
|
|
5
17
|
export type QmsDashboardViewProps = {
|
|
6
18
|
style?: StyleProp<ViewStyle>;
|
|
7
19
|
onClose?: (event?: unknown) => void;
|
|
8
20
|
onLogout?: (event?: unknown) => void;
|
|
21
|
+
/** Called when native multi-account state changes; persist with {@link QmsActiveAccountPayload} for RN login storage. */
|
|
22
|
+
onActiveAccountChange?: (payload: QmsActiveAccountPayload) => void;
|
|
9
23
|
onAnalyticsScreen?: (screenName?: string, screenClass?: string) => void;
|
|
10
24
|
onAnalyticsEvent?: (
|
|
11
25
|
eventName?: string,
|
package/src/analyticsUtils.ts
CHANGED
|
@@ -20,3 +20,67 @@ export function toFirebaseEventName(raw: string | undefined | null): string {
|
|
|
20
20
|
.replace(/^_+|_+$/g, '') // strip leading/trailing underscores
|
|
21
21
|
.slice(0, 40); // Firebase max 40 chars
|
|
22
22
|
}
|
|
23
|
+
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
// Structured analytics event types
|
|
26
|
+
// ---------------------------------------------------------------------------
|
|
27
|
+
|
|
28
|
+
export type QmsActionType =
|
|
29
|
+
| 'navigation'
|
|
30
|
+
| 'view'
|
|
31
|
+
| 'select'
|
|
32
|
+
| 'submit'
|
|
33
|
+
| 'edit'
|
|
34
|
+
| 'update'
|
|
35
|
+
| 'delete'
|
|
36
|
+
| 'back'
|
|
37
|
+
| 'refresh'
|
|
38
|
+
| 'create';
|
|
39
|
+
|
|
40
|
+
export type QmsEventParams = {
|
|
41
|
+
user: {
|
|
42
|
+
name: string;
|
|
43
|
+
email: string;
|
|
44
|
+
};
|
|
45
|
+
unit: {
|
|
46
|
+
project: string;
|
|
47
|
+
unit_no: string;
|
|
48
|
+
lot_no: string;
|
|
49
|
+
};
|
|
50
|
+
action: {
|
|
51
|
+
name: string;
|
|
52
|
+
type: QmsActionType;
|
|
53
|
+
clicked: string;
|
|
54
|
+
from: string;
|
|
55
|
+
to: string;
|
|
56
|
+
};
|
|
57
|
+
created_at: string;
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Flattens a structured QmsEventParams into Firebase-compatible key-value params.
|
|
62
|
+
* Firebase logEvent only supports flat string/number values.
|
|
63
|
+
*
|
|
64
|
+
* Usage with @react-native-firebase/analytics:
|
|
65
|
+
* analytics().logEvent(
|
|
66
|
+
* toFirebaseEventName(eventName),
|
|
67
|
+
* toFirebaseParams(params as QmsEventParams)
|
|
68
|
+
* );
|
|
69
|
+
*/
|
|
70
|
+
export function toFirebaseParams(
|
|
71
|
+
params: QmsEventParams
|
|
72
|
+
): Record<string, string> {
|
|
73
|
+
return {
|
|
74
|
+
user_name: params.user?.name ?? '',
|
|
75
|
+
user_email: params.user?.email ?? '',
|
|
76
|
+
unit_project: params.unit?.project ?? '',
|
|
77
|
+
unit_no: params.unit?.unit_no ?? '',
|
|
78
|
+
lot_no: params.unit?.lot_no ?? '',
|
|
79
|
+
action_name: params.action?.name ?? '',
|
|
80
|
+
action_type: params.action?.type ?? '',
|
|
81
|
+
action_clicked: params.action?.clicked ?? '',
|
|
82
|
+
action_from: params.action?.from ?? '',
|
|
83
|
+
action_to: params.action?.to ?? '',
|
|
84
|
+
created_at: params.created_at ?? '',
|
|
85
|
+
};
|
|
86
|
+
}
|
package/src/index.tsx
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
export { QmsDashboardView } from './QmsDashboardView';
|
|
2
|
-
export type {
|
|
2
|
+
export type {
|
|
3
|
+
QmsActiveAccountPayload,
|
|
4
|
+
QmsDashboardViewProps,
|
|
5
|
+
} from './QmsDashboardView.types';
|
|
3
6
|
export { QmsPlugin } from './QmsPlugin';
|
|
4
7
|
export type { InAppNotificationPayload } from './QmsPlugin';
|