@kiosinc/commons-rn 0.15.6 → 0.16.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 (87) hide show
  1. package/README.md +20 -0
  2. package/lib/commonjs/constants/index.js +1 -1
  3. package/lib/commonjs/constants/index.js.map +1 -1
  4. package/lib/commonjs/hooks/index.js +0 -7
  5. package/lib/commonjs/hooks/index.js.map +1 -1
  6. package/lib/commonjs/hooks/useCustomer.js +0 -90
  7. package/lib/commonjs/hooks/useCustomer.js.map +1 -1
  8. package/lib/commonjs/providers/customer/CustomerProvider.js +214 -0
  9. package/lib/commonjs/providers/customer/CustomerProvider.js.map +1 -0
  10. package/lib/commonjs/providers/customer/README.md +122 -0
  11. package/lib/commonjs/providers/customer/classifyLoyaltyError.js +19 -0
  12. package/lib/commonjs/providers/customer/classifyLoyaltyError.js.map +1 -0
  13. package/lib/commonjs/providers/customer/index.js +27 -0
  14. package/lib/commonjs/providers/customer/index.js.map +1 -0
  15. package/lib/commonjs/providers/customer/types.js +2 -0
  16. package/lib/commonjs/providers/customer/types.js.map +1 -0
  17. package/lib/commonjs/providers/customer/useLoyalty.js +25 -0
  18. package/lib/commonjs/providers/customer/useLoyalty.js.map +1 -0
  19. package/lib/commonjs/providers/customer/useSquareCustomer.js +21 -0
  20. package/lib/commonjs/providers/customer/useSquareCustomer.js.map +1 -0
  21. package/lib/commonjs/providers/index.js +19 -0
  22. package/lib/commonjs/providers/index.js.map +1 -1
  23. package/lib/commonjs/screens/SavedCards/SavedCards.js +9 -4
  24. package/lib/commonjs/screens/SavedCards/SavedCards.js.map +1 -1
  25. package/lib/module/constants/index.js +1 -1
  26. package/lib/module/constants/index.js.map +1 -1
  27. package/lib/module/hooks/index.js +0 -1
  28. package/lib/module/hooks/index.js.map +1 -1
  29. package/lib/module/hooks/useCustomer.js +1 -91
  30. package/lib/module/hooks/useCustomer.js.map +1 -1
  31. package/lib/module/providers/customer/CustomerProvider.js +204 -0
  32. package/lib/module/providers/customer/CustomerProvider.js.map +1 -0
  33. package/lib/module/providers/customer/README.md +122 -0
  34. package/lib/module/providers/customer/classifyLoyaltyError.js +13 -0
  35. package/lib/module/providers/customer/classifyLoyaltyError.js.map +1 -0
  36. package/lib/module/providers/customer/index.js +4 -0
  37. package/lib/module/providers/customer/index.js.map +1 -0
  38. package/lib/module/providers/customer/types.js +2 -0
  39. package/lib/module/providers/customer/types.js.map +1 -0
  40. package/lib/module/providers/customer/useLoyalty.js +18 -0
  41. package/lib/module/providers/customer/useLoyalty.js.map +1 -0
  42. package/lib/module/providers/customer/useSquareCustomer.js +14 -0
  43. package/lib/module/providers/customer/useSquareCustomer.js.map +1 -0
  44. package/lib/module/providers/index.js +1 -0
  45. package/lib/module/providers/index.js.map +1 -1
  46. package/lib/module/screens/SavedCards/SavedCards.js +10 -5
  47. package/lib/module/screens/SavedCards/SavedCards.js.map +1 -1
  48. package/lib/typescript/src/constants/index.d.ts.map +1 -1
  49. package/lib/typescript/src/hooks/index.d.ts +0 -1
  50. package/lib/typescript/src/hooks/index.d.ts.map +1 -1
  51. package/lib/typescript/src/hooks/useCustomer.d.ts +0 -16
  52. package/lib/typescript/src/hooks/useCustomer.d.ts.map +1 -1
  53. package/lib/typescript/src/providers/customer/CustomerProvider.d.ts +9 -0
  54. package/lib/typescript/src/providers/customer/CustomerProvider.d.ts.map +1 -0
  55. package/lib/typescript/src/providers/customer/classifyLoyaltyError.d.ts +3 -0
  56. package/lib/typescript/src/providers/customer/classifyLoyaltyError.d.ts.map +1 -0
  57. package/lib/typescript/src/providers/customer/index.d.ts +5 -0
  58. package/lib/typescript/src/providers/customer/index.d.ts.map +1 -0
  59. package/lib/typescript/src/providers/customer/types.d.ts +25 -0
  60. package/lib/typescript/src/providers/customer/types.d.ts.map +1 -0
  61. package/lib/typescript/src/providers/customer/useLoyalty.d.ts +11 -0
  62. package/lib/typescript/src/providers/customer/useLoyalty.d.ts.map +1 -0
  63. package/lib/typescript/src/providers/customer/useSquareCustomer.d.ts +7 -0
  64. package/lib/typescript/src/providers/customer/useSquareCustomer.d.ts.map +1 -0
  65. package/lib/typescript/src/providers/index.d.ts +2 -0
  66. package/lib/typescript/src/providers/index.d.ts.map +1 -1
  67. package/lib/typescript/src/screens/SavedCards/SavedCards.d.ts.map +1 -1
  68. package/package.json +1 -1
  69. package/src/constants/index.ts +1 -1
  70. package/src/hooks/index.ts +0 -1
  71. package/src/hooks/useCustomer.ts +0 -134
  72. package/src/providers/customer/CustomerProvider.tsx +272 -0
  73. package/src/providers/customer/README.md +122 -0
  74. package/src/providers/customer/classifyLoyaltyError.ts +25 -0
  75. package/src/providers/customer/index.ts +4 -0
  76. package/src/providers/customer/types.ts +34 -0
  77. package/src/providers/customer/useLoyalty.ts +27 -0
  78. package/src/providers/customer/useSquareCustomer.ts +19 -0
  79. package/src/providers/index.ts +6 -0
  80. package/src/screens/SavedCards/SavedCards.tsx +10 -3
  81. package/lib/commonjs/hooks/useCheckCustomer.js +0 -56
  82. package/lib/commonjs/hooks/useCheckCustomer.js.map +0 -1
  83. package/lib/module/hooks/useCheckCustomer.js +0 -48
  84. package/lib/module/hooks/useCheckCustomer.js.map +0 -1
  85. package/lib/typescript/src/hooks/useCheckCustomer.d.ts +0 -4
  86. package/lib/typescript/src/hooks/useCheckCustomer.d.ts.map +0 -1
  87. package/src/hooks/useCheckCustomer.ts +0 -42
package/README.md CHANGED
@@ -18,6 +18,26 @@ import { View, Text, Button } from '@kiosinc/commons-rn';
18
18
 
19
19
  ```
20
20
 
21
+ ## Migration
22
+
23
+ ### CustomerProvider (breaking change — next release)
24
+
25
+ The following hooks have been **removed** from `useCustomerQueries()`:
26
+
27
+ | Removed | Replacement |
28
+ |---|---|
29
+ | `useFetchSquareProgram` | `useSquareCustomer()` from `CustomerProvider` |
30
+ | `useConnectSquareCustomer` | handled internally by `CustomerProvider` |
31
+ | `useFetchSquareLoyalty` | `useLoyalty()` from `CustomerProvider` |
32
+ | `useConnectSquareLoyalty` | handled internally by `CustomerProvider` |
33
+ | `useCheckCustomer` (hook) | handled internally by `CustomerProvider` |
34
+
35
+ **Consumers that need updating before upgrading:**
36
+
37
+ - `remy` — `src/screens/Home/DevicesTab/Shop/CheckoutSummary.tsx` uses `useFetchSquareProgram`. Replace with `useSquareCustomer()` and wrap the navigator with `<CustomerProvider autoEnroll={false} loyaltyEnabled={...}>`.
38
+
39
+ See `src/providers/customer/README.md` for full setup and usage docs.
40
+
21
41
  ## Contributing
22
42
 
23
43
  See the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the repository and the development workflow.
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.TERMS_OF_SERVICE = exports.PRIVACY_POLICY = exports.MMKV_KEYS = exports.EMAIL_REGEX = void 0;
7
- const EMAIL_REGEX = exports.EMAIL_REGEX = /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$|^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[^@\s]+\.[^@\s]+$/;
7
+ const EMAIL_REGEX = exports.EMAIL_REGEX = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$|^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[^@\s]+\.[^@\s]+$/;
8
8
  const MMKV_KEYS = exports.MMKV_KEYS = {
9
9
  BUSINESS_ID: 'BUSINESS_ID'
10
10
  };
@@ -1 +1 @@
1
- {"version":3,"names":["EMAIL_REGEX","exports","MMKV_KEYS","BUSINESS_ID","PRIVACY_POLICY","TERMS_OF_SERVICE"],"sourceRoot":"../../../src","sources":["constants/index.ts"],"mappings":";;;;;;AAAO,MAAMA,WAAW,GAAAC,OAAA,CAAAD,WAAA,GACtB,4LAA4L;AAEvL,MAAME,SAAS,GAAAD,OAAA,CAAAC,SAAA,GAAG;EACvBC,WAAW,EAAE;AACf,CAAC;AAEM,MAAMC,cAAc,GAAAH,OAAA,CAAAG,cAAA,GAAG,wCAAwC;AAC/D,MAAMC,gBAAgB,GAAAJ,OAAA,CAAAI,gBAAA,GAAG,oCAAoC"}
1
+ {"version":3,"names":["EMAIL_REGEX","exports","MMKV_KEYS","BUSINESS_ID","PRIVACY_POLICY","TERMS_OF_SERVICE"],"sourceRoot":"../../../src","sources":["constants/index.ts"],"mappings":";;;;;;AAAO,MAAMA,WAAW,GAAAC,OAAA,CAAAD,WAAA,GACtB,0LAA0L;AAErL,MAAME,SAAS,GAAAD,OAAA,CAAAC,SAAA,GAAG;EACvBC,WAAW,EAAE;AACf,CAAC;AAEM,MAAMC,cAAc,GAAAH,OAAA,CAAAG,cAAA,GAAG,wCAAwC;AAC/D,MAAMC,gBAAgB,GAAAJ,OAAA,CAAAI,gBAAA,GAAG,oCAAoC"}
@@ -27,12 +27,6 @@ Object.defineProperty(exports, "useBusinesses", {
27
27
  return _useBusinesses.useBusinesses;
28
28
  }
29
29
  });
30
- Object.defineProperty(exports, "useCheckCustomer", {
31
- enumerable: true,
32
- get: function () {
33
- return _useCheckCustomer.useCheckCustomer;
34
- }
35
- });
36
30
  Object.defineProperty(exports, "useCreateBusiness", {
37
31
  enumerable: true,
38
32
  get: function () {
@@ -79,7 +73,6 @@ var _useDeactivateAccount = require("./useDeactivateAccount");
79
73
  var _useTermsOfService = require("./useTermsOfService");
80
74
  var _useAuth = require("./useAuth");
81
75
  var _useCustomer = require("./useCustomer");
82
- var _useCheckCustomer = require("./useCheckCustomer");
83
76
  var _useAppVersionCheck = require("./useAppVersionCheck");
84
77
  var _useBusinesses = require("./useBusinesses");
85
78
  var _useLogout = require("./useLogout");
@@ -1 +1 @@
1
- {"version":3,"names":["_useDeactivateAccount","require","_useTermsOfService","_useAuth","_useCustomer","_useCheckCustomer","_useAppVersionCheck","_useBusinesses","_useLogout","_useCreateBusiness","_useSaveDevice","_useFirebaseMediaUrl"],"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;AACA,IAAAU,oBAAA,GAAAV,OAAA"}
1
+ {"version":3,"names":["_useDeactivateAccount","require","_useTermsOfService","_useAuth","_useCustomer","_useAppVersionCheck","_useBusinesses","_useLogout","_useCreateBusiness","_useSaveDevice","_useFirebaseMediaUrl"],"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,mBAAA,GAAAJ,OAAA;AACA,IAAAK,cAAA,GAAAL,OAAA;AACA,IAAAM,UAAA,GAAAN,OAAA;AACA,IAAAO,kBAAA,GAAAP,OAAA;AACA,IAAAQ,cAAA,GAAAR,OAAA;AACA,IAAAS,oBAAA,GAAAT,OAAA"}
@@ -4,11 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.useCustomerQueries = void 0;
7
- var _react = require("react");
8
7
  var _components = require("../components");
9
8
  var _reactQuery = require("@tanstack/react-query");
10
9
  var _firestore = _interopRequireDefault(require("@react-native-firebase/firestore"));
11
- var _reactNativeUuid = _interopRequireDefault(require("react-native-uuid"));
12
10
  var _customer = require("../api/customer");
13
11
  var _reactNativeMmkv = require("react-native-mmkv");
14
12
  var _constants = require("../constants");
@@ -20,11 +18,6 @@ const useCustomerQueries = () => {
20
18
  const user = (0, _auth.default)().currentUser;
21
19
  const [selectedBusinessId] = (0, _reactNativeMmkv.useMMKVString)(_constants.MMKV_KEYS.BUSINESS_ID);
22
20
  const isLoggedIn = user && !user.isAnonymous;
23
- (0, _react.useEffect)(() => {
24
- if (!isLoggedIn) {
25
- queryClient.invalidateQueries([_queryKeys.queryKeys.LOYALTY, user?.uid]);
26
- }
27
- }, [isLoggedIn, queryClient, user?.uid]);
28
21
  return {
29
22
  useFetchCustomer: () => (0, _reactQuery.useQuery)([_queryKeys.queryKeys.CUSTOMER, user?.uid], async () => {
30
23
  if (isLoggedIn) {
@@ -119,38 +112,6 @@ const useCustomerQueries = () => {
119
112
  }, {
120
113
  enabled: Boolean(isLoggedIn)
121
114
  }),
122
- useFetchSquareProgram: queryOptions => (0, _reactQuery.useQuery)([_queryKeys.queryKeys.PROGRAM, user?.uid, selectedBusinessId], async () => {
123
- if (isLoggedIn) {
124
- const programs = await (0, _firestore.default)().collection(`customers/${user?.uid}/programs`).where('type', '==', 'customer').where('businessId', '==', selectedBusinessId).orderBy('updated', 'asc').get();
125
- if (programs.docs.length > 0) {
126
- return programs.docs.map(program => program.data())[0];
127
- } else {
128
- return null;
129
- }
130
- } else {
131
- return null;
132
- }
133
- }, {
134
- enabled: Boolean(isLoggedIn && selectedBusinessId),
135
- ...queryOptions
136
- }),
137
- useFetchSquareLoyalty: queryOptions => (0, _reactQuery.useQuery)([_queryKeys.queryKeys.LOYALTY, user?.uid ?? 'no-user', selectedBusinessId ?? 'no-biz'], async () => {
138
- const response = await (0, _customer.fetchSquareLoyalty)(user.uid, selectedBusinessId);
139
- if (response?.data?.error) {
140
- throw new Error(response.data.error.message || 'Unknown error occurred');
141
- }
142
- return response;
143
- }, {
144
- enabled: Boolean(isLoggedIn && user?.uid && selectedBusinessId),
145
- refetchOnWindowFocus: false,
146
- refetchOnReconnect: false,
147
- refetchOnMount: false,
148
- staleTime: 5 * 60 * 1000,
149
- cacheTime: 30 * 60 * 1000,
150
- retry: 0,
151
- select: res => res?.data,
152
- ...(queryOptions || {})
153
- }),
154
115
  useSaveCustomerCard: () => {
155
116
  const mutation = (0, _reactQuery.useMutation)(async data => {
156
117
  if (isLoggedIn) {
@@ -194,57 +155,6 @@ const useCustomerQueries = () => {
194
155
  disableCardLoading: mutation.isLoading
195
156
  };
196
157
  },
197
- useConnectSquareLoyalty: () => {
198
- const mutation = (0, _reactQuery.useMutation)(async () => {
199
- if (isLoggedIn && selectedBusinessId) {
200
- const response = await (0, _customer.connectSquareLoyalty)(user?.uid, {
201
- businessId: selectedBusinessId,
202
- idempotentKey: _reactNativeUuid.default.v4(),
203
- uid: user?.uid
204
- });
205
- if (response?.data?.error) {
206
- throw new Error(response.data.error.message || 'Unknown error occurred');
207
- }
208
- return response;
209
- }
210
- return null;
211
- }, {
212
- onError: err => _components.Alert.show({
213
- title: err?.code ? 'Code ' + err?.code : '',
214
- description: err?.message
215
- }),
216
- onSuccess: () => {
217
- queryClient.invalidateQueries([_queryKeys.queryKeys.LOYALTY, user?.uid]);
218
- }
219
- });
220
- return {
221
- connectSquareLoyalty: mutation.mutate,
222
- connectLoyaltyLoading: mutation.isLoading
223
- };
224
- },
225
- useConnectSquareCustomer: () => {
226
- const mutation = (0, _reactQuery.useMutation)(async () => {
227
- if (isLoggedIn && selectedBusinessId) {
228
- await (0, _customer.connectSquareCustomer)(user?.uid, {
229
- businessId: selectedBusinessId,
230
- idempotentKey: _reactNativeUuid.default.v4(),
231
- uid: user?.uid
232
- });
233
- }
234
- }, {
235
- onError: err => _components.Alert.show({
236
- title: 'Code ' + err?.code,
237
- description: err?.message
238
- }),
239
- onSuccess: () => {
240
- queryClient.invalidateQueries([_queryKeys.queryKeys.PROGRAM, user?.uid]);
241
- }
242
- });
243
- return {
244
- connectSquare: mutation.mutate,
245
- connectSquareLoading: mutation.isLoading
246
- };
247
- },
248
158
  useFetchLoyaltyRewards: options => (0, _reactQuery.useQuery)([_queryKeys.queryKeys.REWARDS, selectedBusinessId], async () => {
249
159
  if (selectedBusinessId) return await (0, _customer.fetchLoyaltyRewards)(selectedBusinessId);else {
250
160
  return {};
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_components","_reactQuery","_firestore","_interopRequireDefault","_reactNativeUuid","_customer","_reactNativeMmkv","_constants","_queryKeys","_auth","obj","__esModule","default","useCustomerQueries","queryClient","useQueryClient","user","firebase","currentUser","selectedBusinessId","useMMKVString","MMKV_KEYS","BUSINESS_ID","isLoggedIn","isAnonymous","useEffect","invalidateQueries","queryKeys","LOYALTY","uid","useFetchCustomer","useQuery","CUSTOMER","getCustomer","select","data","customer","useCreateCustomer","mutation","useMutation","response","createCustomer","onError","err","Alert","show","title","code","description","message","createCustomerHook","mutateAsync","createCustomerLoading","isLoading","useUpdateCustomer","props","updateCustomerProfile","updateCustomer","mutate","updateCustomerLoading","useSaveCustomerAddress","address","saveCustomerAddress","useSaveAddress","saveAddressLoading","useFetchSavedCards","CARDS","payments","firestore","collection","orderBy","where","get","docs","length","map","payment","id","enabled","Boolean","useFetchSquareProgram","queryOptions","PROGRAM","programs","program","useFetchSquareLoyalty","fetchSquareLoyalty","error","Error","refetchOnWindowFocus","refetchOnReconnect","refetchOnMount","staleTime","cacheTime","retry","res","useSaveCustomerCard","saveCustomerCard","onSuccess","saveCard","saveCardLoading","useDisableCard","documentId","doc","update","isActive","disableCard","disableCardLoading","useConnectSquareLoyalty","connectSquareLoyalty","businessId","idempotentKey","uuid","v4","connectLoyaltyLoading","useConnectSquareCustomer","connectSquareCustomer","connectSquare","connectSquareLoading","useFetchLoyaltyRewards","options","REWARDS","fetchLoyaltyRewards","exports"],"sourceRoot":"../../../src","sources":["hooks/useCustomer.ts"],"mappings":"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"}
1
+ {"version":3,"names":["_components","require","_reactQuery","_firestore","_interopRequireDefault","_customer","_reactNativeMmkv","_constants","_queryKeys","_auth","obj","__esModule","default","useCustomerQueries","queryClient","useQueryClient","user","firebase","currentUser","selectedBusinessId","useMMKVString","MMKV_KEYS","BUSINESS_ID","isLoggedIn","isAnonymous","useFetchCustomer","useQuery","queryKeys","CUSTOMER","uid","getCustomer","select","data","customer","useCreateCustomer","mutation","useMutation","response","createCustomer","invalidateQueries","onError","err","Alert","show","title","code","description","message","createCustomerHook","mutateAsync","createCustomerLoading","isLoading","useUpdateCustomer","props","updateCustomerProfile","updateCustomer","mutate","updateCustomerLoading","useSaveCustomerAddress","address","saveCustomerAddress","useSaveAddress","saveAddressLoading","useFetchSavedCards","CARDS","payments","firestore","collection","orderBy","where","get","docs","length","map","payment","id","enabled","Boolean","useSaveCustomerCard","saveCustomerCard","onSuccess","saveCard","saveCardLoading","useDisableCard","documentId","doc","update","isActive","disableCard","disableCardLoading","useFetchLoyaltyRewards","options","REWARDS","fetchLoyaltyRewards","exports"],"sourceRoot":"../../../src","sources":["hooks/useCustomer.ts"],"mappings":"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"}
@@ -0,0 +1,214 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.CustomerProvider = exports.CustomerContext = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _auth = _interopRequireDefault(require("@react-native-firebase/auth"));
9
+ var _firestore = _interopRequireDefault(require("@react-native-firebase/firestore"));
10
+ var _reactNativeMmkv = require("react-native-mmkv");
11
+ var _reactQuery = require("@tanstack/react-query");
12
+ var _reactNativeUuid = _interopRequireDefault(require("react-native-uuid"));
13
+ var _customer = require("../../api/customer");
14
+ var _constants = require("../../constants");
15
+ var _queryKeys = require("../../hooks/queryKeys");
16
+ var _classifyLoyaltyError = require("./classifyLoyaltyError");
17
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
19
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
20
+ const customerSetupAttempted = new Set();
21
+ const CustomerContext = exports.CustomerContext = /*#__PURE__*/(0, _react.createContext)(null);
22
+ const CustomerProvider = ({
23
+ children,
24
+ autoEnroll,
25
+ loyaltyEnabled
26
+ }) => {
27
+ const queryClient = (0, _reactQuery.useQueryClient)();
28
+ const [selectedBusinessId] = (0, _reactNativeMmkv.useMMKVString)(_constants.MMKV_KEYS.BUSINESS_ID);
29
+ const [uid, setUid] = (0, _react.useState)(null);
30
+ const uidRef = _react.default.useRef(null);
31
+ const [customerStatus, setCustomerStatus] = (0, _react.useState)('idle');
32
+ const [squareCustomerId, setSquareCustomerId] = (0, _react.useState)(null);
33
+ const [customerError, setCustomerError] = (0, _react.useState)(null);
34
+ const [loyaltyStatus, setLoyaltyStatus] = (0, _react.useState)('idle');
35
+ const [loyalty, setLoyaltyData] = (0, _react.useState)(null);
36
+ const [loyaltyError, setLoyaltyError] = (0, _react.useState)(null);
37
+ const resetState = (0, _react.useCallback)(userId => {
38
+ setCustomerStatus('idle');
39
+ setSquareCustomerId(null);
40
+ setCustomerError(null);
41
+ setLoyaltyStatus('idle');
42
+ setLoyaltyData(null);
43
+ setLoyaltyError(null);
44
+ if (userId) {
45
+ for (const key of [...customerSetupAttempted]) {
46
+ if (key.startsWith(`${userId}:`)) {
47
+ customerSetupAttempted.delete(key);
48
+ }
49
+ }
50
+ }
51
+ queryClient.removeQueries([_queryKeys.queryKeys.LOYALTY]);
52
+ queryClient.removeQueries([_queryKeys.queryKeys.PROGRAM]);
53
+ }, [queryClient]);
54
+ (0, _react.useEffect)(() => {
55
+ const unsubscribe = (0, _auth.default)().onAuthStateChanged(user => {
56
+ const loggedIn = Boolean(user && !user.isAnonymous);
57
+ if (loggedIn && user) {
58
+ setUid(user.uid);
59
+ uidRef.current = user.uid;
60
+ } else {
61
+ resetState(uidRef.current);
62
+ setUid(null);
63
+ uidRef.current = null;
64
+ }
65
+ });
66
+ return unsubscribe;
67
+ // eslint-disable-next-line react-hooks/exhaustive-deps
68
+ }, []);
69
+ (0, _react.useEffect)(() => {
70
+ if (!uid || !selectedBusinessId) {
71
+ return;
72
+ }
73
+ const key = `${uid}:${selectedBusinessId}`;
74
+ if (customerSetupAttempted.has(key)) {
75
+ return;
76
+ }
77
+ customerSetupAttempted.add(key);
78
+ runCustomerSetup(uid, selectedBusinessId);
79
+ }, [uid, selectedBusinessId]);
80
+ const runCustomerSetup = async (userId, businessId) => {
81
+ const key = `${userId}:${businessId}`;
82
+ setCustomerStatus('loading');
83
+ try {
84
+ const customerRes = await (0, _customer.getCustomer)(userId);
85
+ if (customerRes?.data?.customer === null) {
86
+ await (0, _customer.createCustomer)({
87
+ uid: userId
88
+ });
89
+ }
90
+ const programs = await (0, _firestore.default)().collection(`customers/${userId}/programs`).where('type', '==', 'customer').where('businessId', '==', businessId).get();
91
+ let custId = null;
92
+ if (programs.empty) {
93
+ await (0, _customer.connectSquareCustomer)(userId, {
94
+ businessId,
95
+ uid: userId,
96
+ idempotentKey: _reactNativeUuid.default.v4()
97
+ });
98
+ const updated = await (0, _firestore.default)().collection(`customers/${userId}/programs`).where('type', '==', 'customer').where('businessId', '==', businessId).get();
99
+ if (!updated.empty) {
100
+ custId = updated.docs[0].data().linkedObjectId ?? null;
101
+ }
102
+ } else {
103
+ custId = programs.docs[0].data().linkedObjectId ?? null;
104
+ }
105
+ setSquareCustomerId(custId);
106
+ setCustomerStatus('ready');
107
+ console.log(`[CustomerProvider] Customer ready for ${key}`);
108
+ } catch (err) {
109
+ const msg = err instanceof Error ? err.message : String(err);
110
+ console.warn(`[CustomerProvider] Customer setup failed for ${key}: ${msg}`);
111
+ customerSetupAttempted.delete(key);
112
+ setCustomerError(msg);
113
+ setCustomerStatus('error');
114
+ }
115
+ };
116
+ const fetchLoyaltyData = (0, _react.useCallback)(async (userId, businessId) => {
117
+ try {
118
+ const response = await (0, _customer.fetchSquareLoyalty)(userId, businessId);
119
+ if (response?.data?.error) {
120
+ throw new Error(response.data.error.message || 'Unknown loyalty error');
121
+ }
122
+ setLoyaltyData(response?.data ?? null);
123
+ setLoyaltyStatus('ready');
124
+ setLoyaltyError(null);
125
+ } catch (err) {
126
+ const msg = err instanceof Error ? err.message : String(err);
127
+ console.log(`[CustomerProvider] Loyalty fetch failed: ${msg}`);
128
+ if (msg.includes('does not have loyalty')) {
129
+ if (autoEnroll) {
130
+ await attemptEnroll(userId, businessId);
131
+ } else {
132
+ setLoyaltyStatus('not_enrolled');
133
+ }
134
+ } else {
135
+ setLoyaltyError(msg);
136
+ setLoyaltyStatus('error');
137
+ }
138
+ }
139
+ },
140
+ // eslint-disable-next-line react-hooks/exhaustive-deps
141
+ [autoEnroll]);
142
+ const attemptEnroll = (0, _react.useCallback)(async (userId, businessId) => {
143
+ setLoyaltyStatus('enrolling');
144
+ try {
145
+ const response = await (0, _customer.connectSquareLoyalty)(userId, {
146
+ businessId,
147
+ uid: userId,
148
+ idempotentKey: _reactNativeUuid.default.v4()
149
+ });
150
+ if (response?.data?.error) {
151
+ throw new Error(response.data.error.message || 'Unknown connect error');
152
+ }
153
+ await fetchLoyaltyData(userId, businessId);
154
+ } catch (err) {
155
+ const msg = err instanceof Error ? err.message : String(err);
156
+ console.log(`[CustomerProvider] Loyalty connect failed: ${msg}`);
157
+ const outcome = (0, _classifyLoyaltyError.classifyLoyaltyError)(msg);
158
+ if (outcome === 'refetch') {
159
+ await fetchLoyaltyData(userId, businessId);
160
+ } else if (outcome === 'duplicate') {
161
+ setLoyaltyError('Multiple account records found. Contact support.');
162
+ setLoyaltyStatus('error');
163
+ } else if (outcome === 'no_loyalty') {
164
+ setLoyaltyStatus('no_loyalty');
165
+ } else {
166
+ setLoyaltyError(msg);
167
+ setLoyaltyStatus('error');
168
+ }
169
+ }
170
+ }, [fetchLoyaltyData]);
171
+ const runLoyaltySetup = (0, _react.useCallback)(async (userId, businessId) => {
172
+ setLoyaltyStatus('loading');
173
+ await fetchLoyaltyData(userId, businessId);
174
+ }, [fetchLoyaltyData]);
175
+ (0, _react.useEffect)(() => {
176
+ if (customerStatus !== 'ready' || !uid || !selectedBusinessId) {
177
+ return;
178
+ }
179
+ if (!loyaltyEnabled) {
180
+ setLoyaltyStatus('no_loyalty');
181
+ return;
182
+ }
183
+ runLoyaltySetup(uid, selectedBusinessId);
184
+ // eslint-disable-next-line react-hooks/exhaustive-deps
185
+ }, [customerStatus, loyaltyEnabled, uid, selectedBusinessId]);
186
+ const enroll = (0, _react.useCallback)(() => {
187
+ if (!uid || !selectedBusinessId || loyaltyStatus === 'enrolling') {
188
+ return;
189
+ }
190
+ attemptEnroll(uid, selectedBusinessId);
191
+ }, [uid, selectedBusinessId, loyaltyStatus, attemptEnroll]);
192
+ const refetchLoyalty = (0, _react.useCallback)(() => {
193
+ if (!uid || !selectedBusinessId) {
194
+ return;
195
+ }
196
+ fetchLoyaltyData(uid, selectedBusinessId);
197
+ }, [uid, selectedBusinessId, fetchLoyaltyData]);
198
+ const value = {
199
+ customerStatus,
200
+ squareCustomerId,
201
+ customerError,
202
+ loyaltyStatus,
203
+ loyalty,
204
+ points: loyalty?.program?.loyaltyDetails?.points ?? 0,
205
+ loyaltyError,
206
+ enroll,
207
+ refetchLoyalty
208
+ };
209
+ return /*#__PURE__*/_react.default.createElement(CustomerContext.Provider, {
210
+ value: value
211
+ }, children);
212
+ };
213
+ exports.CustomerProvider = CustomerProvider;
214
+ //# sourceMappingURL=CustomerProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_auth","_interopRequireDefault","_firestore","_reactNativeMmkv","_reactQuery","_reactNativeUuid","_customer","_constants","_queryKeys","_classifyLoyaltyError","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","customerSetupAttempted","Set","CustomerContext","exports","createContext","CustomerProvider","children","autoEnroll","loyaltyEnabled","queryClient","useQueryClient","selectedBusinessId","useMMKVString","MMKV_KEYS","BUSINESS_ID","uid","setUid","useState","uidRef","React","useRef","customerStatus","setCustomerStatus","squareCustomerId","setSquareCustomerId","customerError","setCustomerError","loyaltyStatus","setLoyaltyStatus","loyalty","setLoyaltyData","loyaltyError","setLoyaltyError","resetState","useCallback","userId","key","startsWith","delete","removeQueries","queryKeys","LOYALTY","PROGRAM","useEffect","unsubscribe","auth","onAuthStateChanged","user","loggedIn","Boolean","isAnonymous","current","add","runCustomerSetup","businessId","customerRes","getCustomer","data","customer","createCustomer","programs","firestore","collection","where","custId","empty","connectSquareCustomer","idempotentKey","uuid","v4","updated","docs","linkedObjectId","console","log","err","msg","Error","message","String","warn","fetchLoyaltyData","response","fetchSquareLoyalty","error","includes","attemptEnroll","connectSquareLoyalty","outcome","classifyLoyaltyError","runLoyaltySetup","enroll","refetchLoyalty","value","points","program","loyaltyDetails","createElement","Provider"],"sourceRoot":"../../../../src","sources":["providers/customer/CustomerProvider.tsx"],"mappings":"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"}
@@ -0,0 +1,122 @@
1
+ # CustomerProvider
2
+
3
+ Owns the full customer + loyalty lifecycle. Replaces the old scattered hooks (`useCheckCustomer`, `useFetchSquareLoyalty`, `useConnectSquareLoyalty`, `useFetchSquareProgram`, `useConnectSquareCustomer`).
4
+
5
+ ## What it does
6
+
7
+ 1. Subscribes to Firebase auth — starts setup on login, clears state on logout
8
+ 2. Ensures the customer record exists (`getCustomer` / `createCustomer`)
9
+ 3. Ensures the Square customer program doc exists (`connectSquareCustomer`) — guarded by a module-level `Set` so it never fires twice for the same `uid:businessId`, even across remounts
10
+ 4. Fetches loyalty data — on "does not have loyalty":
11
+ - `autoEnroll=true` (kiosk): calls `connectSquareLoyalty` automatically
12
+ - `autoEnroll=false` (Gusteau): sets `not_enrolled`, waits for `enroll()` call
13
+ 5. Classifies all `connectSquareLoyalty` errors so checkout is never blocked
14
+
15
+ ## Setup
16
+
17
+ Wrap your authenticated navigator with the provider:
18
+
19
+ ```tsx
20
+ import { CustomerProvider } from '@kiosinc/commons-rn';
21
+
22
+ // autoEnroll=true for kiosk (auto-enroll on login)
23
+ // autoEnroll=false for Gusteau (manual enroll via button)
24
+ <CustomerProvider
25
+ autoEnroll
26
+ loyaltyEnabled={isSquareLoyaltyEnabled}>
27
+ <YourNavigator />
28
+ </CustomerProvider>
29
+ ```
30
+
31
+ `businessId` is read internally from MMKV (`MMKV_KEYS.BUSINESS_ID`) — no prop needed.
32
+
33
+ ## Consumer hooks
34
+
35
+ ### `useSquareCustomer()` — for checkout
36
+
37
+ ```tsx
38
+ import { useSquareCustomer } from '@kiosinc/commons-rn';
39
+
40
+ const { squareCustomerId, customerStatus, customerError } = useSquareCustomer();
41
+ ```
42
+
43
+ | Field | Type | Description |
44
+ |---|---|---|
45
+ | `squareCustomerId` | `string \| null` | Pass to `useOptimizedCheckout`. Available even if loyalty is broken. |
46
+ | `customerStatus` | `CustomerStatus` | `idle \| loading \| ready \| error` |
47
+ | `customerError` | `string \| null` | Error message if setup failed |
48
+
49
+ ### `useLoyalty()` — for rewards screens
50
+
51
+ ```tsx
52
+ import { useLoyalty } from '@kiosinc/commons-rn';
53
+
54
+ const {
55
+ loyaltyStatus,
56
+ isReady,
57
+ loyalty,
58
+ points,
59
+ loyaltyError,
60
+ enroll,
61
+ refetchLoyalty,
62
+ } = useLoyalty();
63
+ ```
64
+
65
+ | Field | Type | Description |
66
+ |---|---|---|
67
+ | `loyaltyStatus` | `LoyaltyStatus` | See status machine below |
68
+ | `isReady` | `boolean` | `loyaltyStatus === 'ready'` |
69
+ | `loyalty` | `CustomerLoyalty \| null` | Full loyalty object |
70
+ | `points` | `number` | Available points (0 if not ready) |
71
+ | `loyaltyError` | `string \| null` | Show on error/no_loyalty screens |
72
+ | `enroll()` | `() => void` | Gusteau: call from "Join" button. Noop if already enrolling or autoEnroll=true. |
73
+ | `refetchLoyalty()` | `() => void` | Call after payment to refresh points |
74
+
75
+ ## Status machines
76
+
77
+ ### `customerStatus`
78
+ ```
79
+ idle → loading → ready
80
+ → error
81
+ ```
82
+
83
+ ### `loyaltyStatus`
84
+ ```
85
+ idle → loading → ready
86
+ → not_enrolled (autoEnroll=false, no loyalty account)
87
+ → enrolling → ready
88
+ → error
89
+ → no_loyalty (merchant has no loyalty program)
90
+ → error (duplicate customer docs, etc.)
91
+ ```
92
+
93
+ ## Error handling
94
+
95
+ `connectSquareLoyalty` errors are classified automatically:
96
+
97
+ | Error message | Outcome |
98
+ |---|---|
99
+ | contains `already has` / `ALREADY_EXISTS` / `already exists` | Refetch → `ready` |
100
+ | contains `More than one` / `more than one` | `loyaltyStatus = 'error'`, message: "Multiple account records found. Contact support." |
101
+ | contains `Square Loyalty not enabled` / `not enabled` | `loyaltyStatus = 'no_loyalty'` |
102
+ | anything else | `loyaltyStatus = 'error'`, raw message shown |
103
+
104
+ ## Session reset
105
+
106
+ Provider resets automatically on Firebase auth state change (logout). For kiosk sleep/wake cycles that don't sign out Firebase, sign the user out via `firebase().auth().signOut()` to trigger a full reset.
107
+
108
+ ## Gusteau usage
109
+
110
+ ```tsx
111
+ // In your business selector screen:
112
+ <CustomerProvider autoEnroll={false} loyaltyEnabled={true}>
113
+ <AppNavigator />
114
+ </CustomerProvider>
115
+
116
+ // In your loyalty join screen:
117
+ const { loyaltyStatus, enroll } = useLoyalty();
118
+
119
+ if (loyaltyStatus === 'not_enrolled') {
120
+ return <Button onPress={enroll} title="Join Loyalty Program" />;
121
+ }
122
+ ```
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.classifyLoyaltyError = classifyLoyaltyError;
7
+ function classifyLoyaltyError(message) {
8
+ if (message.includes('already has') || message.includes('ALREADY_EXISTS') || message.toLowerCase().includes('already exists')) {
9
+ return 'refetch';
10
+ }
11
+ if (message.includes('More than one') || message.includes('more than one')) {
12
+ return 'duplicate';
13
+ }
14
+ if (message.includes('Square Loyalty not enabled') || message.toLowerCase().includes('not enabled')) {
15
+ return 'no_loyalty';
16
+ }
17
+ return 'error';
18
+ }
19
+ //# sourceMappingURL=classifyLoyaltyError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["classifyLoyaltyError","message","includes","toLowerCase"],"sourceRoot":"../../../../src","sources":["providers/customer/classifyLoyaltyError.ts"],"mappings":";;;;;;AAMO,SAASA,oBAAoBA,CAACC,OAAe,EAAyB;EAC3E,IACEA,OAAO,CAACC,QAAQ,CAAC,aAAa,CAAC,IAC/BD,OAAO,CAACC,QAAQ,CAAC,gBAAgB,CAAC,IAClCD,OAAO,CAACE,WAAW,CAAC,CAAC,CAACD,QAAQ,CAAC,gBAAgB,CAAC,EAChD;IACA,OAAO,SAAS;EAClB;EACA,IAAID,OAAO,CAACC,QAAQ,CAAC,eAAe,CAAC,IAAID,OAAO,CAACC,QAAQ,CAAC,eAAe,CAAC,EAAE;IAC1E,OAAO,WAAW;EACpB;EACA,IACED,OAAO,CAACC,QAAQ,CAAC,4BAA4B,CAAC,IAC9CD,OAAO,CAACE,WAAW,CAAC,CAAC,CAACD,QAAQ,CAAC,aAAa,CAAC,EAC7C;IACA,OAAO,YAAY;EACrB;EACA,OAAO,OAAO;AAChB"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "CustomerProvider", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _CustomerProvider.CustomerProvider;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "useLoyalty", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _useLoyalty.useLoyalty;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "useSquareCustomer", {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _useSquareCustomer.useSquareCustomer;
22
+ }
23
+ });
24
+ var _CustomerProvider = require("./CustomerProvider");
25
+ var _useSquareCustomer = require("./useSquareCustomer");
26
+ var _useLoyalty = require("./useLoyalty");
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_CustomerProvider","require","_useSquareCustomer","_useLoyalty"],"sourceRoot":"../../../../src","sources":["providers/customer/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,iBAAA,GAAAC,OAAA;AACA,IAAAC,kBAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=types.js.map