@kiosinc/commons-rn 0.1.88 → 0.1.90

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 (41) hide show
  1. package/lib/commonjs/components/Header.js +7 -2
  2. package/lib/commonjs/components/Header.js.map +1 -1
  3. package/lib/commonjs/helpers/index.js +7 -0
  4. package/lib/commonjs/helpers/index.js.map +1 -1
  5. package/lib/commonjs/helpers/notifications/NotificationHandler.js +97 -0
  6. package/lib/commonjs/helpers/notifications/NotificationHandler.js.map +1 -0
  7. package/lib/commonjs/hooks/index.js +7 -0
  8. package/lib/commonjs/hooks/index.js.map +1 -1
  9. package/lib/commonjs/hooks/useSaveDevice.js +76 -0
  10. package/lib/commonjs/hooks/useSaveDevice.js.map +1 -0
  11. package/lib/commonjs/types/react-native-config.d.js +2 -0
  12. package/lib/commonjs/types/react-native-config.d.js.map +1 -0
  13. package/lib/module/components/Header.js +7 -2
  14. package/lib/module/components/Header.js.map +1 -1
  15. package/lib/module/helpers/index.js +1 -0
  16. package/lib/module/helpers/index.js.map +1 -1
  17. package/lib/module/helpers/notifications/NotificationHandler.js +89 -0
  18. package/lib/module/helpers/notifications/NotificationHandler.js.map +1 -0
  19. package/lib/module/hooks/index.js +1 -0
  20. package/lib/module/hooks/index.js.map +1 -1
  21. package/lib/module/hooks/useSaveDevice.js +68 -0
  22. package/lib/module/hooks/useSaveDevice.js.map +1 -0
  23. package/lib/module/types/react-native-config.d.js +2 -0
  24. package/lib/module/types/react-native-config.d.js.map +1 -0
  25. package/lib/typescript/src/components/Header.d.ts +2 -0
  26. package/lib/typescript/src/components/Header.d.ts.map +1 -1
  27. package/lib/typescript/src/helpers/index.d.ts +1 -0
  28. package/lib/typescript/src/helpers/index.d.ts.map +1 -1
  29. package/lib/typescript/src/helpers/notifications/NotificationHandler.d.ts +13 -0
  30. package/lib/typescript/src/helpers/notifications/NotificationHandler.d.ts.map +1 -0
  31. package/lib/typescript/src/hooks/index.d.ts +1 -0
  32. package/lib/typescript/src/hooks/index.d.ts.map +1 -1
  33. package/lib/typescript/src/hooks/useSaveDevice.d.ts +7 -0
  34. package/lib/typescript/src/hooks/useSaveDevice.d.ts.map +1 -0
  35. package/package.json +2 -1
  36. package/src/components/Header.tsx +11 -2
  37. package/src/helpers/index.ts +1 -0
  38. package/src/helpers/notifications/NotificationHandler.ts +114 -0
  39. package/src/hooks/index.ts +1 -0
  40. package/src/hooks/useSaveDevice.ts +80 -0
  41. package/src/types/react-native-config.d.ts +21 -0
@@ -14,6 +14,8 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
14
14
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
15
15
  const restyleFunctions = (0, _restyle.composeRestyleFunctions)([_restyle.spacing, _restyle.spacingShorthand, _restyle.layout, _restyle.position, _restyle.border, _restyle.backgroundColor, _restyle.backgroundColorShorthand]);
16
16
  const Header = ({
17
+ isBackButtonVisible = true,
18
+ isCloseButtonVisible,
17
19
  title,
18
20
  menuOptions,
19
21
  textAlign = 'center',
@@ -30,7 +32,7 @@ const Header = ({
30
32
  height: 60,
31
33
  flexDirection: "row",
32
34
  alignItems: "center"
33
- }, props), navigation.canGoBack() ? /*#__PURE__*/React.createElement(_components.IconButton, {
35
+ }, props), navigation.canGoBack() && isBackButtonVisible ? /*#__PURE__*/React.createElement(_components.IconButton, {
34
36
  icon: "arrow-left",
35
37
  onPress: navigation.goBack
36
38
  }) : /*#__PURE__*/React.createElement(_components.View, {
@@ -65,8 +67,11 @@ const Header = ({
65
67
  }, menuOption, {
66
68
  onPress: onPress
67
69
  }));
68
- })), customRightOptions, !menuOptions && !customRightOptions && /*#__PURE__*/React.createElement(_components.View, {
70
+ })), customRightOptions, !menuOptions && !customRightOptions && !isCloseButtonVisible && /*#__PURE__*/React.createElement(_components.View, {
69
71
  width: 40
72
+ }), navigation.canGoBack() && isCloseButtonVisible && /*#__PURE__*/React.createElement(_components.IconButton, {
73
+ icon: "close",
74
+ onPress: navigation.goBack
70
75
  }));
71
76
  };
72
77
  exports.Header = Header;
@@ -1 +1 @@
1
- {"version":3,"names":["React","_interopRequireWildcard","require","_components","_reactNativePaper","_native","_restyle","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","_extends","assign","bind","target","arguments","length","source","key","apply","restyleFunctions","composeRestyleFunctions","spacing","spacingShorthand","layout","position","border","backgroundColor","backgroundColorShorthand","Header","title","menuOptions","textAlign","customRightOptions","rest","props","useRestyle","navigation","useNavigation","visible","setVisible","useState","theme","useTheme","openMenu","closeMenu","createElement","View","height","flexDirection","alignItems","canGoBack","IconButton","icon","onPress","goBack","width","Text","flex","variant","Menu","style","colors","background","contentStyle","onDismiss","anchor","Appbar","Action","map","menuOption","index","Item","String","exports"],"sourceRoot":"../../../src","sources":["components/Header.tsx"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,iBAAA,GAAAF,OAAA;AAGA,IAAAG,OAAA,GAAAH,OAAA;AAEA,IAAAI,QAAA,GAAAJ,OAAA;AAiB0B,SAAAK,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAP,wBAAAO,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAc,CAAA,SAAAI,CAAA,GAAAR,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAI,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAI,CAAA,IAAAV,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAgB,GAAA,CAAAnB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAAA,SAAAY,SAAA,IAAAA,QAAA,GAAAT,MAAA,CAAAU,MAAA,GAAAV,MAAA,CAAAU,MAAA,CAAAC,IAAA,eAAAC,MAAA,aAAAL,CAAA,MAAAA,CAAA,GAAAM,SAAA,CAAAC,MAAA,EAAAP,CAAA,UAAAQ,MAAA,GAAAF,SAAA,CAAAN,CAAA,YAAAS,GAAA,IAAAD,MAAA,QAAAf,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAS,MAAA,EAAAC,GAAA,KAAAJ,MAAA,CAAAI,GAAA,IAAAD,MAAA,CAAAC,GAAA,gBAAAJ,MAAA,YAAAH,QAAA,CAAAQ,KAAA,OAAAJ,SAAA;AAW1B,MAAMK,gBAAgB,GAAG,IAAAC,gCAAuB,EAA0B,CACxEC,gBAAO,EACPC,yBAAgB,EAChBC,eAAM,EACNC,iBAAQ,EACRC,eAAM,EACNC,wBAAe,EACfC,iCAAwB,CACzB,CAAC;AAUK,MAAMC,MAAuB,GAAGA,CAAC;EACtCC,KAAK;EACLC,WAAW;EACXC,SAAS,GAAG,QAAQ;EACpBC,kBAAkB,GAAG,IAAI;EACzB,GAAGC;AACL,CAAC,KAAK;EACJ,MAAMC,KAAK,GAAG,IAAAC,mBAAU,EAAChB,gBAAgB,EAAEc,IAAI,CAAC;EAEhD,MAAMG,UAAU,GAAG,IAAAC,qBAAa,EAAC,CAAC;EAClC,MAAM,CAACC,OAAO,EAAEC,UAAU,CAAC,GAAGzD,KAAK,CAAC0D,QAAQ,CAAC,KAAK,CAAC;EACnD,MAAMC,KAAK,GAAG,IAAAC,0BAAQ,EAAC,CAAC;EAExB,MAAMC,QAAQ,GAAGA,CAAA,KAAMJ,UAAU,CAAC,IAAI,CAAC;EACvC,MAAMK,SAAS,GAAGA,CAAA,KAAML,UAAU,CAAC,KAAK,CAAC;EAEzC,oBACEzD,KAAA,CAAA+D,aAAA,CAAC5D,WAAA,CAAA6D,IAAI,EAAApC,QAAA;IACHqC,MAAM,EAAE,EAAG;IACXC,aAAa,EAAC,KAAK;IACnBC,UAAU,EAAC;EAAQ,GACdf,KAAK,GAETE,UAAU,CAACc,SAAS,CAAC,CAAC,gBACrBpE,KAAA,CAAA+D,aAAA,CAAC5D,WAAA,CAAAkE,UAAU;IAACC,IAAI,EAAC,YAAY;IAACC,OAAO,EAAEjB,UAAU,CAACkB;EAAO,CAAE,CAAC,gBAE5DxE,KAAA,CAAA+D,aAAA,CAAC5D,WAAA,CAAA6D,IAAI;IAACS,KAAK,EAAE;EAAG,CAAE,CACnB,eACDzE,KAAA,CAAA+D,aAAA,CAAC5D,WAAA,CAAAuE,IAAI;IAACC,IAAI,EAAE,CAAE;IAAC1B,SAAS,EAAEA,SAAU;IAAC2B,OAAO,EAAC;EAAa,GACvD7B,KACG,CAAC,EACNC,WAAW,iBACVhD,KAAA,CAAA+D,aAAA,CAAC3D,iBAAA,CAAAyE,IAAI;IACHC,KAAK,EAAE;MACLlC,eAAe,EAAEe,KAAK,CAACoB,MAAM,CAACC;IAChC,CAAE;IACFC,YAAY,EAAE;MACZrC,eAAe,EAAEe,KAAK,CAACoB,MAAM,CAACC;IAChC,CAAE;IACFxB,OAAO,EAAEA,OAAQ;IACjB0B,SAAS,EAAEpB,SAAU;IACrBqB,MAAM,eAAEnF,KAAA,CAAA+D,aAAA,CAAC3D,iBAAA,CAAAgF,MAAM,CAACC,MAAM;MAACf,IAAI,EAAC,eAAe;MAACC,OAAO,EAAEV;IAAS,CAAE;EAAE,GAEjEb,WAAW,CAACsC,GAAG,CAAC,CAACC,UAAU,EAAEC,KAAK,KAAK;IACtC,MAAMjB,OAAO,GAAI/D,CAAwB,IAAK;MAC5CsD,SAAS,CAAC,CAAC;MACXyB,UAAU,EAAEhB,OAAO,GAAG/D,CAAC,CAAC;IAC1B,CAAC;IACD,oBACER,KAAA,CAAA+D,aAAA,CAAC3D,iBAAA,CAAAyE,IAAI,CAACY,IAAI,EAAA7D,QAAA;MACRO,GAAG,EAAEuD,MAAM,CAACF,KAAK,CAAE;MACnBV,KAAK,EAAE;QACLlC,eAAe,EAAEe,KAAK,CAACoB,MAAM,CAACC;MAChC;IAAE,GACEO,UAAU;MACdhB,OAAO,EAAEA;IAAQ,EAClB,CAAC;EAEN,CAAC,CACG,CACP,EACArB,kBAAkB,EAClB,CAACF,WAAW,IAAI,CAACE,kBAAkB,iBAAIlD,KAAA,CAAA+D,aAAA,CAAC5D,WAAA,CAAA6D,IAAI;IAACS,KAAK,EAAE;EAAG,CAAE,CACtD,CAAC;AAEX,CAAC;AAACkB,OAAA,CAAA7C,MAAA,GAAAA,MAAA"}
1
+ {"version":3,"names":["React","_interopRequireWildcard","require","_components","_reactNativePaper","_native","_restyle","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","_extends","assign","bind","target","arguments","length","source","key","apply","restyleFunctions","composeRestyleFunctions","spacing","spacingShorthand","layout","position","border","backgroundColor","backgroundColorShorthand","Header","isBackButtonVisible","isCloseButtonVisible","title","menuOptions","textAlign","customRightOptions","rest","props","useRestyle","navigation","useNavigation","visible","setVisible","useState","theme","useTheme","openMenu","closeMenu","createElement","View","height","flexDirection","alignItems","canGoBack","IconButton","icon","onPress","goBack","width","Text","flex","variant","Menu","style","colors","background","contentStyle","onDismiss","anchor","Appbar","Action","map","menuOption","index","Item","String","exports"],"sourceRoot":"../../../src","sources":["components/Header.tsx"],"mappings":"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"}
@@ -9,5 +9,12 @@ Object.defineProperty(exports, "AssetManager", {
9
9
  return _AssetManager.AssetManager;
10
10
  }
11
11
  });
12
+ Object.defineProperty(exports, "NotificationHandler", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _NotificationHandler.NotificationHandler;
16
+ }
17
+ });
12
18
  var _AssetManager = require("./AssetManager");
19
+ var _NotificationHandler = require("./notifications/NotificationHandler");
13
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_AssetManager","require"],"sourceRoot":"../../../src","sources":["helpers/index.ts"],"mappings":";;;;;;;;;;;AAAA,IAAAA,aAAA,GAAAC,OAAA"}
1
+ {"version":3,"names":["_AssetManager","require","_NotificationHandler"],"sourceRoot":"../../../src","sources":["helpers/index.ts"],"mappings":";;;;;;;;;;;;;;;;;AAAA,IAAAA,aAAA,GAAAC,OAAA;AACA,IAAAC,oBAAA,GAAAD,OAAA"}
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.NotificationHandler = void 0;
7
+ var _messaging = _interopRequireDefault(require("@react-native-firebase/messaging"));
8
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
+ class NotificationHandler {
10
+ // Request Permission for Notifications (iOS only)
11
+ static async requestPermission() {
12
+ try {
13
+ const authStatus = await (0, _messaging.default)().requestPermission();
14
+ const enabled = authStatus === _messaging.default.AuthorizationStatus.AUTHORIZED || authStatus === _messaging.default.AuthorizationStatus.PROVISIONAL;
15
+ if (enabled) {
16
+ console.log('Authorization status:', authStatus);
17
+ }
18
+ } catch (error) {
19
+ console.error('Permission request failed:', error);
20
+ }
21
+ }
22
+
23
+ // Get FCM Token
24
+ static async getToken() {
25
+ try {
26
+ const token = await (0, _messaging.default)().getToken();
27
+ console.log('FCM Token:', token);
28
+ return token;
29
+ } catch (error) {
30
+ console.error('Failed to get FCM token', error);
31
+ return null;
32
+ }
33
+ }
34
+
35
+ // Refresh FCM Token
36
+ static async refreshToken(onTokenRefreshed) {
37
+ (0, _messaging.default)().onTokenRefresh(async fcmToken => {
38
+ console.log('New FCM Token:', fcmToken);
39
+ // Execute the callback with the new token
40
+ onTokenRefreshed(fcmToken);
41
+ });
42
+ }
43
+
44
+ // Handle Foreground Notifications
45
+ static onNotificationReceived(callback) {
46
+ (0, _messaging.default)().onMessage(async remoteMessage => {
47
+ console.log('Foreground notification:', remoteMessage);
48
+ callback(remoteMessage);
49
+ });
50
+ }
51
+
52
+ // Handle Notification Clicks when App is in Background or Quit State
53
+ static onNotificationOpenedApp(callback) {
54
+ (0, _messaging.default)().onNotificationOpenedApp(remoteMessage => {
55
+ console.log('App opened from background state via notification:', remoteMessage);
56
+ callback(remoteMessage);
57
+ });
58
+ }
59
+
60
+ // Handle Initial Notification when App is opened from Quit State
61
+ static async onNotificationInitialAppOpen(callback) {
62
+ const remoteMessage = await (0, _messaging.default)().getInitialNotification();
63
+ if (remoteMessage) {
64
+ console.log('App opened from quit state via notification:', remoteMessage);
65
+ callback(remoteMessage);
66
+ }
67
+ }
68
+
69
+ // Background Message Handler
70
+ static handleBackgroundMessage() {
71
+ (0, _messaging.default)().setBackgroundMessageHandler(async remoteMessage => {
72
+ console.log('Message handled in the background!', remoteMessage);
73
+ });
74
+ }
75
+
76
+ // Subscribe to a Topic
77
+ static async subscribeToTopic(topic) {
78
+ try {
79
+ await (0, _messaging.default)().subscribeToTopic(topic);
80
+ console.log(`Subscribed to topic: ${topic}`);
81
+ } catch (error) {
82
+ console.error(`Failed to subscribe to topic: ${topic}`, error);
83
+ }
84
+ }
85
+
86
+ // Unsubscribe from a Topic
87
+ static async unsubscribeFromTopic(topic) {
88
+ try {
89
+ await (0, _messaging.default)().unsubscribeFromTopic(topic);
90
+ console.log(`Unsubscribed from topic: ${topic}`);
91
+ } catch (error) {
92
+ console.error(`Failed to unsubscribe from topic: ${topic}`, error);
93
+ }
94
+ }
95
+ }
96
+ exports.NotificationHandler = NotificationHandler;
97
+ //# sourceMappingURL=NotificationHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_messaging","_interopRequireDefault","require","obj","__esModule","default","NotificationHandler","requestPermission","authStatus","messaging","enabled","AuthorizationStatus","AUTHORIZED","PROVISIONAL","console","log","error","getToken","token","refreshToken","onTokenRefreshed","onTokenRefresh","fcmToken","onNotificationReceived","callback","onMessage","remoteMessage","onNotificationOpenedApp","onNotificationInitialAppOpen","getInitialNotification","handleBackgroundMessage","setBackgroundMessageHandler","subscribeToTopic","topic","unsubscribeFromTopic","exports"],"sourceRoot":"../../../../src","sources":["helpers/notifications/NotificationHandler.ts"],"mappings":"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"}
@@ -51,6 +51,12 @@ Object.defineProperty(exports, "useLogout", {
51
51
  return _useLogout.useLogout;
52
52
  }
53
53
  });
54
+ Object.defineProperty(exports, "useSaveDeviceDetails", {
55
+ enumerable: true,
56
+ get: function () {
57
+ return _useSaveDevice.useSaveDeviceDetails;
58
+ }
59
+ });
54
60
  Object.defineProperty(exports, "useTermsOfService", {
55
61
  enumerable: true,
56
62
  get: function () {
@@ -66,4 +72,5 @@ var _useAppVersionCheck = require("./useAppVersionCheck");
66
72
  var _useBusinesses = require("./useBusinesses");
67
73
  var _useLogout = require("./useLogout");
68
74
  var _useCreateBusiness = require("./useCreateBusiness");
75
+ var _useSaveDevice = require("./useSaveDevice");
69
76
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_useDeactivateAccount","require","_useTermsOfService","_useAuth","_useCustomer","_useCheckCustomer","_useAppVersionCheck","_useBusinesses","_useLogout","_useCreateBusiness"],"sourceRoot":"../../../src","sources":["hooks/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,qBAAA,GAAAC,OAAA;AACA,IAAAC,kBAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AACA,IAAAG,YAAA,GAAAH,OAAA;AACA,IAAAI,iBAAA,GAAAJ,OAAA;AACA,IAAAK,mBAAA,GAAAL,OAAA;AACA,IAAAM,cAAA,GAAAN,OAAA;AACA,IAAAO,UAAA,GAAAP,OAAA;AACA,IAAAQ,kBAAA,GAAAR,OAAA"}
1
+ {"version":3,"names":["_useDeactivateAccount","require","_useTermsOfService","_useAuth","_useCustomer","_useCheckCustomer","_useAppVersionCheck","_useBusinesses","_useLogout","_useCreateBusiness","_useSaveDevice"],"sourceRoot":"../../../src","sources":["hooks/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,qBAAA,GAAAC,OAAA;AACA,IAAAC,kBAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AACA,IAAAG,YAAA,GAAAH,OAAA;AACA,IAAAI,iBAAA,GAAAJ,OAAA;AACA,IAAAK,mBAAA,GAAAL,OAAA;AACA,IAAAM,cAAA,GAAAN,OAAA;AACA,IAAAO,UAAA,GAAAP,OAAA;AACA,IAAAQ,kBAAA,GAAAR,OAAA;AACA,IAAAS,cAAA,GAAAT,OAAA"}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useSaveDeviceDetails = void 0;
7
+ var _reactQuery = require("@tanstack/react-query");
8
+ var _firestore = _interopRequireDefault(require("@react-native-firebase/firestore"));
9
+ var _reactNativeConfig = _interopRequireDefault(require("react-native-config"));
10
+ var _commonsRn = require("@kiosinc/commons-rn");
11
+ var _reactNativeDeviceInfo = _interopRequireDefault(require("react-native-device-info"));
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+ const uniqueId = _reactNativeDeviceInfo.default.getUniqueId();
14
+ const DATA = {
15
+ deviceName: _reactNativeDeviceInfo.default.getDeviceId(),
16
+ build: _reactNativeDeviceInfo.default.getBuildNumber(),
17
+ fcmToken: '',
18
+ uid: '',
19
+ model: _reactNativeDeviceInfo.default.getModel(),
20
+ systemName: _reactNativeDeviceInfo.default.getSystemName(),
21
+ systemVersion: _reactNativeDeviceInfo.default.getSystemVersion(),
22
+ updatedAt: '',
23
+ createdAt: '',
24
+ version: _reactNativeDeviceInfo.default.getVersion()
25
+ };
26
+ const useSaveDeviceDetails = () => {
27
+ const {
28
+ user
29
+ } = (0, _commonsRn.useAuthentication)();
30
+ const mutation = (0, _reactQuery.useMutation)(async ({
31
+ token
32
+ }) => {
33
+ // List of allowed URL schemes
34
+ const allowedSchemes = ['gusteau', 'remy', 'gusteaudev', 'remydev'];
35
+
36
+ // Run only if URL_SCHEME is in the allowed list
37
+ if (!allowedSchemes.includes(_reactNativeConfig.default.URL_SCHEME)) {
38
+ console.log('URL_SCHEME is not valid for this function');
39
+ return;
40
+ }
41
+ const devicesRef = (0, _firestore.default)().collection(`devices/registry/${_reactNativeConfig.default.URL_SCHEME}`);
42
+ const docRef = devicesRef.doc(await uniqueId);
43
+ const docSnapshot = await docRef.get();
44
+
45
+ // Check if UID or FCM token is empty or different before updating
46
+ const existingData = docSnapshot.exists ? docSnapshot.data() : null;
47
+ const shouldUpdate = !existingData?.uid || existingData.uid !== user?.uid || existingData.fcmToken !== token;
48
+ if (shouldUpdate) {
49
+ await docRef.set({
50
+ ...DATA,
51
+ uid: user?.uid || '',
52
+ fcmToken: token,
53
+ createdAt: existingData?.createdAt ?? _firestore.default.FieldValue.serverTimestamp(),
54
+ updatedAt: _firestore.default.FieldValue.serverTimestamp()
55
+ }, {
56
+ merge: true
57
+ });
58
+ console.log('Device added or updated!');
59
+ } else {
60
+ console.log('Device update not needed, UID and FCM token match.');
61
+ }
62
+ }, {
63
+ onError: error => {
64
+ _commonsRn.Alert.show({
65
+ title: error.name,
66
+ description: error?.message
67
+ });
68
+ }
69
+ });
70
+ return {
71
+ saveDevice: mutation.mutate,
72
+ isLoadingDevice: mutation.isLoading
73
+ };
74
+ };
75
+ exports.useSaveDeviceDetails = useSaveDeviceDetails;
76
+ //# sourceMappingURL=useSaveDevice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactQuery","require","_firestore","_interopRequireDefault","_reactNativeConfig","_commonsRn","_reactNativeDeviceInfo","obj","__esModule","default","uniqueId","DeviceInfo","getUniqueId","DATA","deviceName","getDeviceId","build","getBuildNumber","fcmToken","uid","model","getModel","systemName","getSystemName","systemVersion","getSystemVersion","updatedAt","createdAt","version","getVersion","useSaveDeviceDetails","user","useAuthentication","mutation","useMutation","token","allowedSchemes","includes","Config","URL_SCHEME","console","log","devicesRef","firestore","collection","docRef","doc","docSnapshot","get","existingData","exists","data","shouldUpdate","set","FieldValue","serverTimestamp","merge","onError","error","Alert","show","title","name","description","message","saveDevice","mutate","isLoadingDevice","isLoading","exports"],"sourceRoot":"../../../src","sources":["hooks/useSaveDevice.ts"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=react-native-config.d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["types/react-native-config.d.ts"],"mappings":""}
@@ -8,6 +8,8 @@ import { useNavigation } from '@react-navigation/native';
8
8
  import { useRestyle, spacing, border, backgroundColor, backgroundColorShorthand, composeRestyleFunctions, spacingShorthand, layout, position } from '@shopify/restyle';
9
9
  const restyleFunctions = composeRestyleFunctions([spacing, spacingShorthand, layout, position, border, backgroundColor, backgroundColorShorthand]);
10
10
  export const Header = ({
11
+ isBackButtonVisible = true,
12
+ isCloseButtonVisible,
11
13
  title,
12
14
  menuOptions,
13
15
  textAlign = 'center',
@@ -24,7 +26,7 @@ export const Header = ({
24
26
  height: 60,
25
27
  flexDirection: "row",
26
28
  alignItems: "center"
27
- }, props), navigation.canGoBack() ? /*#__PURE__*/React.createElement(IconButton, {
29
+ }, props), navigation.canGoBack() && isBackButtonVisible ? /*#__PURE__*/React.createElement(IconButton, {
28
30
  icon: "arrow-left",
29
31
  onPress: navigation.goBack
30
32
  }) : /*#__PURE__*/React.createElement(View, {
@@ -59,8 +61,11 @@ export const Header = ({
59
61
  }, menuOption, {
60
62
  onPress: onPress
61
63
  }));
62
- })), customRightOptions, !menuOptions && !customRightOptions && /*#__PURE__*/React.createElement(View, {
64
+ })), customRightOptions, !menuOptions && !customRightOptions && !isCloseButtonVisible && /*#__PURE__*/React.createElement(View, {
63
65
  width: 40
66
+ }), navigation.canGoBack() && isCloseButtonVisible && /*#__PURE__*/React.createElement(IconButton, {
67
+ icon: "close",
68
+ onPress: navigation.goBack
64
69
  }));
65
70
  };
66
71
  //# sourceMappingURL=Header.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","Text","Appbar","Menu","useTheme","IconButton","View","useNavigation","useRestyle","spacing","border","backgroundColor","backgroundColorShorthand","composeRestyleFunctions","spacingShorthand","layout","position","restyleFunctions","Header","title","menuOptions","textAlign","customRightOptions","rest","props","navigation","visible","setVisible","useState","theme","openMenu","closeMenu","createElement","_extends","height","flexDirection","alignItems","canGoBack","icon","onPress","goBack","width","flex","variant","style","colors","background","contentStyle","onDismiss","anchor","Action","map","menuOption","index","e","Item","key","String"],"sourceRoot":"../../../src","sources":["components/Header.tsx"],"mappings":"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"}
1
+ {"version":3,"names":["React","Text","Appbar","Menu","useTheme","IconButton","View","useNavigation","useRestyle","spacing","border","backgroundColor","backgroundColorShorthand","composeRestyleFunctions","spacingShorthand","layout","position","restyleFunctions","Header","isBackButtonVisible","isCloseButtonVisible","title","menuOptions","textAlign","customRightOptions","rest","props","navigation","visible","setVisible","useState","theme","openMenu","closeMenu","createElement","_extends","height","flexDirection","alignItems","canGoBack","icon","onPress","goBack","width","flex","variant","style","colors","background","contentStyle","onDismiss","anchor","Action","map","menuOption","index","e","Item","key","String"],"sourceRoot":"../../../src","sources":["components/Header.tsx"],"mappings":"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"}
@@ -1,2 +1,3 @@
1
1
  export { AssetManager } from './AssetManager';
2
+ export { NotificationHandler } from './notifications/NotificationHandler';
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["AssetManager"],"sourceRoot":"../../../src","sources":["helpers/index.ts"],"mappings":"AAAA,SAASA,YAAY,QAAQ,gBAAgB"}
1
+ {"version":3,"names":["AssetManager","NotificationHandler"],"sourceRoot":"../../../src","sources":["helpers/index.ts"],"mappings":"AAAA,SAASA,YAAY,QAAQ,gBAAgB;AAC7C,SAASC,mBAAmB,QAAQ,qCAAqC"}
@@ -0,0 +1,89 @@
1
+ import messaging from '@react-native-firebase/messaging';
2
+ export class NotificationHandler {
3
+ // Request Permission for Notifications (iOS only)
4
+ static async requestPermission() {
5
+ try {
6
+ const authStatus = await messaging().requestPermission();
7
+ const enabled = authStatus === messaging.AuthorizationStatus.AUTHORIZED || authStatus === messaging.AuthorizationStatus.PROVISIONAL;
8
+ if (enabled) {
9
+ console.log('Authorization status:', authStatus);
10
+ }
11
+ } catch (error) {
12
+ console.error('Permission request failed:', error);
13
+ }
14
+ }
15
+
16
+ // Get FCM Token
17
+ static async getToken() {
18
+ try {
19
+ const token = await messaging().getToken();
20
+ console.log('FCM Token:', token);
21
+ return token;
22
+ } catch (error) {
23
+ console.error('Failed to get FCM token', error);
24
+ return null;
25
+ }
26
+ }
27
+
28
+ // Refresh FCM Token
29
+ static async refreshToken(onTokenRefreshed) {
30
+ messaging().onTokenRefresh(async fcmToken => {
31
+ console.log('New FCM Token:', fcmToken);
32
+ // Execute the callback with the new token
33
+ onTokenRefreshed(fcmToken);
34
+ });
35
+ }
36
+
37
+ // Handle Foreground Notifications
38
+ static onNotificationReceived(callback) {
39
+ messaging().onMessage(async remoteMessage => {
40
+ console.log('Foreground notification:', remoteMessage);
41
+ callback(remoteMessage);
42
+ });
43
+ }
44
+
45
+ // Handle Notification Clicks when App is in Background or Quit State
46
+ static onNotificationOpenedApp(callback) {
47
+ messaging().onNotificationOpenedApp(remoteMessage => {
48
+ console.log('App opened from background state via notification:', remoteMessage);
49
+ callback(remoteMessage);
50
+ });
51
+ }
52
+
53
+ // Handle Initial Notification when App is opened from Quit State
54
+ static async onNotificationInitialAppOpen(callback) {
55
+ const remoteMessage = await messaging().getInitialNotification();
56
+ if (remoteMessage) {
57
+ console.log('App opened from quit state via notification:', remoteMessage);
58
+ callback(remoteMessage);
59
+ }
60
+ }
61
+
62
+ // Background Message Handler
63
+ static handleBackgroundMessage() {
64
+ messaging().setBackgroundMessageHandler(async remoteMessage => {
65
+ console.log('Message handled in the background!', remoteMessage);
66
+ });
67
+ }
68
+
69
+ // Subscribe to a Topic
70
+ static async subscribeToTopic(topic) {
71
+ try {
72
+ await messaging().subscribeToTopic(topic);
73
+ console.log(`Subscribed to topic: ${topic}`);
74
+ } catch (error) {
75
+ console.error(`Failed to subscribe to topic: ${topic}`, error);
76
+ }
77
+ }
78
+
79
+ // Unsubscribe from a Topic
80
+ static async unsubscribeFromTopic(topic) {
81
+ try {
82
+ await messaging().unsubscribeFromTopic(topic);
83
+ console.log(`Unsubscribed from topic: ${topic}`);
84
+ } catch (error) {
85
+ console.error(`Failed to unsubscribe from topic: ${topic}`, error);
86
+ }
87
+ }
88
+ }
89
+ //# sourceMappingURL=NotificationHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["messaging","NotificationHandler","requestPermission","authStatus","enabled","AuthorizationStatus","AUTHORIZED","PROVISIONAL","console","log","error","getToken","token","refreshToken","onTokenRefreshed","onTokenRefresh","fcmToken","onNotificationReceived","callback","onMessage","remoteMessage","onNotificationOpenedApp","onNotificationInitialAppOpen","getInitialNotification","handleBackgroundMessage","setBackgroundMessageHandler","subscribeToTopic","topic","unsubscribeFromTopic"],"sourceRoot":"../../../../src","sources":["helpers/notifications/NotificationHandler.ts"],"mappings":"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"}
@@ -7,4 +7,5 @@ export { useAppVersionCheck } from './useAppVersionCheck';
7
7
  export { useBusinesses } from './useBusinesses';
8
8
  export { useLogout } from './useLogout';
9
9
  export { useCreateBusiness } from './useCreateBusiness';
10
+ export { useSaveDeviceDetails } from './useSaveDevice';
10
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useDeactivateAccount","useTermsOfService","useAuth","useCustomerQueries","useCheckCustomer","useAppVersionCheck","useBusinesses","useLogout","useCreateBusiness"],"sourceRoot":"../../../src","sources":["hooks/index.ts"],"mappings":"AAAA,SAASA,oBAAoB,QAAQ,wBAAwB;AAC7D,SAASC,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,OAAO,QAAQ,WAAW;AACnC,SAASC,kBAAkB,QAAQ,eAAe;AAClD,SAASC,gBAAgB,QAAQ,oBAAoB;AACrD,SAASC,kBAAkB,QAAQ,sBAAsB;AACzD,SAASC,aAAa,QAAQ,iBAAiB;AAC/C,SAASC,SAAS,QAAQ,aAAa;AACvC,SAASC,iBAAiB,QAAQ,qBAAqB"}
1
+ {"version":3,"names":["useDeactivateAccount","useTermsOfService","useAuth","useCustomerQueries","useCheckCustomer","useAppVersionCheck","useBusinesses","useLogout","useCreateBusiness","useSaveDeviceDetails"],"sourceRoot":"../../../src","sources":["hooks/index.ts"],"mappings":"AAAA,SAASA,oBAAoB,QAAQ,wBAAwB;AAC7D,SAASC,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,OAAO,QAAQ,WAAW;AACnC,SAASC,kBAAkB,QAAQ,eAAe;AAClD,SAASC,gBAAgB,QAAQ,oBAAoB;AACrD,SAASC,kBAAkB,QAAQ,sBAAsB;AACzD,SAASC,aAAa,QAAQ,iBAAiB;AAC/C,SAASC,SAAS,QAAQ,aAAa;AACvC,SAASC,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,oBAAoB,QAAQ,iBAAiB"}
@@ -0,0 +1,68 @@
1
+ import { useMutation } from '@tanstack/react-query';
2
+ import firestore from '@react-native-firebase/firestore';
3
+ import Config from 'react-native-config';
4
+ import { Alert, useAuthentication } from '@kiosinc/commons-rn';
5
+ import DeviceInfo from 'react-native-device-info';
6
+ const uniqueId = DeviceInfo.getUniqueId();
7
+ const DATA = {
8
+ deviceName: DeviceInfo.getDeviceId(),
9
+ build: DeviceInfo.getBuildNumber(),
10
+ fcmToken: '',
11
+ uid: '',
12
+ model: DeviceInfo.getModel(),
13
+ systemName: DeviceInfo.getSystemName(),
14
+ systemVersion: DeviceInfo.getSystemVersion(),
15
+ updatedAt: '',
16
+ createdAt: '',
17
+ version: DeviceInfo.getVersion()
18
+ };
19
+ export const useSaveDeviceDetails = () => {
20
+ const {
21
+ user
22
+ } = useAuthentication();
23
+ const mutation = useMutation(async ({
24
+ token
25
+ }) => {
26
+ // List of allowed URL schemes
27
+ const allowedSchemes = ['gusteau', 'remy', 'gusteaudev', 'remydev'];
28
+
29
+ // Run only if URL_SCHEME is in the allowed list
30
+ if (!allowedSchemes.includes(Config.URL_SCHEME)) {
31
+ console.log('URL_SCHEME is not valid for this function');
32
+ return;
33
+ }
34
+ const devicesRef = firestore().collection(`devices/registry/${Config.URL_SCHEME}`);
35
+ const docRef = devicesRef.doc(await uniqueId);
36
+ const docSnapshot = await docRef.get();
37
+
38
+ // Check if UID or FCM token is empty or different before updating
39
+ const existingData = docSnapshot.exists ? docSnapshot.data() : null;
40
+ const shouldUpdate = !existingData?.uid || existingData.uid !== user?.uid || existingData.fcmToken !== token;
41
+ if (shouldUpdate) {
42
+ await docRef.set({
43
+ ...DATA,
44
+ uid: user?.uid || '',
45
+ fcmToken: token,
46
+ createdAt: existingData?.createdAt ?? firestore.FieldValue.serverTimestamp(),
47
+ updatedAt: firestore.FieldValue.serverTimestamp()
48
+ }, {
49
+ merge: true
50
+ });
51
+ console.log('Device added or updated!');
52
+ } else {
53
+ console.log('Device update not needed, UID and FCM token match.');
54
+ }
55
+ }, {
56
+ onError: error => {
57
+ Alert.show({
58
+ title: error.name,
59
+ description: error?.message
60
+ });
61
+ }
62
+ });
63
+ return {
64
+ saveDevice: mutation.mutate,
65
+ isLoadingDevice: mutation.isLoading
66
+ };
67
+ };
68
+ //# sourceMappingURL=useSaveDevice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useMutation","firestore","Config","Alert","useAuthentication","DeviceInfo","uniqueId","getUniqueId","DATA","deviceName","getDeviceId","build","getBuildNumber","fcmToken","uid","model","getModel","systemName","getSystemName","systemVersion","getSystemVersion","updatedAt","createdAt","version","getVersion","useSaveDeviceDetails","user","mutation","token","allowedSchemes","includes","URL_SCHEME","console","log","devicesRef","collection","docRef","doc","docSnapshot","get","existingData","exists","data","shouldUpdate","set","FieldValue","serverTimestamp","merge","onError","error","show","title","name","description","message","saveDevice","mutate","isLoadingDevice","isLoading"],"sourceRoot":"../../../src","sources":["hooks/useSaveDevice.ts"],"mappings":"AAAA,SAASA,WAAW,QAAQ,uBAAuB;AACnD,OAAOC,SAAS,MAAM,kCAAkC;AACxD,OAAOC,MAAM,MAAM,qBAAqB;AACxC,SAASC,KAAK,EAAEC,iBAAiB,QAAQ,qBAAqB;AAC9D,OAAOC,UAAU,MAAM,0BAA0B;AAEjD,MAAMC,QAAQ,GAAGD,UAAU,CAACE,WAAW,CAAC,CAAC;AAEzC,MAAMC,IAAI,GAAG;EACXC,UAAU,EAAEJ,UAAU,CAACK,WAAW,CAAC,CAAC;EACpCC,KAAK,EAAEN,UAAU,CAACO,cAAc,CAAC,CAAC;EAClCC,QAAQ,EAAE,EAAE;EACZC,GAAG,EAAE,EAAE;EACPC,KAAK,EAAEV,UAAU,CAACW,QAAQ,CAAC,CAAC;EAC5BC,UAAU,EAAEZ,UAAU,CAACa,aAAa,CAAC,CAAC;EACtCC,aAAa,EAAEd,UAAU,CAACe,gBAAgB,CAAC,CAAC;EAC5CC,SAAS,EAAE,EAAE;EACbC,SAAS,EAAE,EAAE;EACbC,OAAO,EAAElB,UAAU,CAACmB,UAAU,CAAC;AACjC,CAAC;AAED,OAAO,MAAMC,oBAAoB,GAAGA,CAAA,KAAM;EACxC,MAAM;IAAEC;EAAK,CAAC,GAAGtB,iBAAiB,CAAC,CAAC;EACpC,MAAMuB,QAAQ,GAAG3B,WAAW,CAC1B,OAAO;IAAE4B;EAAyB,CAAC,KAAK;IACtC;IACA,MAAMC,cAAc,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,CAAC;;IAEnE;IACA,IAAI,CAACA,cAAc,CAACC,QAAQ,CAAC5B,MAAM,CAAC6B,UAAU,CAAC,EAAE;MAC/CC,OAAO,CAACC,GAAG,CAAC,2CAA2C,CAAC;MACxD;IACF;IAEA,MAAMC,UAAU,GAAGjC,SAAS,CAAC,CAAC,CAACkC,UAAU,CACtC,oBAAmBjC,MAAM,CAAC6B,UAAW,EACxC,CAAC;IACD,MAAMK,MAAM,GAAGF,UAAU,CAACG,GAAG,CAAC,MAAM/B,QAAQ,CAAC;IAC7C,MAAMgC,WAAW,GAAG,MAAMF,MAAM,CAACG,GAAG,CAAC,CAAC;;IAEtC;IACA,MAAMC,YAAY,GAAGF,WAAW,CAACG,MAAM,GAAGH,WAAW,CAACI,IAAI,CAAC,CAAC,GAAG,IAAI;IAEnE,MAAMC,YAAY,GAChB,CAACH,YAAY,EAAE1B,GAAG,IAClB0B,YAAY,CAAC1B,GAAG,KAAKY,IAAI,EAAEZ,GAAG,IAC9B0B,YAAY,CAAC3B,QAAQ,KAAKe,KAAK;IAEjC,IAAIe,YAAY,EAAE;MAChB,MAAMP,MAAM,CAACQ,GAAG,CACd;QACE,GAAGpC,IAAI;QACPM,GAAG,EAAEY,IAAI,EAAEZ,GAAG,IAAI,EAAE;QACpBD,QAAQ,EAAEe,KAAK;QACfN,SAAS,EACPkB,YAAY,EAAElB,SAAS,IAAIrB,SAAS,CAAC4C,UAAU,CAACC,eAAe,CAAC,CAAC;QACnEzB,SAAS,EAAEpB,SAAS,CAAC4C,UAAU,CAACC,eAAe,CAAC;MAClD,CAAC,EACD;QAAEC,KAAK,EAAE;MAAK,CAChB,CAAC;MACDf,OAAO,CAACC,GAAG,CAAC,0BAA0B,CAAC;IACzC,CAAC,MAAM;MACLD,OAAO,CAACC,GAAG,CAAC,oDAAoD,CAAC;IACnE;EACF,CAAC,EACD;IACEe,OAAO,EAAGC,KAAY,IAAK;MACzB9C,KAAK,CAAC+C,IAAI,CAAC;QACTC,KAAK,EAAEF,KAAK,CAACG,IAAI;QACjBC,WAAW,EAAEJ,KAAK,EAAEK;MACtB,CAAC,CAAC;IACJ;EACF,CACF,CAAC;EAED,OAAO;IACLC,UAAU,EAAE5B,QAAQ,CAAC6B,MAAM;IAC3BC,eAAe,EAAE9B,QAAQ,CAAC+B;EAC5B,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=react-native-config.d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["types/react-native-config.d.ts"],"mappings":""}
@@ -5,6 +5,8 @@ import { type ThemeType } from '../theme';
5
5
  import { MenuItemProps } from 'react-native-paper';
6
6
  type RestyleProps = SpacingProps<ThemeType> & SpacingShorthandProps<ThemeType> & LayoutProps<ThemeType> & PositionProps<ThemeType> & BorderProps<ThemeType> & BackgroundColorProps<ThemeType> & BackgroundColorShorthandProps<ThemeType>;
7
7
  type Props = RestyleProps & ViewProps & {
8
+ isBackButtonVisible?: boolean;
9
+ isCloseButtonVisible?: boolean;
8
10
  textAlign?: 'center' | 'right' | 'left';
9
11
  title?: string;
10
12
  customRightOptions?: React.ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../../../src/components/Header.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,EAA8B,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EAML,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,oBAAoB,EAEzB,KAAK,qBAAqB,EAC1B,KAAK,WAAW,EAChB,KAAK,aAAa,EAIlB,KAAK,6BAA6B,EACnC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,KAAK,YAAY,GAAG,YAAY,CAAC,SAAS,CAAC,GACzC,qBAAqB,CAAC,SAAS,CAAC,GAChC,WAAW,CAAC,SAAS,CAAC,GACtB,aAAa,CAAC,SAAS,CAAC,GACxB,WAAW,CAAC,SAAS,CAAC,GACtB,oBAAoB,CAAC,SAAS,CAAC,GAC/B,6BAA6B,CAAC,SAAS,CAAC,CAAC;AAY3C,KAAK,KAAK,GAAG,YAAY,GACvB,SAAS,GAAG;IACV,SAAS,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACrC,WAAW,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;CACpC,CAAC;AAEJ,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAiElC,CAAC"}
1
+ {"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../../../src/components/Header.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,EAA8B,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EAML,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,oBAAoB,EAEzB,KAAK,qBAAqB,EAC1B,KAAK,WAAW,EAChB,KAAK,aAAa,EAIlB,KAAK,6BAA6B,EACnC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,KAAK,YAAY,GAAG,YAAY,CAAC,SAAS,CAAC,GACzC,qBAAqB,CAAC,SAAS,CAAC,GAChC,WAAW,CAAC,SAAS,CAAC,GACtB,aAAa,CAAC,SAAS,CAAC,GACxB,WAAW,CAAC,SAAS,CAAC,GACtB,oBAAoB,CAAC,SAAS,CAAC,GAC/B,6BAA6B,CAAC,SAAS,CAAC,CAAC;AAY3C,KAAK,KAAK,GAAG,YAAY,GACvB,SAAS,GAAG;IACV,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,SAAS,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACrC,WAAW,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;CACpC,CAAC;AAEJ,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAwElC,CAAC"}
@@ -1,2 +1,3 @@
1
1
  export { AssetManager } from './AssetManager';
2
+ export { NotificationHandler } from './notifications/NotificationHandler';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/helpers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/helpers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { FirebaseMessagingTypes } from '@react-native-firebase/messaging';
2
+ export declare class NotificationHandler {
3
+ static requestPermission(): Promise<void>;
4
+ static getToken(): Promise<string | null>;
5
+ static refreshToken(onTokenRefreshed: (token: string) => void): Promise<void>;
6
+ static onNotificationReceived(callback: (message: FirebaseMessagingTypes.RemoteMessage) => void): void;
7
+ static onNotificationOpenedApp(callback: (message: FirebaseMessagingTypes.RemoteMessage | null) => void): void;
8
+ static onNotificationInitialAppOpen(callback: (message: FirebaseMessagingTypes.RemoteMessage | null) => void): Promise<void>;
9
+ static handleBackgroundMessage(): void;
10
+ static subscribeToTopic(topic: string): Promise<void>;
11
+ static unsubscribeFromTopic(topic: string): Promise<void>;
12
+ }
13
+ //# sourceMappingURL=NotificationHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NotificationHandler.d.ts","sourceRoot":"","sources":["../../../../../src/helpers/notifications/NotificationHandler.ts"],"names":[],"mappings":"AAAA,OAAkB,EAChB,sBAAsB,EACvB,MAAM,kCAAkC,CAAC;AAE1C,qBAAa,mBAAmB;WAEjB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;WAgBlC,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;WAYlC,YAAY,CACvB,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GACxC,OAAO,CAAC,IAAI,CAAC;IAShB,MAAM,CAAC,sBAAsB,CAC3B,QAAQ,EAAE,CAAC,OAAO,EAAE,sBAAsB,CAAC,aAAa,KAAK,IAAI,GAChE,IAAI;IAUP,MAAM,CAAC,uBAAuB,CAC5B,QAAQ,EAAE,CAAC,OAAO,EAAE,sBAAsB,CAAC,aAAa,GAAG,IAAI,KAAK,IAAI,GACvE,IAAI;WAaM,4BAA4B,CACvC,QAAQ,EAAE,CAAC,OAAO,EAAE,sBAAsB,CAAC,aAAa,GAAG,IAAI,KAAK,IAAI,GACvE,OAAO,CAAC,IAAI,CAAC;IAYhB,MAAM,CAAC,uBAAuB,IAAI,IAAI;WASzB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;WAU9C,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAQhE"}
@@ -7,4 +7,5 @@ export { useAppVersionCheck } from './useAppVersionCheck';
7
7
  export { useBusinesses } from './useBusinesses';
8
8
  export { useLogout } from './useLogout';
9
9
  export { useCreateBusiness } from './useCreateBusiness';
10
+ export { useSaveDeviceDetails } from './useSaveDevice';
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,7 @@
1
+ export declare const useSaveDeviceDetails: () => {
2
+ saveDevice: import("@tanstack/react-query").UseMutateFunction<void, Error, {
3
+ token: string;
4
+ }, unknown>;
5
+ isLoadingDevice: boolean;
6
+ };
7
+ //# sourceMappingURL=useSaveDevice.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSaveDevice.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useSaveDevice.ts"],"names":[],"mappings":"AAqBA,eAAO,MAAM,oBAAoB;;eAGF,MAAM;;;CAuDpC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kiosinc/commons-rn",
3
- "version": "0.1.88",
3
+ "version": "0.1.90",
4
4
  "description": "Common Code",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -190,6 +190,7 @@
190
190
  "@hookform/resolvers": "^3.3.2",
191
191
  "@kiosinc/commons-types": "^0.0.17",
192
192
  "@react-native-firebase/firestore": "^20.3.0",
193
+ "@react-native-firebase/messaging": "^20.3.0",
193
194
  "@react-native-firebase/storage": "^20.3.0",
194
195
  "@react-navigation/material-top-tabs": "^6.6.13",
195
196
  "@shopify/restyle": "^2.4.2",
@@ -45,6 +45,8 @@ const restyleFunctions = composeRestyleFunctions<ThemeType, RestyleProps>([
45
45
 
46
46
  type Props = RestyleProps &
47
47
  ViewProps & {
48
+ isBackButtonVisible?: boolean;
49
+ isCloseButtonVisible?: boolean;
48
50
  textAlign?: 'center' | 'right' | 'left';
49
51
  title?: string;
50
52
  customRightOptions?: React.ReactNode;
@@ -52,6 +54,8 @@ type Props = RestyleProps &
52
54
  };
53
55
 
54
56
  export const Header: React.FC<Props> = ({
57
+ isBackButtonVisible = true,
58
+ isCloseButtonVisible,
55
59
  title,
56
60
  menuOptions,
57
61
  textAlign = 'center',
@@ -74,7 +78,7 @@ export const Header: React.FC<Props> = ({
74
78
  alignItems="center"
75
79
  {...(props as ViewProps)}
76
80
  >
77
- {navigation.canGoBack() ? (
81
+ {navigation.canGoBack() && isBackButtonVisible ? (
78
82
  <IconButton icon="arrow-left" onPress={navigation.goBack} />
79
83
  ) : (
80
84
  <View width={40} />
@@ -113,7 +117,12 @@ export const Header: React.FC<Props> = ({
113
117
  </Menu>
114
118
  )}
115
119
  {customRightOptions}
116
- {!menuOptions && !customRightOptions && <View width={40} />}
120
+ {!menuOptions && !customRightOptions && !isCloseButtonVisible && (
121
+ <View width={40} />
122
+ )}
123
+ {navigation.canGoBack() && isCloseButtonVisible && (
124
+ <IconButton icon="close" onPress={navigation.goBack} />
125
+ )}
117
126
  </View>
118
127
  );
119
128
  };
@@ -1 +1,2 @@
1
1
  export { AssetManager } from './AssetManager';
2
+ export { NotificationHandler } from './notifications/NotificationHandler';
@@ -0,0 +1,114 @@
1
+ import messaging, {
2
+ FirebaseMessagingTypes,
3
+ } from '@react-native-firebase/messaging';
4
+
5
+ export class NotificationHandler {
6
+ // Request Permission for Notifications (iOS only)
7
+ static async requestPermission(): Promise<void> {
8
+ try {
9
+ const authStatus = await messaging().requestPermission();
10
+ const enabled =
11
+ authStatus === messaging.AuthorizationStatus.AUTHORIZED ||
12
+ authStatus === messaging.AuthorizationStatus.PROVISIONAL;
13
+
14
+ if (enabled) {
15
+ console.log('Authorization status:', authStatus);
16
+ }
17
+ } catch (error) {
18
+ console.error('Permission request failed:', error);
19
+ }
20
+ }
21
+
22
+ // Get FCM Token
23
+ static async getToken(): Promise<string | null> {
24
+ try {
25
+ const token = await messaging().getToken();
26
+ console.log('FCM Token:', token);
27
+ return token;
28
+ } catch (error) {
29
+ console.error('Failed to get FCM token', error);
30
+ return null;
31
+ }
32
+ }
33
+
34
+ // Refresh FCM Token
35
+ static async refreshToken(
36
+ onTokenRefreshed: (token: string) => void
37
+ ): Promise<void> {
38
+ messaging().onTokenRefresh(async (fcmToken: string) => {
39
+ console.log('New FCM Token:', fcmToken);
40
+ // Execute the callback with the new token
41
+ onTokenRefreshed(fcmToken);
42
+ });
43
+ }
44
+
45
+ // Handle Foreground Notifications
46
+ static onNotificationReceived(
47
+ callback: (message: FirebaseMessagingTypes.RemoteMessage) => void
48
+ ): void {
49
+ messaging().onMessage(
50
+ async (remoteMessage: FirebaseMessagingTypes.RemoteMessage) => {
51
+ console.log('Foreground notification:', remoteMessage);
52
+ callback(remoteMessage);
53
+ }
54
+ );
55
+ }
56
+
57
+ // Handle Notification Clicks when App is in Background or Quit State
58
+ static onNotificationOpenedApp(
59
+ callback: (message: FirebaseMessagingTypes.RemoteMessage | null) => void
60
+ ): void {
61
+ messaging().onNotificationOpenedApp(
62
+ (remoteMessage: FirebaseMessagingTypes.RemoteMessage) => {
63
+ console.log(
64
+ 'App opened from background state via notification:',
65
+ remoteMessage
66
+ );
67
+ callback(remoteMessage);
68
+ }
69
+ );
70
+ }
71
+
72
+ // Handle Initial Notification when App is opened from Quit State
73
+ static async onNotificationInitialAppOpen(
74
+ callback: (message: FirebaseMessagingTypes.RemoteMessage | null) => void
75
+ ): Promise<void> {
76
+ const remoteMessage = await messaging().getInitialNotification();
77
+ if (remoteMessage) {
78
+ console.log(
79
+ 'App opened from quit state via notification:',
80
+ remoteMessage
81
+ );
82
+ callback(remoteMessage);
83
+ }
84
+ }
85
+
86
+ // Background Message Handler
87
+ static handleBackgroundMessage(): void {
88
+ messaging().setBackgroundMessageHandler(
89
+ async (remoteMessage: FirebaseMessagingTypes.RemoteMessage) => {
90
+ console.log('Message handled in the background!', remoteMessage);
91
+ }
92
+ );
93
+ }
94
+
95
+ // Subscribe to a Topic
96
+ static async subscribeToTopic(topic: string): Promise<void> {
97
+ try {
98
+ await messaging().subscribeToTopic(topic);
99
+ console.log(`Subscribed to topic: ${topic}`);
100
+ } catch (error) {
101
+ console.error(`Failed to subscribe to topic: ${topic}`, error);
102
+ }
103
+ }
104
+
105
+ // Unsubscribe from a Topic
106
+ static async unsubscribeFromTopic(topic: string): Promise<void> {
107
+ try {
108
+ await messaging().unsubscribeFromTopic(topic);
109
+ console.log(`Unsubscribed from topic: ${topic}`);
110
+ } catch (error) {
111
+ console.error(`Failed to unsubscribe from topic: ${topic}`, error);
112
+ }
113
+ }
114
+ }
@@ -7,3 +7,4 @@ export { useAppVersionCheck } from './useAppVersionCheck';
7
7
  export { useBusinesses } from './useBusinesses';
8
8
  export { useLogout } from './useLogout';
9
9
  export { useCreateBusiness } from './useCreateBusiness';
10
+ export { useSaveDeviceDetails } from './useSaveDevice';
@@ -0,0 +1,80 @@
1
+ import { useMutation } from '@tanstack/react-query';
2
+ import firestore from '@react-native-firebase/firestore';
3
+ import Config from 'react-native-config';
4
+ import { Alert, useAuthentication } from '@kiosinc/commons-rn';
5
+ import DeviceInfo from 'react-native-device-info';
6
+
7
+ const uniqueId = DeviceInfo.getUniqueId();
8
+
9
+ const DATA = {
10
+ deviceName: DeviceInfo.getDeviceId(),
11
+ build: DeviceInfo.getBuildNumber(),
12
+ fcmToken: '',
13
+ uid: '',
14
+ model: DeviceInfo.getModel(),
15
+ systemName: DeviceInfo.getSystemName(),
16
+ systemVersion: DeviceInfo.getSystemVersion(),
17
+ updatedAt: '',
18
+ createdAt: '',
19
+ version: DeviceInfo.getVersion(),
20
+ };
21
+
22
+ export const useSaveDeviceDetails = () => {
23
+ const { user } = useAuthentication();
24
+ const mutation = useMutation(
25
+ async ({ token }: { token: string }) => {
26
+ // List of allowed URL schemes
27
+ const allowedSchemes = ['gusteau', 'remy', 'gusteaudev', 'remydev'];
28
+
29
+ // Run only if URL_SCHEME is in the allowed list
30
+ if (!allowedSchemes.includes(Config.URL_SCHEME)) {
31
+ console.log('URL_SCHEME is not valid for this function');
32
+ return;
33
+ }
34
+
35
+ const devicesRef = firestore().collection(
36
+ `devices/registry/${Config.URL_SCHEME}`
37
+ );
38
+ const docRef = devicesRef.doc(await uniqueId);
39
+ const docSnapshot = await docRef.get();
40
+
41
+ // Check if UID or FCM token is empty or different before updating
42
+ const existingData = docSnapshot.exists ? docSnapshot.data() : null;
43
+
44
+ const shouldUpdate =
45
+ !existingData?.uid ||
46
+ existingData.uid !== user?.uid ||
47
+ existingData.fcmToken !== token;
48
+
49
+ if (shouldUpdate) {
50
+ await docRef.set(
51
+ {
52
+ ...DATA,
53
+ uid: user?.uid || '',
54
+ fcmToken: token,
55
+ createdAt:
56
+ existingData?.createdAt ?? firestore.FieldValue.serverTimestamp(),
57
+ updatedAt: firestore.FieldValue.serverTimestamp(),
58
+ },
59
+ { merge: true }
60
+ );
61
+ console.log('Device added or updated!');
62
+ } else {
63
+ console.log('Device update not needed, UID and FCM token match.');
64
+ }
65
+ },
66
+ {
67
+ onError: (error: Error) => {
68
+ Alert.show({
69
+ title: error.name,
70
+ description: error?.message,
71
+ });
72
+ },
73
+ }
74
+ );
75
+
76
+ return {
77
+ saveDevice: mutation.mutate,
78
+ isLoadingDevice: mutation.isLoading,
79
+ };
80
+ };
@@ -0,0 +1,21 @@
1
+ declare module 'react-native-config' {
2
+ export interface NativeConfig {
3
+ ENV: 'local' | 'dev' | 'production';
4
+ AMPLITUDE_API_KEY?: string;
5
+ GOOGLE_PLACES_API_KEY?: string;
6
+ SQUARE_APPLICATION_ID?: string;
7
+ CHILDS_SERVER_ENV: string;
8
+ SQUARE_BASE_URL: string;
9
+ BASE_URL: string;
10
+ SQUARE_BASE_URL: string;
11
+ MIXPANEL_TOKEN: string;
12
+ APP_NAME: string;
13
+ URL_SCHEME: string;
14
+ BUNDLE_IDENTIFIER: string;
15
+ PLAY_STORE_URL?: string;
16
+ APP_STORE_URL?: string;
17
+ }
18
+
19
+ export const Config: NativeConfig;
20
+ export default Config;
21
+ }