@kiosinc/commons-rn 0.15.2 → 0.15.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/hooks/index.js +6 -0
- package/lib/commonjs/hooks/index.js.map +1 -1
- package/lib/commonjs/hooks/useAuth.js +25 -10
- package/lib/commonjs/hooks/useAuth.js.map +1 -1
- package/lib/commonjs/hooks/useTermsOfService.js +25 -19
- package/lib/commonjs/hooks/useTermsOfService.js.map +1 -1
- package/lib/module/hooks/index.js +1 -1
- package/lib/module/hooks/index.js.map +1 -1
- package/lib/module/hooks/useAuth.js +25 -10
- package/lib/module/hooks/useAuth.js.map +1 -1
- package/lib/module/hooks/useTermsOfService.js +24 -20
- package/lib/module/hooks/useTermsOfService.js.map +1 -1
- package/lib/typescript/src/hooks/index.d.ts +1 -1
- package/lib/typescript/src/hooks/index.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useAuth.d.ts +1 -1
- package/lib/typescript/src/hooks/useAuth.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useTermsOfService.d.ts +1 -0
- package/lib/typescript/src/hooks/useTermsOfService.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/hooks/index.ts +1 -1
- package/src/hooks/useAuth.ts +30 -10
- package/src/hooks/useTermsOfService.ts +25 -17
|
@@ -3,6 +3,12 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
Object.defineProperty(exports, "acceptTOS", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _useTermsOfService.acceptTOS;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
6
12
|
Object.defineProperty(exports, "useAppVersionCheck", {
|
|
7
13
|
enumerable: true,
|
|
8
14
|
get: function () {
|
|
@@ -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":"
|
|
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"}
|
|
@@ -14,8 +14,11 @@ var _authentication = require("../api/authentication");
|
|
|
14
14
|
var _reactNativeConfig = _interopRequireDefault(require("react-native-config"));
|
|
15
15
|
var _analytics = require("../utils/analytics");
|
|
16
16
|
var _analyticsKeys = require("../constants/analyticsKeys");
|
|
17
|
-
var _customer = require("../api/customer");
|
|
18
17
|
var _queryKeys = require("./queryKeys");
|
|
18
|
+
var _reactNativeMmkv = require("react-native-mmkv");
|
|
19
|
+
var _constants = require("../constants");
|
|
20
|
+
var _useTermsOfService = require("./useTermsOfService");
|
|
21
|
+
var _useBusinesses = require("./useBusinesses");
|
|
19
22
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
20
23
|
let confirmationResult;
|
|
21
24
|
const useAuth = () => {
|
|
@@ -25,13 +28,14 @@ const useAuth = () => {
|
|
|
25
28
|
t
|
|
26
29
|
} = (0, _reactI18next.useTranslation)();
|
|
27
30
|
const queryClient = (0, _reactQuery.useQueryClient)();
|
|
31
|
+
const [, setBusinessId] = (0, _reactNativeMmkv.useMMKVString)(_constants.MMKV_KEYS.BUSINESS_ID);
|
|
28
32
|
return {
|
|
29
33
|
useSignUp: () => (0, _reactQuery.useMutation)(async ({
|
|
30
34
|
params,
|
|
31
35
|
code
|
|
32
36
|
}) => {
|
|
33
37
|
await confirmationResult.confirm(code);
|
|
34
|
-
|
|
38
|
+
return (0, _authentication.signUpAPI)(params);
|
|
35
39
|
}, {
|
|
36
40
|
onError: error => {
|
|
37
41
|
_components.Alert.show({
|
|
@@ -39,7 +43,7 @@ const useAuth = () => {
|
|
|
39
43
|
});
|
|
40
44
|
console.log('error in useSignUp', error);
|
|
41
45
|
},
|
|
42
|
-
onSuccess: async (
|
|
46
|
+
onSuccess: async (data, payload) => {
|
|
43
47
|
try {
|
|
44
48
|
const credential = _auth.default.EmailAuthProvider.credential(payload.params.email, payload.params.password);
|
|
45
49
|
// Reauthenticate user
|
|
@@ -57,14 +61,25 @@ const useAuth = () => {
|
|
|
57
61
|
eventName: 'sign_up_completed'
|
|
58
62
|
});
|
|
59
63
|
|
|
60
|
-
//
|
|
61
|
-
|
|
64
|
+
// Accept TOS on behalf of new user (sets agreementsUpdated — correct field)
|
|
65
|
+
await (0, _useTermsOfService.acceptTOS)((0, _auth.default)().currentUser.uid);
|
|
62
66
|
|
|
63
|
-
//
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
67
|
+
// Write businessId to MMKV so SelectBusiness is skipped for new users
|
|
68
|
+
// POST /business returns { businessId } when a name was provided, {} for gusteau
|
|
69
|
+
const businessId = data?.data?.businessId;
|
|
70
|
+
if (businessId) {
|
|
71
|
+
setBusinessId(businessId);
|
|
72
|
+
} else {
|
|
73
|
+
// Fallback: gusteau signup or API returned empty — fetch from /user/businessData
|
|
74
|
+
const bizResponse = await (0, _useBusinesses.getBusinessData)();
|
|
75
|
+
const firstId = bizResponse?.data?.businesses?.[0]?.id;
|
|
76
|
+
if (firstId) setBusinessId(firstId);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// Invalidate businesses so SelectBusiness (when visited manually) is fresh
|
|
80
|
+
queryClient.invalidateQueries([_queryKeys.queryKeys.BUSINESSES]);
|
|
81
|
+
// Invalidate TOS gate in case it was already cached as `true`
|
|
82
|
+
queryClient.invalidateQueries([(0, _auth.default)().currentUser.uid, _queryKeys.queryKeys.TERMS_AND_CONDITIONS]);
|
|
68
83
|
} catch (error) {
|
|
69
84
|
console.log('error', error);
|
|
70
85
|
// Sign out user if something goes wrong
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactQuery","require","_auth","_interopRequireDefault","_providers","_native","_reactI18next","_components","_authentication","_reactNativeConfig","_analytics","_analyticsKeys","
|
|
1
|
+
{"version":3,"names":["_reactQuery","require","_auth","_interopRequireDefault","_providers","_native","_reactI18next","_components","_authentication","_reactNativeConfig","_analytics","_analyticsKeys","_queryKeys","_reactNativeMmkv","_constants","_useTermsOfService","_useBusinesses","obj","__esModule","default","confirmationResult","useAuth","dispatch","useAuthenticationDispatch","navigation","useNavigation","t","useTranslation","queryClient","useQueryClient","setBusinessId","useMMKVString","MMKV_KEYS","BUSINESS_ID","useSignUp","useMutation","params","code","confirm","signUpAPI","onError","error","Alert","show","title","console","log","onSuccess","data","payload","credential","auth","EmailAuthProvider","email","password","currentUser","reauthenticateWithCredential","reload","changeUser","analytics","identify","uid","now","Date","toISOString","profile","set","analyticsKeys","registrationDate","app","Config","URL_SCHEME","track","eventName","acceptTOS","businessId","bizResponse","getBusinessData","firstId","businesses","id","invalidateQueries","queryKeys","BUSINESSES","TERMS_AND_CONDITIONS","signOut","catch","StackActions","popToTop","useIsCheckRegistered","checkIsRegisteredAPI","response","isRegistered","navigate","useConfirmPhoneNumber","properties","method","e","useVerifyPhoneNumberForLogin","phoneNumber","signInWithPhoneNumber","description","emailOrPhoneNumber","message","useVerifyPhoneNumber","useResetPassword","sendPasswordResetEmail","exports"],"sourceRoot":"../../../src","sources":["hooks/useAuth.ts"],"mappings":"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"}
|
|
@@ -3,14 +3,35 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
exports.acceptTOS = acceptTOS;
|
|
6
7
|
exports.useTermsOfService = void 0;
|
|
7
8
|
var _reactQuery = require("@tanstack/react-query");
|
|
8
9
|
var _firestore = _interopRequireDefault(require("@react-native-firebase/firestore"));
|
|
9
10
|
var _auth = _interopRequireDefault(require("@react-native-firebase/auth"));
|
|
10
11
|
var _utils = require("../utils");
|
|
11
12
|
var _customer = require("../api/customer");
|
|
13
|
+
var _analytics = require("../utils/analytics");
|
|
12
14
|
var _queryKeys = require("./queryKeys");
|
|
13
15
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
16
|
+
async function acceptTOS(uid) {
|
|
17
|
+
const query = (0, _firestore.default)().doc(`customers/${uid}`);
|
|
18
|
+
const customerSnapshot = await query.get();
|
|
19
|
+
if (!customerSnapshot.exists) {
|
|
20
|
+
await (0, _customer.createCustomer)({
|
|
21
|
+
uid
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
await query.set({
|
|
25
|
+
uid,
|
|
26
|
+
updated: (0, _utils.getCurrentTimestamp)(),
|
|
27
|
+
agreementsUpdated: new Date().toISOString()
|
|
28
|
+
}, {
|
|
29
|
+
merge: true
|
|
30
|
+
});
|
|
31
|
+
_analytics.analytics.track({
|
|
32
|
+
eventName: 'term_of_service_accepted'
|
|
33
|
+
});
|
|
34
|
+
}
|
|
14
35
|
const useTermsOfService = () => {
|
|
15
36
|
const queryClient = (0, _reactQuery.useQueryClient)();
|
|
16
37
|
const user = (0, _auth.default)().currentUser;
|
|
@@ -43,25 +64,10 @@ const useTermsOfService = () => {
|
|
|
43
64
|
enabled: !!user?.uid && !user?.isAnonymous
|
|
44
65
|
}),
|
|
45
66
|
useAgreeTermsOfService: () => (0, _reactQuery.useMutation)(async () => {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
await (0, _customer.createCustomer)({
|
|
51
|
-
uid: user.uid
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
await query.set({
|
|
55
|
-
uid: user.uid,
|
|
56
|
-
updated: (0, _utils.getCurrentTimestamp)(),
|
|
57
|
-
agreementsUpdated: new Date().toISOString()
|
|
58
|
-
}, {
|
|
59
|
-
merge: true
|
|
60
|
-
});
|
|
61
|
-
_utils.analytics.track({
|
|
62
|
-
eventName: 'term_of_service_accepted'
|
|
63
|
-
});
|
|
64
|
-
await queryClient.invalidateQueries([user.uid, _queryKeys.queryKeys.TERMS_AND_CONDITIONS]);
|
|
67
|
+
const currentUser = (0, _auth.default)().currentUser;
|
|
68
|
+
if (!currentUser?.uid || currentUser.isAnonymous) return;
|
|
69
|
+
await acceptTOS(currentUser.uid);
|
|
70
|
+
await queryClient.invalidateQueries([currentUser.uid, _queryKeys.queryKeys.TERMS_AND_CONDITIONS]);
|
|
65
71
|
})
|
|
66
72
|
};
|
|
67
73
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactQuery","require","_firestore","_interopRequireDefault","_auth","_utils","_customer","_queryKeys","obj","__esModule","default","
|
|
1
|
+
{"version":3,"names":["_reactQuery","require","_firestore","_interopRequireDefault","_auth","_utils","_customer","_analytics","_queryKeys","obj","__esModule","default","acceptTOS","uid","query","firestore","doc","customerSnapshot","get","exists","createCustomer","set","updated","getCurrentTimestamp","agreementsUpdated","Date","toISOString","merge","analytics","track","eventName","useTermsOfService","queryClient","useQueryClient","user","firebase","currentUser","useTermsOfServiceURL","useQuery","queryKeys","TERMS_AND_CONDITIONS_URL","system","data","url","staleTime","Infinity","useShouldShowTermsOfService","TERMS_AND_CONDITIONS","customer","DEFAULT_STALE_TIME","enabled","isAnonymous","useAgreeTermsOfService","useMutation","invalidateQueries","exports"],"sourceRoot":"../../../src","sources":["hooks/useTermsOfService.ts"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { useDeactivateAccount } from './useDeactivateAccount';
|
|
2
|
-
export { useTermsOfService } from './useTermsOfService';
|
|
2
|
+
export { useTermsOfService, acceptTOS } from './useTermsOfService';
|
|
3
3
|
export { useAuth } from './useAuth';
|
|
4
4
|
export { useCustomerQueries } from './useCustomer';
|
|
5
5
|
export { useCheckCustomer } from './useCheckCustomer';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useDeactivateAccount","useTermsOfService","useAuth","useCustomerQueries","useCheckCustomer","useAppVersionCheck","useBusinesses","useLogout","useCreateBusiness","useSaveDeviceDetails","useFirebaseMediaUrl"],"sourceRoot":"../../../src","sources":["hooks/index.ts"],"mappings":"AAAA,SAASA,oBAAoB,QAAQ,wBAAwB;AAC7D,SAASC,iBAAiB,QAAQ,qBAAqB;
|
|
1
|
+
{"version":3,"names":["useDeactivateAccount","useTermsOfService","acceptTOS","useAuth","useCustomerQueries","useCheckCustomer","useAppVersionCheck","useBusinesses","useLogout","useCreateBusiness","useSaveDeviceDetails","useFirebaseMediaUrl"],"sourceRoot":"../../../src","sources":["hooks/index.ts"],"mappings":"AAAA,SAASA,oBAAoB,QAAQ,wBAAwB;AAC7D,SAASC,iBAAiB,EAAEC,SAAS,QAAQ,qBAAqB;AAClE,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;AACtD,SAASC,mBAAmB,QAAQ,uBAAuB"}
|
|
@@ -8,8 +8,11 @@ import { checkIsRegisteredAPI, signUpAPI } from '../api/authentication';
|
|
|
8
8
|
import Config from 'react-native-config';
|
|
9
9
|
import { analytics } from '../utils/analytics';
|
|
10
10
|
import { analyticsKeys } from '../constants/analyticsKeys';
|
|
11
|
-
import { createCustomer } from '../api/customer';
|
|
12
11
|
import { queryKeys } from './queryKeys';
|
|
12
|
+
import { useMMKVString } from 'react-native-mmkv';
|
|
13
|
+
import { MMKV_KEYS } from '../constants';
|
|
14
|
+
import { acceptTOS } from './useTermsOfService';
|
|
15
|
+
import { getBusinessData } from './useBusinesses';
|
|
13
16
|
let confirmationResult;
|
|
14
17
|
export const useAuth = () => {
|
|
15
18
|
const dispatch = useAuthenticationDispatch();
|
|
@@ -18,13 +21,14 @@ export const useAuth = () => {
|
|
|
18
21
|
t
|
|
19
22
|
} = useTranslation();
|
|
20
23
|
const queryClient = useQueryClient();
|
|
24
|
+
const [, setBusinessId] = useMMKVString(MMKV_KEYS.BUSINESS_ID);
|
|
21
25
|
return {
|
|
22
26
|
useSignUp: () => useMutation(async ({
|
|
23
27
|
params,
|
|
24
28
|
code
|
|
25
29
|
}) => {
|
|
26
30
|
await confirmationResult.confirm(code);
|
|
27
|
-
|
|
31
|
+
return signUpAPI(params);
|
|
28
32
|
}, {
|
|
29
33
|
onError: error => {
|
|
30
34
|
Alert.show({
|
|
@@ -32,7 +36,7 @@ export const useAuth = () => {
|
|
|
32
36
|
});
|
|
33
37
|
console.log('error in useSignUp', error);
|
|
34
38
|
},
|
|
35
|
-
onSuccess: async (
|
|
39
|
+
onSuccess: async (data, payload) => {
|
|
36
40
|
try {
|
|
37
41
|
const credential = auth.EmailAuthProvider.credential(payload.params.email, payload.params.password);
|
|
38
42
|
// Reauthenticate user
|
|
@@ -50,14 +54,25 @@ export const useAuth = () => {
|
|
|
50
54
|
eventName: 'sign_up_completed'
|
|
51
55
|
});
|
|
52
56
|
|
|
53
|
-
//
|
|
54
|
-
|
|
57
|
+
// Accept TOS on behalf of new user (sets agreementsUpdated — correct field)
|
|
58
|
+
await acceptTOS(auth().currentUser.uid);
|
|
55
59
|
|
|
56
|
-
//
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
60
|
+
// Write businessId to MMKV so SelectBusiness is skipped for new users
|
|
61
|
+
// POST /business returns { businessId } when a name was provided, {} for gusteau
|
|
62
|
+
const businessId = data?.data?.businessId;
|
|
63
|
+
if (businessId) {
|
|
64
|
+
setBusinessId(businessId);
|
|
65
|
+
} else {
|
|
66
|
+
// Fallback: gusteau signup or API returned empty — fetch from /user/businessData
|
|
67
|
+
const bizResponse = await getBusinessData();
|
|
68
|
+
const firstId = bizResponse?.data?.businesses?.[0]?.id;
|
|
69
|
+
if (firstId) setBusinessId(firstId);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// Invalidate businesses so SelectBusiness (when visited manually) is fresh
|
|
73
|
+
queryClient.invalidateQueries([queryKeys.BUSINESSES]);
|
|
74
|
+
// Invalidate TOS gate in case it was already cached as `true`
|
|
75
|
+
queryClient.invalidateQueries([auth().currentUser.uid, queryKeys.TERMS_AND_CONDITIONS]);
|
|
61
76
|
} catch (error) {
|
|
62
77
|
console.log('error', error);
|
|
63
78
|
// Sign out user if something goes wrong
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useMutation","useQueryClient","auth","changeUser","useAuthenticationDispatch","StackActions","useNavigation","useTranslation","Alert","checkIsRegisteredAPI","signUpAPI","Config","analytics","analyticsKeys","
|
|
1
|
+
{"version":3,"names":["useMutation","useQueryClient","auth","changeUser","useAuthenticationDispatch","StackActions","useNavigation","useTranslation","Alert","checkIsRegisteredAPI","signUpAPI","Config","analytics","analyticsKeys","queryKeys","useMMKVString","MMKV_KEYS","acceptTOS","getBusinessData","confirmationResult","useAuth","dispatch","navigation","t","queryClient","setBusinessId","BUSINESS_ID","useSignUp","params","code","confirm","onError","error","show","title","console","log","onSuccess","data","payload","credential","EmailAuthProvider","email","password","currentUser","reauthenticateWithCredential","reload","identify","uid","now","Date","toISOString","profile","set","registrationDate","app","URL_SCHEME","track","eventName","businessId","bizResponse","firstId","businesses","id","invalidateQueries","BUSINESSES","TERMS_AND_CONDITIONS","signOut","catch","popToTop","useIsCheckRegistered","response","isRegistered","navigate","useConfirmPhoneNumber","properties","method","e","useVerifyPhoneNumberForLogin","phoneNumber","signInWithPhoneNumber","description","emailOrPhoneNumber","message","useVerifyPhoneNumber","useResetPassword","sendPasswordResetEmail"],"sourceRoot":"../../../src","sources":["hooks/useAuth.ts"],"mappings":"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"}
|
|
@@ -3,8 +3,27 @@ import firestore from '@react-native-firebase/firestore';
|
|
|
3
3
|
import firebase from '@react-native-firebase/auth';
|
|
4
4
|
import { getCurrentTimestamp } from '../utils';
|
|
5
5
|
import { createCustomer } from '../api/customer';
|
|
6
|
-
import { analytics } from '../utils';
|
|
6
|
+
import { analytics } from '../utils/analytics';
|
|
7
7
|
import { DEFAULT_STALE_TIME, queryKeys } from './queryKeys';
|
|
8
|
+
export async function acceptTOS(uid) {
|
|
9
|
+
const query = firestore().doc(`customers/${uid}`);
|
|
10
|
+
const customerSnapshot = await query.get();
|
|
11
|
+
if (!customerSnapshot.exists) {
|
|
12
|
+
await createCustomer({
|
|
13
|
+
uid
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
await query.set({
|
|
17
|
+
uid,
|
|
18
|
+
updated: getCurrentTimestamp(),
|
|
19
|
+
agreementsUpdated: new Date().toISOString()
|
|
20
|
+
}, {
|
|
21
|
+
merge: true
|
|
22
|
+
});
|
|
23
|
+
analytics.track({
|
|
24
|
+
eventName: 'term_of_service_accepted'
|
|
25
|
+
});
|
|
26
|
+
}
|
|
8
27
|
export const useTermsOfService = () => {
|
|
9
28
|
const queryClient = useQueryClient();
|
|
10
29
|
const user = firebase().currentUser;
|
|
@@ -37,25 +56,10 @@ export const useTermsOfService = () => {
|
|
|
37
56
|
enabled: !!user?.uid && !user?.isAnonymous
|
|
38
57
|
}),
|
|
39
58
|
useAgreeTermsOfService: () => useMutation(async () => {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
await createCustomer({
|
|
45
|
-
uid: user.uid
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
await query.set({
|
|
49
|
-
uid: user.uid,
|
|
50
|
-
updated: getCurrentTimestamp(),
|
|
51
|
-
agreementsUpdated: new Date().toISOString()
|
|
52
|
-
}, {
|
|
53
|
-
merge: true
|
|
54
|
-
});
|
|
55
|
-
analytics.track({
|
|
56
|
-
eventName: 'term_of_service_accepted'
|
|
57
|
-
});
|
|
58
|
-
await queryClient.invalidateQueries([user.uid, queryKeys.TERMS_AND_CONDITIONS]);
|
|
59
|
+
const currentUser = firebase().currentUser;
|
|
60
|
+
if (!currentUser?.uid || currentUser.isAnonymous) return;
|
|
61
|
+
await acceptTOS(currentUser.uid);
|
|
62
|
+
await queryClient.invalidateQueries([currentUser.uid, queryKeys.TERMS_AND_CONDITIONS]);
|
|
59
63
|
})
|
|
60
64
|
};
|
|
61
65
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useMutation","useQuery","useQueryClient","firestore","firebase","getCurrentTimestamp","createCustomer","analytics","DEFAULT_STALE_TIME","queryKeys","
|
|
1
|
+
{"version":3,"names":["useMutation","useQuery","useQueryClient","firestore","firebase","getCurrentTimestamp","createCustomer","analytics","DEFAULT_STALE_TIME","queryKeys","acceptTOS","uid","query","doc","customerSnapshot","get","exists","set","updated","agreementsUpdated","Date","toISOString","merge","track","eventName","useTermsOfService","queryClient","user","currentUser","useTermsOfServiceURL","TERMS_AND_CONDITIONS_URL","system","data","url","staleTime","Infinity","useShouldShowTermsOfService","TERMS_AND_CONDITIONS","customer","enabled","isAnonymous","useAgreeTermsOfService","invalidateQueries"],"sourceRoot":"../../../src","sources":["hooks/useTermsOfService.ts"],"mappings":"AAAA,SAASA,WAAW,EAAEC,QAAQ,EAAEC,cAAc,QAAQ,uBAAuB;AAC7E,OAAOC,SAAS,MAAM,kCAAkC;AACxD,OAAOC,QAAQ,MAAM,6BAA6B;AAClD,SAASC,mBAAmB,QAAQ,UAAU;AAC9C,SAASC,cAAc,QAAQ,iBAAiB;AAChD,SAASC,SAAS,QAAQ,oBAAoB;AAC9C,SAASC,kBAAkB,EAAEC,SAAS,QAAQ,aAAa;AAE3D,OAAO,eAAeC,SAASA,CAACC,GAAW,EAAiB;EAC1D,MAAMC,KAAK,GAAGT,SAAS,CAAC,CAAC,CAACU,GAAG,CAAE,aAAYF,GAAI,EAAC,CAAC;EACjD,MAAMG,gBAAgB,GAAG,MAAMF,KAAK,CAACG,GAAG,CAAC,CAAC;EAE1C,IAAI,CAACD,gBAAgB,CAACE,MAAM,EAAE;IAC5B,MAAMV,cAAc,CAAC;MAAEK;IAAI,CAAC,CAAC;EAC/B;EAEA,MAAMC,KAAK,CAACK,GAAG,CACb;IACEN,GAAG;IACHO,OAAO,EAAEb,mBAAmB,CAAC,CAAC;IAC9Bc,iBAAiB,EAAE,IAAIC,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC;EAC5C,CAAC,EACD;IAAEC,KAAK,EAAE;EAAK,CAChB,CAAC;EAEDf,SAAS,CAACgB,KAAK,CAAC;IAAEC,SAAS,EAAE;EAA2B,CAAC,CAAC;AAC5D;AAEA,OAAO,MAAMC,iBAAiB,GAAGA,CAAA,KAAM;EACrC,MAAMC,WAAW,GAAGxB,cAAc,CAAC,CAAC;EACpC,MAAMyB,IAAI,GAAGvB,QAAQ,CAAC,CAAC,CAACwB,WAAW;EAEnC,OAAO;IACLC,oBAAoB,EAAEA,CAAA,KACpB5B,QAAQ,CACN,CAACQ,SAAS,CAACqB,wBAAwB,CAAC,EACpC,YAAY;MACV,MAAMC,MAAM,GAAG,CACb,MAAM5B,SAAS,CAAC,CAAC,CAACU,GAAG,CAAC,2BAA2B,CAAC,CAACE,GAAG,CAAC,CAAC,EACxDiB,IAAI,CAAC,CAAqC;MAE5C,OAAOD,MAAM,CAACE,GAAG;IACnB,CAAC,EACD;MACEC,SAAS,EAAEC;IACb,CACF,CAAC;IACHC,2BAA2B,EAAEA,CAAA,KAC3BnC,QAAQ,CACN,CAAC0B,IAAI,EAAEhB,GAAG,EAAEF,SAAS,CAAC4B,oBAAoB,CAAC,EAC3C,YAAY;MACV,IAAI,CAACV,IAAI,EAAEhB,GAAG,EAAE,OAAO,KAAK;MAC5B,MAAMG,gBAAgB,GAAG,MAAMX,SAAS,CAAC,CAAC,CACvCU,GAAG,CAAE,aAAYc,IAAI,CAAChB,GAAI,EAAC,CAAC,CAC5BI,GAAG,CAAC,CAAC;MAER,IAAID,gBAAgB,CAACE,MAAM,EAAE;QAC3B,MAAMsB,QAAQ,GAAGxB,gBAAgB,CAACkB,IAAI,CAAC,CAAC;QAExC,IAAI,CAACM,QAAQ,CAACnB,iBAAiB,EAAE;UAC/B,OAAO,IAAI;QACb,CAAC,MAAM;UACL,MAAMY,MAAM,GAAG,CACb,MAAM5B,SAAS,CAAC,CAAC,CAACU,GAAG,CAAC,2BAA2B,CAAC,CAACE,GAAG,CAAC,CAAC,EACxDiB,IAAI,CAAC,CAAwB;UAE/B,IACE,IAAIZ,IAAI,CAACW,MAAM,CAACb,OAAO,CAAC,GAAG,IAAIE,IAAI,CAACkB,QAAQ,CAACnB,iBAAiB,CAAC,EAC/D;YACA,OAAO,IAAI;UACb;QACF;MACF,CAAC,MAAM;QACL,OAAO,IAAI;MACb;MACA,OAAO,KAAK;IACd,CAAC,EACD;MACEe,SAAS,EAAE1B,kBAAkB;MAC7B+B,OAAO,EAAE,CAAC,CAACZ,IAAI,EAAEhB,GAAG,IAAI,CAACgB,IAAI,EAAEa;IACjC,CACF,CAAC;IACHC,sBAAsB,EAAEA,CAAA,KACtBzC,WAAW,CAAC,YAAY;MACtB,MAAM4B,WAAW,GAAGxB,QAAQ,CAAC,CAAC,CAACwB,WAAW;MAC1C,IAAI,CAACA,WAAW,EAAEjB,GAAG,IAAIiB,WAAW,CAACY,WAAW,EAAE;MAElD,MAAM9B,SAAS,CAACkB,WAAW,CAACjB,GAAG,CAAC;MAEhC,MAAMe,WAAW,CAACgB,iBAAiB,CAAC,CAClCd,WAAW,CAACjB,GAAG,EACfF,SAAS,CAAC4B,oBAAoB,CAC/B,CAAC;IACJ,CAAC;EACL,CAAC;AACH,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { useDeactivateAccount } from './useDeactivateAccount';
|
|
2
|
-
export { useTermsOfService } from './useTermsOfService';
|
|
2
|
+
export { useTermsOfService, acceptTOS } from './useTermsOfService';
|
|
3
3
|
export { useAuth } from './useAuth';
|
|
4
4
|
export { useCustomerQueries } from './useCustomer';
|
|
5
5
|
export { useCheckCustomer } from './useCheckCustomer';
|
|
@@ -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;
|
|
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,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACnE,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;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -6,7 +6,7 @@ export type TUserData = {
|
|
|
6
6
|
password: string;
|
|
7
7
|
};
|
|
8
8
|
export declare const useAuth: () => {
|
|
9
|
-
useSignUp: () => import("@tanstack/react-query").UseMutationResult<
|
|
9
|
+
useSignUp: () => import("@tanstack/react-query").UseMutationResult<import("axios").AxiosResponse<any, any>, Error, {
|
|
10
10
|
params: TUserData;
|
|
11
11
|
code: string;
|
|
12
12
|
}, unknown>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAuth.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useAuth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useAuth.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useAuth.ts"],"names":[],"mappings":"AAuBA,MAAM,MAAM,SAAS,GAAG;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,OAAO;;gBAUuB,SAAS;cAAQ,MAAM;;;;;;;;;cA6EvB,MAAM;;;qBAgBQ,MAAM;;;;eAmClB,MAAM;;CAqBlD,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export declare function acceptTOS(uid: string): Promise<void>;
|
|
1
2
|
export declare const useTermsOfService: () => {
|
|
2
3
|
useTermsOfServiceURL: () => import("@tanstack/react-query").UseQueryResult<string, unknown>;
|
|
3
4
|
useShouldShowTermsOfService: () => import("@tanstack/react-query").UseQueryResult<boolean, unknown>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTermsOfService.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useTermsOfService.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,iBAAiB;;;;
|
|
1
|
+
{"version":3,"file":"useTermsOfService.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useTermsOfService.ts"],"names":[],"mappings":"AAQA,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkB1D;AAED,eAAO,MAAM,iBAAiB;;;;CAmE7B,CAAC"}
|
package/package.json
CHANGED
package/src/hooks/index.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { useDeactivateAccount } from './useDeactivateAccount';
|
|
2
|
-
export { useTermsOfService } from './useTermsOfService';
|
|
2
|
+
export { useTermsOfService, acceptTOS } from './useTermsOfService';
|
|
3
3
|
export { useAuth } from './useAuth';
|
|
4
4
|
export { useCustomerQueries } from './useCustomer';
|
|
5
5
|
export { useCheckCustomer } from './useCheckCustomer';
|
package/src/hooks/useAuth.ts
CHANGED
|
@@ -13,8 +13,11 @@ import { checkIsRegisteredAPI, signUpAPI } from '../api/authentication';
|
|
|
13
13
|
import Config from 'react-native-config';
|
|
14
14
|
import { analytics } from '../utils/analytics';
|
|
15
15
|
import { analyticsKeys } from '../constants/analyticsKeys';
|
|
16
|
-
import { createCustomer } from '../api/customer';
|
|
17
16
|
import { queryKeys } from './queryKeys';
|
|
17
|
+
import { useMMKVString } from 'react-native-mmkv';
|
|
18
|
+
import { MMKV_KEYS } from '../constants';
|
|
19
|
+
import { acceptTOS } from './useTermsOfService';
|
|
20
|
+
import { getBusinessData } from './useBusinesses';
|
|
18
21
|
|
|
19
22
|
let confirmationResult: FirebaseAuthTypes.ConfirmationResult;
|
|
20
23
|
|
|
@@ -31,13 +34,14 @@ export const useAuth = () => {
|
|
|
31
34
|
const navigation = useNavigation<NavigationProp<RootStackType>>();
|
|
32
35
|
const { t } = useTranslation();
|
|
33
36
|
const queryClient = useQueryClient();
|
|
37
|
+
const [, setBusinessId] = useMMKVString(MMKV_KEYS.BUSINESS_ID);
|
|
34
38
|
|
|
35
39
|
return {
|
|
36
40
|
useSignUp: () =>
|
|
37
41
|
useMutation(
|
|
38
42
|
async ({ params, code }: { params: TUserData; code: string }) => {
|
|
39
43
|
await confirmationResult.confirm(code);
|
|
40
|
-
|
|
44
|
+
return signUpAPI(params);
|
|
41
45
|
},
|
|
42
46
|
{
|
|
43
47
|
onError: (error: Error) => {
|
|
@@ -46,7 +50,7 @@ export const useAuth = () => {
|
|
|
46
50
|
});
|
|
47
51
|
console.log('error in useSignUp', error);
|
|
48
52
|
},
|
|
49
|
-
onSuccess: async (
|
|
53
|
+
onSuccess: async (data, payload) => {
|
|
50
54
|
try {
|
|
51
55
|
const credential = auth.EmailAuthProvider.credential(
|
|
52
56
|
payload.params.email,
|
|
@@ -65,14 +69,30 @@ export const useAuth = () => {
|
|
|
65
69
|
analytics.profile.set(analyticsKeys.app, Config.URL_SCHEME);
|
|
66
70
|
analytics.track({ eventName: 'sign_up_completed' });
|
|
67
71
|
|
|
68
|
-
//
|
|
69
|
-
|
|
72
|
+
// Accept TOS on behalf of new user (sets agreementsUpdated — correct field)
|
|
73
|
+
await acceptTOS(auth().currentUser.uid);
|
|
74
|
+
|
|
75
|
+
// Write businessId to MMKV so SelectBusiness is skipped for new users
|
|
76
|
+
// POST /business returns { businessId } when a name was provided, {} for gusteau
|
|
77
|
+
const businessId = data?.data?.businessId as string | undefined;
|
|
78
|
+
if (businessId) {
|
|
79
|
+
setBusinessId(businessId);
|
|
80
|
+
} else {
|
|
81
|
+
// Fallback: gusteau signup or API returned empty — fetch from /user/businessData
|
|
82
|
+
const bizResponse = await getBusinessData();
|
|
83
|
+
const firstId = bizResponse?.data?.businesses?.[0]?.id as
|
|
84
|
+
| string
|
|
85
|
+
| undefined;
|
|
86
|
+
if (firstId) setBusinessId(firstId);
|
|
87
|
+
}
|
|
70
88
|
|
|
71
|
-
//
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
89
|
+
// Invalidate businesses so SelectBusiness (when visited manually) is fresh
|
|
90
|
+
queryClient.invalidateQueries([queryKeys.BUSINESSES]);
|
|
91
|
+
// Invalidate TOS gate in case it was already cached as `true`
|
|
92
|
+
queryClient.invalidateQueries([
|
|
93
|
+
auth().currentUser.uid,
|
|
94
|
+
queryKeys.TERMS_AND_CONDITIONS,
|
|
95
|
+
]);
|
|
76
96
|
} catch (error: any) {
|
|
77
97
|
console.log('error', error);
|
|
78
98
|
// Sign out user if something goes wrong
|
|
@@ -3,9 +3,29 @@ import firestore from '@react-native-firebase/firestore';
|
|
|
3
3
|
import firebase from '@react-native-firebase/auth';
|
|
4
4
|
import { getCurrentTimestamp } from '../utils';
|
|
5
5
|
import { createCustomer } from '../api/customer';
|
|
6
|
-
import { analytics } from '../utils';
|
|
6
|
+
import { analytics } from '../utils/analytics';
|
|
7
7
|
import { DEFAULT_STALE_TIME, queryKeys } from './queryKeys';
|
|
8
8
|
|
|
9
|
+
export async function acceptTOS(uid: string): Promise<void> {
|
|
10
|
+
const query = firestore().doc(`customers/${uid}`);
|
|
11
|
+
const customerSnapshot = await query.get();
|
|
12
|
+
|
|
13
|
+
if (!customerSnapshot.exists) {
|
|
14
|
+
await createCustomer({ uid });
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
await query.set(
|
|
18
|
+
{
|
|
19
|
+
uid,
|
|
20
|
+
updated: getCurrentTimestamp(),
|
|
21
|
+
agreementsUpdated: new Date().toISOString(),
|
|
22
|
+
},
|
|
23
|
+
{ merge: true }
|
|
24
|
+
);
|
|
25
|
+
|
|
26
|
+
analytics.track({ eventName: 'term_of_service_accepted' });
|
|
27
|
+
}
|
|
28
|
+
|
|
9
29
|
export const useTermsOfService = () => {
|
|
10
30
|
const queryClient = useQueryClient();
|
|
11
31
|
const user = firebase().currentUser;
|
|
@@ -62,25 +82,13 @@ export const useTermsOfService = () => {
|
|
|
62
82
|
),
|
|
63
83
|
useAgreeTermsOfService: () =>
|
|
64
84
|
useMutation(async () => {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
const customerSnapshot = await query.get();
|
|
85
|
+
const currentUser = firebase().currentUser;
|
|
86
|
+
if (!currentUser?.uid || currentUser.isAnonymous) return;
|
|
68
87
|
|
|
69
|
-
|
|
70
|
-
await createCustomer({ uid: user!.uid });
|
|
71
|
-
}
|
|
72
|
-
await query.set(
|
|
73
|
-
{
|
|
74
|
-
uid: user.uid,
|
|
75
|
-
updated: getCurrentTimestamp(),
|
|
76
|
-
agreementsUpdated: new Date().toISOString(),
|
|
77
|
-
},
|
|
78
|
-
{ merge: true }
|
|
79
|
-
);
|
|
88
|
+
await acceptTOS(currentUser.uid);
|
|
80
89
|
|
|
81
|
-
analytics.track({ eventName: 'term_of_service_accepted' });
|
|
82
90
|
await queryClient.invalidateQueries([
|
|
83
|
-
|
|
91
|
+
currentUser.uid,
|
|
84
92
|
queryKeys.TERMS_AND_CONDITIONS,
|
|
85
93
|
]);
|
|
86
94
|
}),
|