@convep_mobilogy/react-native-qms-plugin 0.13.6 → 1.0.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.
Files changed (33) hide show
  1. package/android/build.gradle +1 -1
  2. package/ios/QmsPlugin/QmsDashboardViewManager.mm +30 -2
  3. package/ios/QmsPlugin/UIViewController+QmsAnalytics.m +42 -2
  4. package/ios/QmsPluginFramework.xcframework/Info.plist +5 -5
  5. package/ios/QmsPluginFramework.xcframework/ios-arm64/QmsPluginFramework.framework/Assets.car +0 -0
  6. package/ios/QmsPluginFramework.xcframework/ios-arm64/QmsPluginFramework.framework/QmsPluginFramework +0 -0
  7. package/ios/QmsPluginFramework.xcframework/ios-arm64/QmsPluginFramework.framework/_CodeSignature/CodeResources +8 -8
  8. package/ios/QmsPluginFramework.xcframework/ios-arm64/QmsPluginFramework.framework/bm.json +3 -3
  9. package/ios/QmsPluginFramework.xcframework/ios-arm64/QmsPluginFramework.framework/cn.json +1 -1
  10. package/ios/QmsPluginFramework.xcframework/ios-arm64/QmsPluginFramework.framework/en.json +8 -8
  11. package/ios/QmsPluginFramework.xcframework/ios-arm64_x86_64-simulator/QmsPluginFramework.framework/Assets.car +0 -0
  12. package/ios/QmsPluginFramework.xcframework/ios-arm64_x86_64-simulator/QmsPluginFramework.framework/QmsPluginFramework +0 -0
  13. package/ios/QmsPluginFramework.xcframework/ios-arm64_x86_64-simulator/QmsPluginFramework.framework/_CodeSignature/CodeResources +8 -8
  14. package/ios/QmsPluginFramework.xcframework/ios-arm64_x86_64-simulator/QmsPluginFramework.framework/bm.json +3 -3
  15. package/ios/QmsPluginFramework.xcframework/ios-arm64_x86_64-simulator/QmsPluginFramework.framework/cn.json +1 -1
  16. package/ios/QmsPluginFramework.xcframework/ios-arm64_x86_64-simulator/QmsPluginFramework.framework/en.json +8 -8
  17. package/lib/module/QmsDashboardView.android.js +6 -1
  18. package/lib/module/QmsDashboardView.android.js.map +1 -1
  19. package/lib/module/QmsDashboardView.ios.js +2 -0
  20. package/lib/module/QmsDashboardView.ios.js.map +1 -1
  21. package/lib/module/analyticsUtils.js +21 -0
  22. package/lib/module/analyticsUtils.js.map +1 -0
  23. package/lib/typescript/src/QmsDashboardView.android.d.ts.map +1 -1
  24. package/lib/typescript/src/QmsDashboardView.ios.d.ts.map +1 -1
  25. package/lib/typescript/src/QmsDashboardView.types.d.ts +1 -0
  26. package/lib/typescript/src/QmsDashboardView.types.d.ts.map +1 -1
  27. package/lib/typescript/src/analyticsUtils.d.ts +14 -0
  28. package/lib/typescript/src/analyticsUtils.d.ts.map +1 -0
  29. package/package.json +1 -1
  30. package/src/QmsDashboardView.android.tsx +10 -1
  31. package/src/QmsDashboardView.ios.tsx +2 -0
  32. package/src/QmsDashboardView.types.ts +3 -0
  33. package/src/analyticsUtils.ts +22 -0
@@ -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.16.4"
78
+ implementation "com.convep.qms:qms-plugin:1.18.0"
79
79
 
80
80
  implementation 'androidx.appcompat:appcompat:1.6.1'
81
81
 
@@ -540,12 +540,40 @@ static NSString * const kQmsRoutePayloadNotification = @"QmsRoutePayloadNotifica
540
540
  return base;
541
541
  }
542
542
 
543
+ - (NSAttributedString *)attributedStringByApplyingFontFamily:(NSString *)fontFamily
544
+ toAttributedString:(NSAttributedString *)attributedText
545
+ fallbackFont:(UIFont *)fallbackFont {
546
+ if (fontFamily.length == 0 || attributedText.length == 0) return attributedText;
547
+
548
+ NSMutableAttributedString *updatedAttributedText = [attributedText mutableCopy];
549
+ NSRange fullRange = NSMakeRange(0, attributedText.length);
550
+
551
+ [updatedAttributedText enumerateAttribute:NSFontAttributeName
552
+ inRange:fullRange
553
+ options:0
554
+ usingBlock:^(id value, NSRange range, BOOL *stop) {
555
+ UIFont *sourceFont = [value isKindOfClass:[UIFont class]] ? value : fallbackFont;
556
+ UIFont *updatedFont = [self fontByPreservingStyleFromFont:sourceFont];
557
+ if (updatedFont) {
558
+ [updatedAttributedText addAttribute:NSFontAttributeName value:updatedFont range:range];
559
+ }
560
+ }];
561
+
562
+ return updatedAttributedText;
563
+ }
564
+
543
565
  - (void)applyFontFamilyRecursivelyOnView:(UIView *)view {
544
566
  if (!view) return;
545
567
 
546
568
  if ([view isKindOfClass:[UILabel class]]) {
547
569
  UILabel *label = (UILabel *)view;
548
- label.font = [self fontByPreservingStyleFromFont:label.font];
570
+ if (label.attributedText.length > 0) {
571
+ label.attributedText = [self attributedStringByApplyingFontFamily:_fontFamily
572
+ toAttributedString:label.attributedText
573
+ fallbackFont:label.font];
574
+ } else {
575
+ label.font = [self fontByPreservingStyleFromFont:label.font];
576
+ }
549
577
  } else if ([view isKindOfClass:[UIButton class]]) {
550
578
  UIButton *button = (UIButton *)view;
551
579
  if (button.titleLabel) {
@@ -680,4 +708,4 @@ RCT_EXPORT_MODULE();
680
708
  [[NSNotificationCenter defaultCenter] removeObserver:self];
681
709
  }
682
710
 
683
- @end
711
+ @end
@@ -1,3 +1,5 @@
1
+ //UIViewController+QmsAnalytics.m
2
+
1
3
  #import <Foundation/Foundation.h>
2
4
  #import <UIKit/UIKit.h>
3
5
  #import <objc/runtime.h>
@@ -373,12 +375,42 @@ static void qms_swizzleInstanceMethod(Class cls, SEL originalSelector, SEL swizz
373
375
  return result ?: [UIFont systemFontOfSize:sourceFont.pointSize];
374
376
  }
375
377
 
378
+ - (NSAttributedString *)qms_attributedStringByTransformingFontsInAttributedString:(NSAttributedString *)attributedText
379
+ fallbackFont:(UIFont *)fallbackFont
380
+ resolver:(UIFont *(^)(UIFont *sourceFont))resolver {
381
+ if (attributedText.length == 0 || resolver == nil) return attributedText;
382
+
383
+ NSMutableAttributedString *mutable = [attributedText mutableCopy];
384
+ NSRange fullRange = NSMakeRange(0, attributedText.length);
385
+
386
+ [mutable enumerateAttribute:NSFontAttributeName
387
+ inRange:fullRange
388
+ options:0
389
+ usingBlock:^(id value, NSRange range, BOOL *stop) {
390
+ UIFont *sourceFont = [value isKindOfClass:[UIFont class]] ? value : fallbackFont;
391
+ UIFont *updatedFont = resolver(sourceFont);
392
+ if (updatedFont) {
393
+ [mutable addAttribute:NSFontAttributeName value:updatedFont range:range];
394
+ }
395
+ }];
396
+
397
+ return mutable;
398
+ }
399
+
376
400
  - (void)qms_applyFontRecursively:(UIView *)view fontFamily:(NSString *)fontFamily {
377
401
  if (!view || fontFamily.length == 0) return;
378
402
 
379
403
  if ([view isKindOfClass:[UILabel class]]) {
380
404
  UILabel *label = (UILabel *)view;
381
- label.font = [self qms_fontByPreservingStyleFromFont:label.font fontFamily:fontFamily];
405
+ if (label.attributedText.length > 0) {
406
+ label.attributedText = [self qms_attributedStringByTransformingFontsInAttributedString:label.attributedText
407
+ fallbackFont:label.font
408
+ resolver:^UIFont *(UIFont *sourceFont) {
409
+ return [self qms_fontByPreservingStyleFromFont:sourceFont fontFamily:fontFamily];
410
+ }];
411
+ } else {
412
+ label.font = [self qms_fontByPreservingStyleFromFont:label.font fontFamily:fontFamily];
413
+ }
382
414
  } else if ([view isKindOfClass:[UIButton class]]) {
383
415
  UIButton *button = (UIButton *)view;
384
416
  if (button.titleLabel) {
@@ -402,7 +434,15 @@ static void qms_swizzleInstanceMethod(Class cls, SEL originalSelector, SEL swizz
402
434
 
403
435
  if ([view isKindOfClass:[UILabel class]]) {
404
436
  UILabel *label = (UILabel *)view;
405
- label.font = [self qms_systemFontByPreservingStyleFromFont:label.font];
437
+ if (label.attributedText.length > 0) {
438
+ label.attributedText = [self qms_attributedStringByTransformingFontsInAttributedString:label.attributedText
439
+ fallbackFont:label.font
440
+ resolver:^UIFont *(UIFont *sourceFont) {
441
+ return [self qms_systemFontByPreservingStyleFromFont:sourceFont];
442
+ }];
443
+ } else {
444
+ label.font = [self qms_systemFontByPreservingStyleFromFont:label.font];
445
+ }
406
446
  } else if ([view isKindOfClass:[UIButton class]]) {
407
447
  UIButton *button = (UIButton *)view;
408
448
  if (button.titleLabel) {
@@ -8,32 +8,32 @@
8
8
  <key>BinaryPath</key>
9
9
  <string>QmsPluginFramework.framework/QmsPluginFramework</string>
10
10
  <key>LibraryIdentifier</key>
11
- <string>ios-arm64</string>
11
+ <string>ios-arm64_x86_64-simulator</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>
17
18
  </array>
18
19
  <key>SupportedPlatform</key>
19
20
  <string>ios</string>
21
+ <key>SupportedPlatformVariant</key>
22
+ <string>simulator</string>
20
23
  </dict>
21
24
  <dict>
22
25
  <key>BinaryPath</key>
23
26
  <string>QmsPluginFramework.framework/QmsPluginFramework</string>
24
27
  <key>LibraryIdentifier</key>
25
- <string>ios-arm64_x86_64-simulator</string>
28
+ <string>ios-arm64</string>
26
29
  <key>LibraryPath</key>
27
30
  <string>QmsPluginFramework.framework</string>
28
31
  <key>SupportedArchitectures</key>
29
32
  <array>
30
33
  <string>arm64</string>
31
- <string>x86_64</string>
32
34
  </array>
33
35
  <key>SupportedPlatform</key>
34
36
  <string>ios</string>
35
- <key>SupportedPlatformVariant</key>
36
- <string>simulator</string>
37
37
  </dict>
38
38
  </array>
39
39
  <key>CFBundlePackageType</key>
@@ -6,7 +6,7 @@
6
6
  <dict>
7
7
  <key>Assets.car</key>
8
8
  <data>
9
- rFFf8E9KTut/Ato3PC6D625P3c8=
9
+ T6eAuLKo8eHQ5cFQW2kHvRI+LZQ=
10
10
  </data>
11
11
  <key>Headers/QmsPlugin.h</key>
12
12
  <data>
@@ -38,15 +38,15 @@
38
38
  </data>
39
39
  <key>bm.json</key>
40
40
  <data>
41
- TLI2jKrpx+uC90xrQ8XrXxHVdn4=
41
+ J8m1xUyQbIm7FjEl6dgNTLhSBVU=
42
42
  </data>
43
43
  <key>cn.json</key>
44
44
  <data>
45
- vJDDVNX3zV17wD2KWFjU8pTsZIQ=
45
+ 6uy8Rq4wc/w3jMt5TwQTjNmTrIw=
46
46
  </data>
47
47
  <key>en.json</key>
48
48
  <data>
49
- 9dfRIeGWHQCJ9e9G6MxIlTbem0E=
49
+ jJePlr0jVQ0oMyMuz9T0D2I97JU=
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
- YQ6uB4Od1N+PxR5jOcOfYzbM3frctwWUKRt7MZtwU2E=
58
+ TJCmDXhTLBWwv/j4ARNk/VZD7zBRw8ormYCou4/wAlk=
59
59
  </data>
60
60
  </dict>
61
61
  <key>Headers/QmsPlugin.h</key>
@@ -104,21 +104,21 @@
104
104
  <dict>
105
105
  <key>hash2</key>
106
106
  <data>
107
- 6ynKT1gFPVuVJXO2IYFpTkwnHJi4Lfc6la53hS8t2T0=
107
+ GHvVL5a8K6Qm7Qfl7mj96elXhpNILq+pe3Z0Id6+x0g=
108
108
  </data>
109
109
  </dict>
110
110
  <key>cn.json</key>
111
111
  <dict>
112
112
  <key>hash2</key>
113
113
  <data>
114
- n/VPumKj4dOdtjOISWzvBsWkQSw6+o0VIHgso/B3/Ho=
114
+ 2Pm//bhYsIm3nGwtPMMnVVBq8NjE3D8jcfSyp2imekQ=
115
115
  </data>
116
116
  </dict>
117
117
  <key>en.json</key>
118
118
  <dict>
119
119
  <key>hash2</key>
120
120
  <data>
121
- 0pRsdIhOyWVP33FRwrMBjgW4ePLEKfcIclu8/4nQa18=
121
+ Z4eYf4Co8BLRvV0MN9d9VLOtDoCQTpIqzplRDCXhQPg=
122
122
  </data>
123
123
  </dict>
124
124
  </dict>
@@ -237,7 +237,7 @@
237
237
  "BY_CATEGORY": "Mengikut Kategori",
238
238
  "BY_CONTRACTOR": "Mengikut Kontraktor",
239
239
  "DESELECT_ALL": "Nyahpilih Semua",
240
- "SELECT_ALL": "Pilih Semua",
240
+ "SELECT_ALL": "Pilih Semua Status",
241
241
  "SEARCH_LABEL1": "Isu Carian",
242
242
  "REJECTED": "Ditolak",
243
243
  "TAKE_PHOTO": "Ambil gambar",
@@ -280,7 +280,7 @@
280
280
  "ADD_ITEM": "Tambah Item",
281
281
  "SUBMITTED_BY": "Dihantar Oleh",
282
282
  "RECEIVED_BY": "Diterima Oleh",
283
- "CLICK_HERE": "Klik Sini",
283
+ "CLICK_HERE": "Tandatangan di Sini",
284
284
  "EMPTY_FIELD": "Sila isi ruangan yang diperlukan sebelum menghantar.",
285
285
  "DETAILS": "Butiran",
286
286
  "UNIT_NO": "No. Unit",
@@ -720,7 +720,7 @@
720
720
  "WITHDRAW_ISSUE_SUMMARY": "Ringkasan Penarikan Isu",
721
721
  "WITHDRAW_ISSUE_MESSAGE": "Adakah anda pasti mahu menarik balik isu ini?",
722
722
  "WITHDRAW_ISSUE_SUCCESS_LABEL": "Isu berjaya ditarik balik",
723
- "ISSUES_SELECTED": "Isu yang dipilih",
723
+ "ISSUES_SELECTED": "Isu",
724
724
  "ENTER_REMARKS_HERE": "Masukkan ulasan di sini...",
725
725
  "WITHDRAWING": "Menarik Balik",
726
726
  "WITHDRAW_ALERT_MESSAGE": "Sahkan untuk menarik balik isu?",
@@ -231,7 +231,7 @@
231
231
  "BY_CATEGORY": "按类别",
232
232
  "BY_CONTRACTOR": "按承包商",
233
233
  "DESELECT_ALL": "取消全选",
234
- "SELECT_ALL": "全选",
234
+ "SELECT_ALL": "选择所有状态",
235
235
  "SEARCH_LABEL1": "搜索问题",
236
236
  "REJECTED": "已拒绝",
237
237
  "TAKE_PHOTO": "拍照",
@@ -91,7 +91,7 @@
91
91
  "REJECT_SUCCESS_LABEL": "Issue rejected successfully",
92
92
  "ISSUE_SUCCESS_LABEL": "Issue created successfully",
93
93
  "ISSUE_UPDATE_LABEL": "Issue updated successfully",
94
- "SUBMIT": "SUBMIT",
94
+ "SUBMIT": "Submit",
95
95
  "CONFIRM": "Confirm",
96
96
  "CONTRACTOR": "Contractor",
97
97
  "IMAGE_UPLOAD": "Image Upload",
@@ -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 Statuses",
236
236
  "SEARCH_LABEL1": "Search Issues",
237
237
  "REJECTED": "Rejected",
238
238
  "TAKE_PHOTO": "Take Photo",
@@ -265,7 +265,7 @@
265
265
  "SELECT_UNIT_BADGE": "Please select one unit or more to proceed",
266
266
  "ALL_UNITS": "All Units",
267
267
  "MAKE_TRANSACTION": "Make Transaction",
268
- "SUBMITTED_ITEMS": "Submitted Items",
268
+ "SUBMITTED_ITEMS": "Submitted",
269
269
  "CODE": "Code",
270
270
  "POSSESSOR": "Possessor",
271
271
  "TRANSACTION": "Transaction",
@@ -275,7 +275,7 @@
275
275
  "ADD_ITEM": "Add Item",
276
276
  "SUBMITTED_BY": "Submitted By",
277
277
  "RECEIVED_BY": "Received By",
278
- "CLICK_HERE": "Click Here",
278
+ "CLICK_HERE": "Sign Here",
279
279
  "EMPTY_FIELD": "Please fill up the required fields before submitting.",
280
280
  "DETAILS": "Details",
281
281
  "UNIT_NO": "Unit No.",
@@ -623,7 +623,7 @@
623
623
  "UPLOADED_COUNT": "Uploaded Count",
624
624
  "REASON_FAILED_TO_SUBMIT": "Reason Failed to Submit",
625
625
  "MAX_UNITS_ALERT_MESSAGE": "You have selected the maximum amount of units. Please remove a unit before adding a new one.",
626
- "UNITS_SELECTED": "Units Selected",
626
+ "UNITS_SELECTED": "Unit(s) Selected",
627
627
  "OFFLINE_UNIT": "Offline Unit",
628
628
  "ADD_UNIT": "Add Unit",
629
629
  "NO_DATA": "There is no data\nat this moment.",
@@ -682,7 +682,7 @@
682
682
  "OFFLINE_MODE": "You are currently in offline mode",
683
683
  "UPLOAD_DOCUMENT": "Upload Document",
684
684
  "REMOVE_DOCUMENT": "Remove Document",
685
- "DELETE_ISSUE_SUCCESS_LABEL": "Issue deleted successfully",
685
+ "DELETE_ISSUE_SUCCESS_LABEL": "Issue successfully deleted",
686
686
  "PA_REMINDER": "Kindly submit your key for rectification works to begin OR contact Customer Service to make alternative arrangement.",
687
687
  "SEARCH_UNIT": "Search Unit",
688
688
  "SEARCH_PROJECT": "Search Project",
@@ -721,7 +721,7 @@
721
721
  "WITHDRAW_ISSUE_SUMMARY": "Withdraw Issue Summary",
722
722
  "WITHDRAW_ISSUE_MESSAGE": "Are you sure you want to withdraw this issue?",
723
723
  "WITHDRAW_ISSUE_SUCCESS_LABEL": "Issue withdraw successfully",
724
- "ISSUES_SELECTED": "Issue(s) selected",
724
+ "ISSUES_SELECTED": "Issue(s)",
725
725
  "ENTER_REMARKS_HERE": "Enter remarks here...",
726
726
  "WITHDRAWING": "Withdrawing",
727
727
  "WITHDRAW_ALERT_MESSAGE": "Confirm to withdraw issue?",
@@ -755,7 +755,7 @@
755
755
  "COPY_LINK": "Copy Link",
756
756
  "SHARE": " Share",
757
757
  "LINK_ACCESS": "Link Access",
758
- "CHANGE_LINK_NAME": "Change 3rd Party Link Name",
758
+ "CHANGE_LINK_NAME": "Change Link Name",
759
759
  "DELETE_LINK": "Delete Link",
760
760
  "SHARE_LINKURL": "Share 3rd Party Link URL",
761
761
  "SELECT_OPTION_TO_SHARE": "Select an option to share",
@@ -6,7 +6,7 @@
6
6
  <dict>
7
7
  <key>Assets.car</key>
8
8
  <data>
9
- rFFf8E9KTut/Ato3PC6D625P3c8=
9
+ T6eAuLKo8eHQ5cFQW2kHvRI+LZQ=
10
10
  </data>
11
11
  <key>Headers/QmsPlugin.h</key>
12
12
  <data>
@@ -38,15 +38,15 @@
38
38
  </data>
39
39
  <key>bm.json</key>
40
40
  <data>
41
- TLI2jKrpx+uC90xrQ8XrXxHVdn4=
41
+ J8m1xUyQbIm7FjEl6dgNTLhSBVU=
42
42
  </data>
43
43
  <key>cn.json</key>
44
44
  <data>
45
- vJDDVNX3zV17wD2KWFjU8pTsZIQ=
45
+ 6uy8Rq4wc/w3jMt5TwQTjNmTrIw=
46
46
  </data>
47
47
  <key>en.json</key>
48
48
  <data>
49
- 9dfRIeGWHQCJ9e9G6MxIlTbem0E=
49
+ jJePlr0jVQ0oMyMuz9T0D2I97JU=
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
- YQ6uB4Od1N+PxR5jOcOfYzbM3frctwWUKRt7MZtwU2E=
58
+ TJCmDXhTLBWwv/j4ARNk/VZD7zBRw8ormYCou4/wAlk=
59
59
  </data>
60
60
  </dict>
61
61
  <key>Headers/QmsPlugin.h</key>
@@ -104,21 +104,21 @@
104
104
  <dict>
105
105
  <key>hash2</key>
106
106
  <data>
107
- 6ynKT1gFPVuVJXO2IYFpTkwnHJi4Lfc6la53hS8t2T0=
107
+ GHvVL5a8K6Qm7Qfl7mj96elXhpNILq+pe3Z0Id6+x0g=
108
108
  </data>
109
109
  </dict>
110
110
  <key>cn.json</key>
111
111
  <dict>
112
112
  <key>hash2</key>
113
113
  <data>
114
- n/VPumKj4dOdtjOISWzvBsWkQSw6+o0VIHgso/B3/Ho=
114
+ 2Pm//bhYsIm3nGwtPMMnVVBq8NjE3D8jcfSyp2imekQ=
115
115
  </data>
116
116
  </dict>
117
117
  <key>en.json</key>
118
118
  <dict>
119
119
  <key>hash2</key>
120
120
  <data>
121
- 0pRsdIhOyWVP33FRwrMBjgW4ePLEKfcIclu8/4nQa18=
121
+ Z4eYf4Co8BLRvV0MN9d9VLOtDoCQTpIqzplRDCXhQPg=
122
122
  </data>
123
123
  </dict>
124
124
  </dict>
@@ -237,7 +237,7 @@
237
237
  "BY_CATEGORY": "Mengikut Kategori",
238
238
  "BY_CONTRACTOR": "Mengikut Kontraktor",
239
239
  "DESELECT_ALL": "Nyahpilih Semua",
240
- "SELECT_ALL": "Pilih Semua",
240
+ "SELECT_ALL": "Pilih Semua Status",
241
241
  "SEARCH_LABEL1": "Isu Carian",
242
242
  "REJECTED": "Ditolak",
243
243
  "TAKE_PHOTO": "Ambil gambar",
@@ -280,7 +280,7 @@
280
280
  "ADD_ITEM": "Tambah Item",
281
281
  "SUBMITTED_BY": "Dihantar Oleh",
282
282
  "RECEIVED_BY": "Diterima Oleh",
283
- "CLICK_HERE": "Klik Sini",
283
+ "CLICK_HERE": "Tandatangan di Sini",
284
284
  "EMPTY_FIELD": "Sila isi ruangan yang diperlukan sebelum menghantar.",
285
285
  "DETAILS": "Butiran",
286
286
  "UNIT_NO": "No. Unit",
@@ -720,7 +720,7 @@
720
720
  "WITHDRAW_ISSUE_SUMMARY": "Ringkasan Penarikan Isu",
721
721
  "WITHDRAW_ISSUE_MESSAGE": "Adakah anda pasti mahu menarik balik isu ini?",
722
722
  "WITHDRAW_ISSUE_SUCCESS_LABEL": "Isu berjaya ditarik balik",
723
- "ISSUES_SELECTED": "Isu yang dipilih",
723
+ "ISSUES_SELECTED": "Isu",
724
724
  "ENTER_REMARKS_HERE": "Masukkan ulasan di sini...",
725
725
  "WITHDRAWING": "Menarik Balik",
726
726
  "WITHDRAW_ALERT_MESSAGE": "Sahkan untuk menarik balik isu?",
@@ -231,7 +231,7 @@
231
231
  "BY_CATEGORY": "按类别",
232
232
  "BY_CONTRACTOR": "按承包商",
233
233
  "DESELECT_ALL": "取消全选",
234
- "SELECT_ALL": "全选",
234
+ "SELECT_ALL": "选择所有状态",
235
235
  "SEARCH_LABEL1": "搜索问题",
236
236
  "REJECTED": "已拒绝",
237
237
  "TAKE_PHOTO": "拍照",
@@ -91,7 +91,7 @@
91
91
  "REJECT_SUCCESS_LABEL": "Issue rejected successfully",
92
92
  "ISSUE_SUCCESS_LABEL": "Issue created successfully",
93
93
  "ISSUE_UPDATE_LABEL": "Issue updated successfully",
94
- "SUBMIT": "SUBMIT",
94
+ "SUBMIT": "Submit",
95
95
  "CONFIRM": "Confirm",
96
96
  "CONTRACTOR": "Contractor",
97
97
  "IMAGE_UPLOAD": "Image Upload",
@@ -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 Statuses",
236
236
  "SEARCH_LABEL1": "Search Issues",
237
237
  "REJECTED": "Rejected",
238
238
  "TAKE_PHOTO": "Take Photo",
@@ -265,7 +265,7 @@
265
265
  "SELECT_UNIT_BADGE": "Please select one unit or more to proceed",
266
266
  "ALL_UNITS": "All Units",
267
267
  "MAKE_TRANSACTION": "Make Transaction",
268
- "SUBMITTED_ITEMS": "Submitted Items",
268
+ "SUBMITTED_ITEMS": "Submitted",
269
269
  "CODE": "Code",
270
270
  "POSSESSOR": "Possessor",
271
271
  "TRANSACTION": "Transaction",
@@ -275,7 +275,7 @@
275
275
  "ADD_ITEM": "Add Item",
276
276
  "SUBMITTED_BY": "Submitted By",
277
277
  "RECEIVED_BY": "Received By",
278
- "CLICK_HERE": "Click Here",
278
+ "CLICK_HERE": "Sign Here",
279
279
  "EMPTY_FIELD": "Please fill up the required fields before submitting.",
280
280
  "DETAILS": "Details",
281
281
  "UNIT_NO": "Unit No.",
@@ -623,7 +623,7 @@
623
623
  "UPLOADED_COUNT": "Uploaded Count",
624
624
  "REASON_FAILED_TO_SUBMIT": "Reason Failed to Submit",
625
625
  "MAX_UNITS_ALERT_MESSAGE": "You have selected the maximum amount of units. Please remove a unit before adding a new one.",
626
- "UNITS_SELECTED": "Units Selected",
626
+ "UNITS_SELECTED": "Unit(s) Selected",
627
627
  "OFFLINE_UNIT": "Offline Unit",
628
628
  "ADD_UNIT": "Add Unit",
629
629
  "NO_DATA": "There is no data\nat this moment.",
@@ -682,7 +682,7 @@
682
682
  "OFFLINE_MODE": "You are currently in offline mode",
683
683
  "UPLOAD_DOCUMENT": "Upload Document",
684
684
  "REMOVE_DOCUMENT": "Remove Document",
685
- "DELETE_ISSUE_SUCCESS_LABEL": "Issue deleted successfully",
685
+ "DELETE_ISSUE_SUCCESS_LABEL": "Issue successfully deleted",
686
686
  "PA_REMINDER": "Kindly submit your key for rectification works to begin OR contact Customer Service to make alternative arrangement.",
687
687
  "SEARCH_UNIT": "Search Unit",
688
688
  "SEARCH_PROJECT": "Search Project",
@@ -721,7 +721,7 @@
721
721
  "WITHDRAW_ISSUE_SUMMARY": "Withdraw Issue Summary",
722
722
  "WITHDRAW_ISSUE_MESSAGE": "Are you sure you want to withdraw this issue?",
723
723
  "WITHDRAW_ISSUE_SUCCESS_LABEL": "Issue withdraw successfully",
724
- "ISSUES_SELECTED": "Issue(s) selected",
724
+ "ISSUES_SELECTED": "Issue(s)",
725
725
  "ENTER_REMARKS_HERE": "Enter remarks here...",
726
726
  "WITHDRAWING": "Withdrawing",
727
727
  "WITHDRAW_ALERT_MESSAGE": "Confirm to withdraw issue?",
@@ -755,7 +755,7 @@
755
755
  "COPY_LINK": "Copy Link",
756
756
  "SHARE": " Share",
757
757
  "LINK_ACCESS": "Link Access",
758
- "CHANGE_LINK_NAME": "Change 3rd Party Link Name",
758
+ "CHANGE_LINK_NAME": "Change Link Name",
759
759
  "DELETE_LINK": "Delete Link",
760
760
  "SHARE_LINKURL": "Share 3rd Party Link URL",
761
761
  "SELECT_OPTION_TO_SHARE": "Select an option to share",
@@ -12,6 +12,7 @@ export const QmsDashboardView = ({
12
12
  onLogout,
13
13
  onAnalyticsScreen,
14
14
  onAnalyticsEvent,
15
+ onLocate,
15
16
  clientID,
16
17
  clientCode,
17
18
  ClientID,
@@ -99,7 +100,11 @@ export const QmsDashboardView = ({
99
100
  const subscription = DeviceEventEmitter.addListener('QmsSdkOnAnalyticsEvent', event => onAnalyticsEvent(event?.eventName, event?.params ?? null));
100
101
  return () => subscription.remove();
101
102
  }, [onAnalyticsEvent]);
102
-
103
+ useEffect(() => {
104
+ if (!onLocate) return;
105
+ const subscription = DeviceEventEmitter.addListener('QmsSdkOnLocate', event => onLocate(event?.lat, event?.lng));
106
+ return () => subscription.remove();
107
+ }, [onLocate]);
103
108
  // Android doesn’t need to show native UI as a "view" here,
104
109
  // we just render an empty container so JSX stays consistent.
105
110
  return /*#__PURE__*/_jsx(View, {
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","DeviceEventEmitter","NativeModules","View","jsx","_jsx","QmsModule","QmsDashboardView","style","onClose","onLogout","onAnalyticsScreen","onAnalyticsEvent","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"],"sourceRoot":"../../src","sources":["QmsDashboardView.android.tsx"],"mappings":"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","ignoreList":[]}
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":"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","ignoreList":[]}
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
 
3
+ // QmsDashboardView.ios.tsx
4
+
3
5
  import React, { useEffect } from 'react';
4
6
  import { DeviceEventEmitter, NativeEventEmitter, NativeModules, requireNativeComponent } from 'react-native';
5
7
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -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":"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","ignoreList":[]}
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":"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","ignoreList":[]}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Converts a raw event name from the native SDK into a Firebase-safe event name.
5
+ *
6
+ * Firebase rules:
7
+ * - Only letters, digits, and underscores
8
+ * - Must begin with a letter
9
+ * - Max 40 characters
10
+ *
11
+ * e.g. "POA Sign Off" → "poa_sign_off"
12
+ * "Unit Overview" → "unit_overview"
13
+ * "ScreenAt" → "screenat"
14
+ */
15
+ export function toFirebaseEventName(raw) {
16
+ if (!raw) return '';
17
+ return raw.trim().toLowerCase().replace(/[^a-z0-9]+/g, '_') // replace any non-alphanumeric run with _
18
+ .replace(/^_+|_+$/g, '') // strip leading/trailing underscores
19
+ .slice(0, 40); // Firebase max 40 chars
20
+ }
21
+ //# sourceMappingURL=analyticsUtils.js.map
@@ -0,0 +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 +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,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAyBtE,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAsJ5D,CAAC"}
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,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAyBtE,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CA+J5D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"QmsDashboardView.ios.d.ts","sourceRoot":"","sources":["../../../src/QmsDashboardView.ios.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAOzC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAMtE,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAyG5D,CAAC"}
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,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAMtE,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAyG5D,CAAC"}
@@ -5,6 +5,7 @@ export type QmsDashboardViewProps = {
5
5
  onLogout?: (event?: unknown) => void;
6
6
  onAnalyticsScreen?: (screenName?: string, screenClass?: string) => void;
7
7
  onAnalyticsEvent?: (eventName?: string, params?: Record<string, unknown> | null) => void;
8
+ onLocate?: (lat?: string, lng?: string) => void;
8
9
  /**
9
10
  * Preferred camelCase props. Uppercase variants are kept for backwards compatibility
10
11
  * with the native iOS view manager prop names.
@@ -1 +1 @@
1
- {"version":3,"file":"QmsDashboardView.types.d.ts","sourceRoot":"","sources":["../../../src/QmsDashboardView.types.ts"],"names":[],"mappings":"AAAA,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;;;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,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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Converts a raw event name from the native SDK into a Firebase-safe event name.
3
+ *
4
+ * Firebase rules:
5
+ * - Only letters, digits, and underscores
6
+ * - Must begin with a letter
7
+ * - Max 40 characters
8
+ *
9
+ * e.g. "POA Sign Off" → "poa_sign_off"
10
+ * "Unit Overview" → "unit_overview"
11
+ * "ScreenAt" → "screenat"
12
+ */
13
+ export declare function toFirebaseEventName(raw: string | undefined | null): string;
14
+ //# sourceMappingURL=analyticsUtils.d.ts.map
@@ -0,0 +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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@convep_mobilogy/react-native-qms-plugin",
3
- "version": "0.13.6",
3
+ "version": "1.0.0",
4
4
  "description": "To handle defect managment",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -31,6 +31,7 @@ export const QmsDashboardView: React.FC<QmsDashboardViewProps> = ({
31
31
  onLogout,
32
32
  onAnalyticsScreen,
33
33
  onAnalyticsEvent,
34
+ onLocate,
34
35
  clientID,
35
36
  clientCode,
36
37
  ClientID,
@@ -171,7 +172,15 @@ export const QmsDashboardView: React.FC<QmsDashboardViewProps> = ({
171
172
  );
172
173
  return () => subscription.remove();
173
174
  }, [onAnalyticsEvent]);
174
-
175
+ useEffect(() => {
176
+ if (!onLocate) return;
177
+ const subscription = DeviceEventEmitter.addListener(
178
+ 'QmsSdkOnLocate',
179
+ (event?: { lat?: string; lng?: string }) =>
180
+ onLocate(event?.lat, event?.lng)
181
+ );
182
+ return () => subscription.remove();
183
+ }, [onLocate]);
175
184
  // Android doesn’t need to show native UI as a "view" here,
176
185
  // we just render an empty container so JSX stays consistent.
177
186
  return <View style={style} />;
@@ -1,3 +1,5 @@
1
+ // QmsDashboardView.ios.tsx
2
+
1
3
  import React, { useEffect } from 'react';
2
4
  import {
3
5
  DeviceEventEmitter,
@@ -1,3 +1,5 @@
1
+ // QmsDashboardView.types.ts
2
+
1
3
  import type { StyleProp, ViewStyle } from 'react-native';
2
4
 
3
5
  export type QmsDashboardViewProps = {
@@ -9,6 +11,7 @@ export type QmsDashboardViewProps = {
9
11
  eventName?: string,
10
12
  params?: Record<string, unknown> | null
11
13
  ) => void;
14
+ onLocate?: (lat?: string, lng?: string) => void;
12
15
  /**
13
16
  * Preferred camelCase props. Uppercase variants are kept for backwards compatibility
14
17
  * with the native iOS view manager prop names.
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Converts a raw event name from the native SDK into a Firebase-safe event name.
3
+ *
4
+ * Firebase rules:
5
+ * - Only letters, digits, and underscores
6
+ * - Must begin with a letter
7
+ * - Max 40 characters
8
+ *
9
+ * e.g. "POA Sign Off" → "poa_sign_off"
10
+ * "Unit Overview" → "unit_overview"
11
+ * "ScreenAt" → "screenat"
12
+ */
13
+ export function toFirebaseEventName(raw: string | undefined | null): string {
14
+ if (!raw) return '';
15
+
16
+ return raw
17
+ .trim()
18
+ .toLowerCase()
19
+ .replace(/[^a-z0-9]+/g, '_') // replace any non-alphanumeric run with _
20
+ .replace(/^_+|_+$/g, '') // strip leading/trailing underscores
21
+ .slice(0, 40); // Firebase max 40 chars
22
+ }