react-native-okhi 1.0.13-beta.1 → 1.0.13-beta.2
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/OkCollect/OkHiLocationManager.js +23 -5
- package/lib/commonjs/OkCollect/OkHiLocationManager.js.map +1 -1
- package/lib/commonjs/OkCore/OkHiAuth.js +5 -2
- package/lib/commonjs/OkCore/OkHiAuth.js.map +1 -1
- package/lib/commonjs/OkCore/index.js +2 -2
- package/lib/commonjs/OkCore/index.js.map +1 -1
- package/lib/module/OkCollect/OkHiLocationManager.js +23 -5
- package/lib/module/OkCollect/OkHiLocationManager.js.map +1 -1
- package/lib/module/OkCore/OkHiAuth.js +5 -2
- package/lib/module/OkCore/OkHiAuth.js.map +1 -1
- package/lib/module/OkCore/index.js +2 -2
- package/lib/module/OkCore/index.js.map +1 -1
- package/lib/typescript/OkCore/OkHiAuth.d.ts +3 -2
- package/package.json +1 -1
- package/src/OkCollect/OkHiLocationManager.tsx +29 -9
- package/src/OkCore/OkHiAuth.ts +6 -3
- package/src/OkCore/index.ts +1 -1
|
@@ -48,12 +48,29 @@ const OkHiLocationManager = props => {
|
|
|
48
48
|
launch
|
|
49
49
|
} = props;
|
|
50
50
|
(0, _react.useEffect)(() => {
|
|
51
|
-
if (user.phone) {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
51
|
+
if (applicationConfiguration == null && token == null && user.phone) {
|
|
52
|
+
(0, _OkCore.getApplicationConfiguration)().then(config => {
|
|
53
|
+
if (!config && launch) {
|
|
54
|
+
onError(new _OkHiException.OkHiException({
|
|
55
|
+
code: _OkHiException.OkHiException.UNAUTHORIZED_CODE,
|
|
56
|
+
message: _OkHiException.OkHiException.UNAUTHORIZED_MESSAGE
|
|
57
|
+
}));
|
|
58
|
+
} else if (config) {
|
|
59
|
+
setApplicationConfiguration(config);
|
|
60
|
+
const auth = new _OkHiAuth.OkHiAuth();
|
|
61
|
+
auth.anonymousSignInWithPhoneNumber(user.phone, ['address'], config).then(setToken).catch(error => {
|
|
62
|
+
if (launch) {
|
|
63
|
+
onError(error);
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
}).catch(error => {
|
|
68
|
+
if (launch) {
|
|
69
|
+
onError(error);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
55
72
|
}
|
|
56
|
-
}, [onError, user.phone]);
|
|
73
|
+
}, [onError, user.phone, launch, applicationConfiguration, token]);
|
|
57
74
|
|
|
58
75
|
const handleOnMessage = _ref => {
|
|
59
76
|
let {
|
|
@@ -126,6 +143,7 @@ const OkHiLocationManager = props => {
|
|
|
126
143
|
message: 'select_location',
|
|
127
144
|
payload: (0, _Util.generateStartDataPayload)(props, token, applicationConfiguration)
|
|
128
145
|
});
|
|
146
|
+
console.log('render');
|
|
129
147
|
return /*#__PURE__*/_react.default.createElement(_reactNative.SafeAreaView, {
|
|
130
148
|
style: style
|
|
131
149
|
}, /*#__PURE__*/_react.default.createElement(_reactNativeWebview.WebView, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["OkHiLocationManager.tsx"],"names":["OkHiLocationManager","props","token","setToken","applicationConfiguration","setApplicationConfiguration","defaultStyle","flex","style","user","onSuccess","onCloseRequest","onError","loader","launch","phone","auth","OkHiAuth","anonymousSignInWithPhoneNumber","then","catch","handleOnMessage","nativeEvent","data","response","JSON","parse","message","OkHiException","code","UNKNOWN_ERROR_CODE","payload","toString","location","startVerification","config","createdUser","Promise","resolve","reject","id","BAD_REQUEST_CODE","lat","lon","error","errorMessage","Error","handleOnError","NETWORK_ERROR_CODE","NETWORK_ERROR_MESSAGE","renderContent","jsAfterLoad","jsBeforeLoad","uri","Platform","OS","undefined"],"mappings":"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","sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { Modal, SafeAreaView, Platform } from 'react-native';\nimport { WebView, WebViewMessageEvent } from 'react-native-webview';\nimport { Spinner } from './Spinner';\nimport type {\n OkHiLocationManagerResponse,\n OkHiLocationManagerProps,\n} from './types';\nimport {\n getFrameUrl,\n generateJavaScriptStartScript,\n generateStartDataPayload,\n parseOkHiLocation,\n} from './Util';\nimport { OkHiException } from '../OkCore/OkHiException';\nimport { OkHiAuth } from '../OkCore/OkHiAuth';\nimport type { AuthApplicationConfig } from '../OkCore/_types';\nimport { start as sv } from '../OkVerify';\nimport type { OkVerifyStartConfiguration } from '../OkVerify/types';\nimport { getApplicationConfiguration } from '../OkCore';\n/**\n * The OkHiLocationManager React Component is used to display an in app modal, enabling the user to quickly create an accurate OkHi address.\n */\nexport const OkHiLocationManager = (props: OkHiLocationManagerProps) => {\n const [token, setToken] = useState<string | null>(null);\n const [applicationConfiguration, setApplicationConfiguration] =\n useState<AuthApplicationConfig | null>(null);\n const defaultStyle = { flex: 1 };\n const style = props.style\n ? { ...props.style, ...defaultStyle }\n : defaultStyle;\n\n const { user, onSuccess, onCloseRequest, onError, loader, launch } = props;\n\n useEffect(() => {\n if (user.phone) {\n const auth = new OkHiAuth();\n auth\n .anonymousSignInWithPhoneNumber(user.phone, ['address'])\n .then(setToken)\n .catch(onError);\n getApplicationConfiguration()\n .then(setApplicationConfiguration)\n .catch(onError);\n }\n }, [onError, user.phone]);\n\n const handleOnMessage = ({ nativeEvent: { data } }: WebViewMessageEvent) => {\n try {\n const response: OkHiLocationManagerResponse = JSON.parse(data);\n if (response.message === 'fatal_exit') {\n onError(\n new OkHiException({\n code: OkHiException.UNKNOWN_ERROR_CODE,\n message: response.payload.toString(),\n })\n );\n } else if (response.message === 'exit_app') {\n onCloseRequest();\n } else {\n onSuccess({\n ...response.payload,\n location: parseOkHiLocation(response.payload.location),\n startVerification: function (config?: OkVerifyStartConfiguration) {\n const createdUser = { ...this.user };\n const location = { ...this.location };\n return new Promise((resolve, reject) => {\n if (!location.id) {\n reject(\n new OkHiException({\n code: OkHiException.BAD_REQUEST_CODE,\n message: 'Missing location id from response',\n })\n );\n } else {\n sv(\n createdUser.phone,\n location.id,\n location.lat,\n location.lon,\n config\n )\n .then(resolve)\n .catch(reject);\n }\n });\n },\n });\n }\n } catch (error) {\n let errorMessage = 'Something went wrong';\n if (error instanceof Error) {\n errorMessage = error.message;\n }\n onError(\n new OkHiException({\n code: OkHiException.UNKNOWN_ERROR_CODE,\n message: errorMessage,\n })\n );\n }\n };\n\n const handleOnError = () => {\n onError(\n new OkHiException({\n code: OkHiException.NETWORK_ERROR_CODE,\n message: OkHiException.NETWORK_ERROR_MESSAGE,\n })\n );\n };\n\n const renderContent = () => {\n if (token === null || applicationConfiguration == null) {\n return loader || <Spinner />;\n }\n\n const { jsAfterLoad, jsBeforeLoad } = generateJavaScriptStartScript({\n message: 'select_location',\n payload: generateStartDataPayload(props, token, applicationConfiguration),\n });\n\n return (\n <SafeAreaView style={style}>\n <WebView\n source={{ uri: getFrameUrl(applicationConfiguration) }}\n injectedJavaScriptBeforeContentLoaded={\n Platform.OS === 'ios' ? jsBeforeLoad : undefined\n }\n injectedJavaScript={Platform.OS === 'ios' ? undefined : jsAfterLoad}\n onMessage={handleOnMessage}\n onError={handleOnError}\n onHttpError={handleOnError}\n geolocationEnabled={true}\n allowsBackForwardNavigationGestures={true}\n />\n </SafeAreaView>\n );\n };\n\n return (\n <Modal animationType=\"slide\" transparent={false} visible={launch}>\n {launch ? renderContent() : null}\n </Modal>\n );\n};\n\nexport default OkHiLocationManager;\n"]}
|
|
1
|
+
{"version":3,"sources":["OkHiLocationManager.tsx"],"names":["OkHiLocationManager","props","token","setToken","applicationConfiguration","setApplicationConfiguration","defaultStyle","flex","style","user","onSuccess","onCloseRequest","onError","loader","launch","phone","then","config","OkHiException","code","UNAUTHORIZED_CODE","message","UNAUTHORIZED_MESSAGE","auth","OkHiAuth","anonymousSignInWithPhoneNumber","catch","error","handleOnMessage","nativeEvent","data","response","JSON","parse","UNKNOWN_ERROR_CODE","payload","toString","location","startVerification","createdUser","Promise","resolve","reject","id","BAD_REQUEST_CODE","lat","lon","errorMessage","Error","handleOnError","NETWORK_ERROR_CODE","NETWORK_ERROR_MESSAGE","renderContent","jsAfterLoad","jsBeforeLoad","console","log","uri","Platform","OS","undefined"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AAKA;;AAMA;;AACA;;AAEA;;AAEA;;;;;;AACA;AACA;AACA;AACO,MAAMA,mBAAmB,GAAIC,KAAD,IAAqC;AACtE,QAAM,CAACC,KAAD,EAAQC,QAAR,IAAoB,qBAAwB,IAAxB,CAA1B;AACA,QAAM,CAACC,wBAAD,EAA2BC,2BAA3B,IACJ,qBAAuC,IAAvC,CADF;AAEA,QAAMC,YAAY,GAAG;AAAEC,IAAAA,IAAI,EAAE;AAAR,GAArB;AACA,QAAMC,KAAK,GAAGP,KAAK,CAACO,KAAN,GACV,EAAE,GAAGP,KAAK,CAACO,KAAX;AAAkB,OAAGF;AAArB,GADU,GAEVA,YAFJ;AAIA,QAAM;AAAEG,IAAAA,IAAF;AAAQC,IAAAA,SAAR;AAAmBC,IAAAA,cAAnB;AAAmCC,IAAAA,OAAnC;AAA4CC,IAAAA,MAA5C;AAAoDC,IAAAA;AAApD,MAA+Db,KAArE;AAEA,wBAAU,MAAM;AACd,QAAIG,wBAAwB,IAAI,IAA5B,IAAoCF,KAAK,IAAI,IAA7C,IAAqDO,IAAI,CAACM,KAA9D,EAAqE;AACnE,iDACGC,IADH,CACSC,MAAD,IAAY;AAChB,YAAI,CAACA,MAAD,IAAWH,MAAf,EAAuB;AACrBF,UAAAA,OAAO,CACL,IAAIM,4BAAJ,CAAkB;AAChBC,YAAAA,IAAI,EAAED,6BAAcE,iBADJ;AAEhBC,YAAAA,OAAO,EAAEH,6BAAcI;AAFP,WAAlB,CADK,CAAP;AAMD,SAPD,MAOO,IAAIL,MAAJ,EAAY;AACjBZ,UAAAA,2BAA2B,CAACY,MAAD,CAA3B;AACA,gBAAMM,IAAI,GAAG,IAAIC,kBAAJ,EAAb;AACAD,UAAAA,IAAI,CACDE,8BADH,CACkChB,IAAI,CAACM,KADvC,EAC8C,CAAC,SAAD,CAD9C,EAC2DE,MAD3D,EAEGD,IAFH,CAEQb,QAFR,EAGGuB,KAHH,CAGUC,KAAD,IAAW;AAChB,gBAAIb,MAAJ,EAAY;AACVF,cAAAA,OAAO,CAACe,KAAD,CAAP;AACD;AACF,WAPH;AAQD;AACF,OArBH,EAsBGD,KAtBH,CAsBUC,KAAD,IAAW;AAChB,YAAIb,MAAJ,EAAY;AACVF,UAAAA,OAAO,CAACe,KAAD,CAAP;AACD;AACF,OA1BH;AA2BD;AACF,GA9BD,EA8BG,CAACf,OAAD,EAAUH,IAAI,CAACM,KAAf,EAAsBD,MAAtB,EAA8BV,wBAA9B,EAAwDF,KAAxD,CA9BH;;AAgCA,QAAM0B,eAAe,GAAG,QAAoD;AAAA,QAAnD;AAAEC,MAAAA,WAAW,EAAE;AAAEC,QAAAA;AAAF;AAAf,KAAmD;;AAC1E,QAAI;AACF,YAAMC,QAAqC,GAAGC,IAAI,CAACC,KAAL,CAAWH,IAAX,CAA9C;;AACA,UAAIC,QAAQ,CAACV,OAAT,KAAqB,YAAzB,EAAuC;AACrCT,QAAAA,OAAO,CACL,IAAIM,4BAAJ,CAAkB;AAChBC,UAAAA,IAAI,EAAED,6BAAcgB,kBADJ;AAEhBb,UAAAA,OAAO,EAAEU,QAAQ,CAACI,OAAT,CAAiBC,QAAjB;AAFO,SAAlB,CADK,CAAP;AAMD,OAPD,MAOO,IAAIL,QAAQ,CAACV,OAAT,KAAqB,UAAzB,EAAqC;AAC1CV,QAAAA,cAAc;AACf,OAFM,MAEA;AACLD,QAAAA,SAAS,CAAC,EACR,GAAGqB,QAAQ,CAACI,OADJ;AAERE,UAAAA,QAAQ,EAAE,6BAAkBN,QAAQ,CAACI,OAAT,CAAiBE,QAAnC,CAFF;AAGRC,UAAAA,iBAAiB,EAAE,UAAUrB,MAAV,EAA+C;AAChE,kBAAMsB,WAAW,GAAG,EAAE,GAAG,KAAK9B;AAAV,aAApB;AACA,kBAAM4B,QAAQ,GAAG,EAAE,GAAG,KAAKA;AAAV,aAAjB;AACA,mBAAO,IAAIG,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;AACtC,kBAAI,CAACL,QAAQ,CAACM,EAAd,EAAkB;AAChBD,gBAAAA,MAAM,CACJ,IAAIxB,4BAAJ,CAAkB;AAChBC,kBAAAA,IAAI,EAAED,6BAAc0B,gBADJ;AAEhBvB,kBAAAA,OAAO,EAAE;AAFO,iBAAlB,CADI,CAAN;AAMD,eAPD,MAOO;AACL,qCACEkB,WAAW,CAACxB,KADd,EAEEsB,QAAQ,CAACM,EAFX,EAGEN,QAAQ,CAACQ,GAHX,EAIER,QAAQ,CAACS,GAJX,EAKE7B,MALF,EAOGD,IAPH,CAOQyB,OAPR,EAQGf,KARH,CAQSgB,MART;AASD;AACF,aAnBM,CAAP;AAoBD;AA1BO,SAAD,CAAT;AA4BD;AACF,KAzCD,CAyCE,OAAOf,KAAP,EAAc;AACd,UAAIoB,YAAY,GAAG,sBAAnB;;AACA,UAAIpB,KAAK,YAAYqB,KAArB,EAA4B;AAC1BD,QAAAA,YAAY,GAAGpB,KAAK,CAACN,OAArB;AACD;;AACDT,MAAAA,OAAO,CACL,IAAIM,4BAAJ,CAAkB;AAChBC,QAAAA,IAAI,EAAED,6BAAcgB,kBADJ;AAEhBb,QAAAA,OAAO,EAAE0B;AAFO,OAAlB,CADK,CAAP;AAMD;AACF,GAtDD;;AAwDA,QAAME,aAAa,GAAG,MAAM;AAC1BrC,IAAAA,OAAO,CACL,IAAIM,4BAAJ,CAAkB;AAChBC,MAAAA,IAAI,EAAED,6BAAcgC,kBADJ;AAEhB7B,MAAAA,OAAO,EAAEH,6BAAciC;AAFP,KAAlB,CADK,CAAP;AAMD,GAPD;;AASA,QAAMC,aAAa,GAAG,MAAM;AAC1B,QAAIlD,KAAK,KAAK,IAAV,IAAkBE,wBAAwB,IAAI,IAAlD,EAAwD;AACtD,aAAOS,MAAM,iBAAI,6BAAC,gBAAD,OAAjB;AACD;;AAED,UAAM;AAAEwC,MAAAA,WAAF;AAAeC,MAAAA;AAAf,QAAgC,yCAA8B;AAClEjC,MAAAA,OAAO,EAAE,iBADyD;AAElEc,MAAAA,OAAO,EAAE,oCAAyBlC,KAAzB,EAAgCC,KAAhC,EAAuCE,wBAAvC;AAFyD,KAA9B,CAAtC;AAKAmD,IAAAA,OAAO,CAACC,GAAR,CAAY,QAAZ;AACA,wBACE,6BAAC,yBAAD;AAAc,MAAA,KAAK,EAAEhD;AAArB,oBACE,6BAAC,2BAAD;AACE,MAAA,MAAM,EAAE;AAAEiD,QAAAA,GAAG,EAAE,uBAAYrD,wBAAZ;AAAP,OADV;AAEE,MAAA,qCAAqC,EACnCsD,sBAASC,EAAT,KAAgB,KAAhB,GAAwBL,YAAxB,GAAuCM,SAH3C;AAKE,MAAA,kBAAkB,EAAEF,sBAASC,EAAT,KAAgB,KAAhB,GAAwBC,SAAxB,GAAoCP,WAL1D;AAME,MAAA,SAAS,EAAEzB,eANb;AAOE,MAAA,OAAO,EAAEqB,aAPX;AAQE,MAAA,WAAW,EAAEA,aARf;AASE,MAAA,kBAAkB,EAAE,IATtB;AAUE,MAAA,mCAAmC,EAAE;AAVvC,MADF,CADF;AAgBD,GA3BD;;AA6BA,sBACE,6BAAC,kBAAD;AAAO,IAAA,aAAa,EAAC,OAArB;AAA6B,IAAA,WAAW,EAAE,KAA1C;AAAiD,IAAA,OAAO,EAAEnC;AAA1D,KACGA,MAAM,GAAGsC,aAAa,EAAhB,GAAqB,IAD9B,CADF;AAKD,CA9IM;;;eAgJQpD,mB","sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { Modal, SafeAreaView, Platform } from 'react-native';\nimport { WebView, WebViewMessageEvent } from 'react-native-webview';\nimport { Spinner } from './Spinner';\nimport type {\n OkHiLocationManagerResponse,\n OkHiLocationManagerProps,\n} from './types';\nimport {\n getFrameUrl,\n generateJavaScriptStartScript,\n generateStartDataPayload,\n parseOkHiLocation,\n} from './Util';\nimport { OkHiException } from '../OkCore/OkHiException';\nimport { OkHiAuth } from '../OkCore/OkHiAuth';\nimport type { AuthApplicationConfig } from '../OkCore/_types';\nimport { start as sv } from '../OkVerify';\nimport type { OkVerifyStartConfiguration } from '../OkVerify/types';\nimport { getApplicationConfiguration } from '../OkCore';\n/**\n * The OkHiLocationManager React Component is used to display an in app modal, enabling the user to quickly create an accurate OkHi address.\n */\nexport const OkHiLocationManager = (props: OkHiLocationManagerProps) => {\n const [token, setToken] = useState<string | null>(null);\n const [applicationConfiguration, setApplicationConfiguration] =\n useState<AuthApplicationConfig | null>(null);\n const defaultStyle = { flex: 1 };\n const style = props.style\n ? { ...props.style, ...defaultStyle }\n : defaultStyle;\n\n const { user, onSuccess, onCloseRequest, onError, loader, launch } = props;\n\n useEffect(() => {\n if (applicationConfiguration == null && token == null && user.phone) {\n getApplicationConfiguration()\n .then((config) => {\n if (!config && launch) {\n onError(\n new OkHiException({\n code: OkHiException.UNAUTHORIZED_CODE,\n message: OkHiException.UNAUTHORIZED_MESSAGE,\n })\n );\n } else if (config) {\n setApplicationConfiguration(config);\n const auth = new OkHiAuth();\n auth\n .anonymousSignInWithPhoneNumber(user.phone, ['address'], config)\n .then(setToken)\n .catch((error) => {\n if (launch) {\n onError(error);\n }\n });\n }\n })\n .catch((error) => {\n if (launch) {\n onError(error);\n }\n });\n }\n }, [onError, user.phone, launch, applicationConfiguration, token]);\n\n const handleOnMessage = ({ nativeEvent: { data } }: WebViewMessageEvent) => {\n try {\n const response: OkHiLocationManagerResponse = JSON.parse(data);\n if (response.message === 'fatal_exit') {\n onError(\n new OkHiException({\n code: OkHiException.UNKNOWN_ERROR_CODE,\n message: response.payload.toString(),\n })\n );\n } else if (response.message === 'exit_app') {\n onCloseRequest();\n } else {\n onSuccess({\n ...response.payload,\n location: parseOkHiLocation(response.payload.location),\n startVerification: function (config?: OkVerifyStartConfiguration) {\n const createdUser = { ...this.user };\n const location = { ...this.location };\n return new Promise((resolve, reject) => {\n if (!location.id) {\n reject(\n new OkHiException({\n code: OkHiException.BAD_REQUEST_CODE,\n message: 'Missing location id from response',\n })\n );\n } else {\n sv(\n createdUser.phone,\n location.id,\n location.lat,\n location.lon,\n config\n )\n .then(resolve)\n .catch(reject);\n }\n });\n },\n });\n }\n } catch (error) {\n let errorMessage = 'Something went wrong';\n if (error instanceof Error) {\n errorMessage = error.message;\n }\n onError(\n new OkHiException({\n code: OkHiException.UNKNOWN_ERROR_CODE,\n message: errorMessage,\n })\n );\n }\n };\n\n const handleOnError = () => {\n onError(\n new OkHiException({\n code: OkHiException.NETWORK_ERROR_CODE,\n message: OkHiException.NETWORK_ERROR_MESSAGE,\n })\n );\n };\n\n const renderContent = () => {\n if (token === null || applicationConfiguration == null) {\n return loader || <Spinner />;\n }\n\n const { jsAfterLoad, jsBeforeLoad } = generateJavaScriptStartScript({\n message: 'select_location',\n payload: generateStartDataPayload(props, token, applicationConfiguration),\n });\n\n console.log('render');\n return (\n <SafeAreaView style={style}>\n <WebView\n source={{ uri: getFrameUrl(applicationConfiguration) }}\n injectedJavaScriptBeforeContentLoaded={\n Platform.OS === 'ios' ? jsBeforeLoad : undefined\n }\n injectedJavaScript={Platform.OS === 'ios' ? undefined : jsAfterLoad}\n onMessage={handleOnMessage}\n onError={handleOnError}\n onHttpError={handleOnError}\n geolocationEnabled={true}\n allowsBackForwardNavigationGestures={true}\n />\n </SafeAreaView>\n );\n };\n\n return (\n <Modal animationType=\"slide\" transparent={false} visible={launch}>\n {launch ? renderContent() : null}\n </Modal>\n );\n};\n\nexport default OkHiLocationManager;\n"]}
|
|
@@ -31,9 +31,12 @@ class OkHiAuth {
|
|
|
31
31
|
_defineProperty(this, "SANDBOX_BASE_URL", `https://sandbox-api.okhi.io/${this.API_VERSION}` + this.ANONYMOUS_SIGN_IN_ENDPOINT);
|
|
32
32
|
|
|
33
33
|
_defineProperty(this, "PROD_BASE_URL", `https://api.okhi.io/${this.API_VERSION}` + this.ANONYMOUS_SIGN_IN_ENDPOINT);
|
|
34
|
+
|
|
35
|
+
_defineProperty(this, "config", null);
|
|
34
36
|
}
|
|
35
37
|
|
|
36
|
-
anonymousSignInWithPhoneNumber(phone, scopes) {
|
|
38
|
+
anonymousSignInWithPhoneNumber(phone, scopes, config) {
|
|
39
|
+
this.config = config;
|
|
37
40
|
return this.anonymousSignIn({
|
|
38
41
|
scopes,
|
|
39
42
|
phone
|
|
@@ -50,7 +53,7 @@ class OkHiAuth {
|
|
|
50
53
|
async anonymousSignIn(payload) {
|
|
51
54
|
return new Promise(async (resolve, reject) => {
|
|
52
55
|
try {
|
|
53
|
-
const config = await (0, _.getApplicationConfiguration)();
|
|
56
|
+
const config = this.config || (await (0, _.getApplicationConfiguration)());
|
|
54
57
|
|
|
55
58
|
if (config === null || !config.auth || !config.auth.token) {
|
|
56
59
|
reject(new _OkHiException.OkHiException({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["OkHiAuth.ts"],"names":["OkHiAuth","API_VERSION","ANONYMOUS_SIGN_IN_ENDPOINT","anonymousSignInWithPhoneNumber","phone","scopes","anonymousSignIn","anonymousSignInWithUserId","userId","user_id","payload","Promise","resolve","reject","
|
|
1
|
+
{"version":3,"sources":["OkHiAuth.ts"],"names":["OkHiAuth","API_VERSION","ANONYMOUS_SIGN_IN_ENDPOINT","anonymousSignInWithPhoneNumber","phone","scopes","config","anonymousSignIn","anonymousSignInWithUserId","userId","user_id","payload","Promise","resolve","reject","auth","token","OkHiException","code","UNAUTHORIZED_CODE","message","UNAUTHORIZED_MESSAGE","context","url","SANDBOX_BASE_URL","mode","DEV_BASE_URL","OkHiMode","PROD","PROD_BASE_URL","headers","Authorization","data","axios","post","authorization_token","error","parseRequestError","response","NETWORK_ERROR_CODE","NETWORK_ERROR_MESSAGE","status","INVALID_PHONE_CODE","INVALID_PHONE_MESSAGE","UNKNOWN_ERROR_CODE","UNKNOWN_ERROR_MESSAGE"],"mappings":"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","sourcesContent":["import axios from 'axios';\nimport { OkHiMode } from './OkHiMode';\nimport { OkHiException } from './OkHiException';\nimport type { AuthApplicationConfig, OkHiAccessScope } from './_types';\nimport { getApplicationConfiguration } from './';\n\n/**\n * @ignore\n */\nexport class OkHiAuth {\n private readonly API_VERSION = 'v5';\n private readonly ANONYMOUS_SIGN_IN_ENDPOINT = '/auth/anonymous-signin';\n private readonly DEV_BASE_URL =\n `https://dev-api.okhi.io/${this.API_VERSION}` +\n this.ANONYMOUS_SIGN_IN_ENDPOINT;\n private readonly SANDBOX_BASE_URL =\n `https://sandbox-api.okhi.io/${this.API_VERSION}` +\n this.ANONYMOUS_SIGN_IN_ENDPOINT;\n private readonly PROD_BASE_URL =\n `https://api.okhi.io/${this.API_VERSION}` + this.ANONYMOUS_SIGN_IN_ENDPOINT;\n private config: AuthApplicationConfig | null = null;\n\n anonymousSignInWithPhoneNumber(\n phone: string,\n scopes: Array<OkHiAccessScope>,\n config: AuthApplicationConfig\n ) {\n this.config = config;\n return this.anonymousSignIn({\n scopes,\n phone,\n });\n }\n\n protected anonymousSignInWithUserId(\n userId: string,\n scopes: Array<OkHiAccessScope>\n ) {\n return this.anonymousSignIn({\n scopes,\n user_id: userId,\n });\n }\n\n private async anonymousSignIn(payload: {\n scopes: Array<OkHiAccessScope>;\n [key: string]: any;\n }): Promise<string> {\n return new Promise(async (resolve, reject) => {\n try {\n const config = this.config || (await getApplicationConfiguration());\n if (config === null || !config.auth || !config.auth.token) {\n reject(\n new OkHiException({\n code: OkHiException.UNAUTHORIZED_CODE,\n message: OkHiException.UNAUTHORIZED_MESSAGE,\n })\n );\n } else {\n const { auth, context } = config;\n let url = this.SANDBOX_BASE_URL;\n if (context?.mode === ('dev' as any)) {\n url = this.DEV_BASE_URL;\n } else if (context?.mode === OkHiMode.PROD) {\n url = this.PROD_BASE_URL;\n } else {\n url = this.SANDBOX_BASE_URL;\n }\n const headers = { Authorization: auth.token };\n const { data } = await axios.post(url, payload, {\n headers,\n });\n resolve(data.authorization_token);\n }\n } catch (error) {\n reject(this.parseRequestError(error));\n }\n });\n }\n\n private parseRequestError(error: any) {\n if (!error.response) {\n return new OkHiException({\n code: OkHiException.NETWORK_ERROR_CODE,\n message: OkHiException.NETWORK_ERROR_MESSAGE,\n });\n }\n switch (error.response.status) {\n case 400:\n return new OkHiException({\n code: OkHiException.INVALID_PHONE_CODE,\n message: OkHiException.INVALID_PHONE_MESSAGE,\n });\n case 401:\n return new OkHiException({\n code: OkHiException.UNAUTHORIZED_CODE,\n message: OkHiException.UNAUTHORIZED_MESSAGE,\n });\n default:\n return new OkHiException({\n code: OkHiException.UNKNOWN_ERROR_CODE,\n message: error.message || OkHiException.UNKNOWN_ERROR_MESSAGE,\n });\n }\n }\n}\n"]}
|
|
@@ -80,13 +80,13 @@ let okhiApplicationConfiguration;
|
|
|
80
80
|
|
|
81
81
|
function initialize(configuration) {
|
|
82
82
|
return (0, _helpers.errorHandler)(async () => {
|
|
83
|
+
okhiApplicationConfiguration = configuration;
|
|
84
|
+
|
|
83
85
|
if (_reactNative.Platform.OS === 'android') {
|
|
84
86
|
await _OkHiNativeModule.OkHiNativeModule.initialize(JSON.stringify(configuration));
|
|
85
87
|
} else {
|
|
86
88
|
await _OkHiNativeModule.OkHiNativeModule.initializeIOS(configuration.credentials.branchId, configuration.credentials.clientKey, configuration.context.mode);
|
|
87
89
|
}
|
|
88
|
-
|
|
89
|
-
okhiApplicationConfiguration = configuration;
|
|
90
90
|
});
|
|
91
91
|
}
|
|
92
92
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.ts"],"names":["okhiApplicationConfiguration","initialize","configuration","Platform","OS","OkHiNativeModule","JSON","stringify","initializeIOS","credentials","branchId","clientKey","context","mode","getApplicationConfiguration","auth","token","getAuthToken","error"],"mappings":";;;;;;;;;;;;AAAA;;AACA;;AAEA;;AAGA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,IAAIA,4BAAJ;AAEA;AACA;AACA;AACA;AACA;;AACO,SAASC,UAAT,CACLC,aADK,EAEU;AACf,SAAO,2BAAa,YAAY;
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":["okhiApplicationConfiguration","initialize","configuration","Platform","OS","OkHiNativeModule","JSON","stringify","initializeIOS","credentials","branchId","clientKey","context","mode","getApplicationConfiguration","auth","token","getAuthToken","error"],"mappings":";;;;;;;;;;;;AAAA;;AACA;;AAEA;;AAGA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,IAAIA,4BAAJ;AAEA;AACA;AACA;AACA;AACA;;AACO,SAASC,UAAT,CACLC,aADK,EAEU;AACf,SAAO,2BAAa,YAAY;AAC9BF,IAAAA,4BAA4B,GAAGE,aAA/B;;AACA,QAAIC,sBAASC,EAAT,KAAgB,SAApB,EAA+B;AAC7B,YAAMC,mCAAiBJ,UAAjB,CAA4BK,IAAI,CAACC,SAAL,CAAeL,aAAf,CAA5B,CAAN;AACD,KAFD,MAEO;AACL,YAAMG,mCAAiBG,aAAjB,CACJN,aAAa,CAACO,WAAd,CAA0BC,QADtB,EAEJR,aAAa,CAACO,WAAd,CAA0BE,SAFtB,EAGJT,aAAa,CAACU,OAAd,CAAsBC,IAHlB,CAAN;AAKD;AACF,GAXM,CAAP;AAYD;AAED;AACA;AACA;AACA;;;AACO,eAAeC,2BAAf,GAAoF;AACzF,MAAI;AACF,QAAI,OAAOd,4BAAP,KAAwC,QAA5C,EAAsD;AAAA;;AACpD,aAAO,EACL,GAAGA,4BADE;AAELe,QAAAA,IAAI,EAAE;AACJC,UAAAA,KAAK,EAAE,MAAMX,mCAAiBY,YAAjB,CACX,0BAAAjB,4BAA4B,UAA5B,sEAA8BS,WAA9B,CAA0CC,QAA1C,KAAsD,EAD3C,EAEX,2BAAAV,4BAA4B,UAA5B,wEAA8BS,WAA9B,CAA0CE,SAA1C,KAAuD,EAF5C;AADT;AAFD,OAAP;AASD;;AACD,WAAO,IAAP;AACD,GAbD,CAaE,OAAOO,KAAP,EAAc;AACd,UAAMA,KAAN;AACD;AACF","sourcesContent":["import { Platform } from 'react-native';\nimport { OkHiNativeModule } from '../OkHiNativeModule';\nimport type { OkHiApplicationConfiguration } from './types';\nimport { errorHandler } from './_helpers';\nimport type { AuthApplicationConfig } from './_types';\n\nexport * from './types';\nexport * from './OkHiException';\nexport * from './OkHiMode';\nexport * from './Helpers';\n\nlet okhiApplicationConfiguration: OkHiApplicationConfiguration | undefined;\n\n/**\n * Initializes the OkHi library with provided API keys\n * @param {Object} configuration A configuration object with your OkHi credentials as well as library settings\n * @returns {Promise<void>} A promise that resolves when initialization is successful\n */\nexport function initialize(\n configuration: OkHiApplicationConfiguration\n): Promise<void> {\n return errorHandler(async () => {\n okhiApplicationConfiguration = configuration;\n if (Platform.OS === 'android') {\n await OkHiNativeModule.initialize(JSON.stringify(configuration));\n } else {\n await OkHiNativeModule.initializeIOS(\n configuration.credentials.branchId,\n configuration.credentials.clientKey,\n configuration.context.mode\n );\n }\n });\n}\n\n/**\n * Obtains your current running configuration\n * @returns {Promise<void>} A promise that resolves with your application configuration\n */\nexport async function getApplicationConfiguration(): Promise<AuthApplicationConfig | null> {\n try {\n if (typeof okhiApplicationConfiguration === 'object') {\n return {\n ...okhiApplicationConfiguration,\n auth: {\n token: await OkHiNativeModule.getAuthToken(\n okhiApplicationConfiguration?.credentials.branchId || '',\n okhiApplicationConfiguration?.credentials.clientKey || ''\n ),\n },\n };\n }\n return null;\n } catch (error) {\n throw error;\n }\n}\n"]}
|
|
@@ -29,12 +29,29 @@ export const OkHiLocationManager = props => {
|
|
|
29
29
|
launch
|
|
30
30
|
} = props;
|
|
31
31
|
useEffect(() => {
|
|
32
|
-
if (user.phone) {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
32
|
+
if (applicationConfiguration == null && token == null && user.phone) {
|
|
33
|
+
getApplicationConfiguration().then(config => {
|
|
34
|
+
if (!config && launch) {
|
|
35
|
+
onError(new OkHiException({
|
|
36
|
+
code: OkHiException.UNAUTHORIZED_CODE,
|
|
37
|
+
message: OkHiException.UNAUTHORIZED_MESSAGE
|
|
38
|
+
}));
|
|
39
|
+
} else if (config) {
|
|
40
|
+
setApplicationConfiguration(config);
|
|
41
|
+
const auth = new OkHiAuth();
|
|
42
|
+
auth.anonymousSignInWithPhoneNumber(user.phone, ['address'], config).then(setToken).catch(error => {
|
|
43
|
+
if (launch) {
|
|
44
|
+
onError(error);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}).catch(error => {
|
|
49
|
+
if (launch) {
|
|
50
|
+
onError(error);
|
|
51
|
+
}
|
|
52
|
+
});
|
|
36
53
|
}
|
|
37
|
-
}, [onError, user.phone]);
|
|
54
|
+
}, [onError, user.phone, launch, applicationConfiguration, token]);
|
|
38
55
|
|
|
39
56
|
const handleOnMessage = _ref => {
|
|
40
57
|
let {
|
|
@@ -107,6 +124,7 @@ export const OkHiLocationManager = props => {
|
|
|
107
124
|
message: 'select_location',
|
|
108
125
|
payload: generateStartDataPayload(props, token, applicationConfiguration)
|
|
109
126
|
});
|
|
127
|
+
console.log('render');
|
|
110
128
|
return /*#__PURE__*/React.createElement(SafeAreaView, {
|
|
111
129
|
style: style
|
|
112
130
|
}, /*#__PURE__*/React.createElement(WebView, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["OkHiLocationManager.tsx"],"names":["React","useState","useEffect","Modal","SafeAreaView","Platform","WebView","Spinner","getFrameUrl","generateJavaScriptStartScript","generateStartDataPayload","parseOkHiLocation","OkHiException","OkHiAuth","start","sv","getApplicationConfiguration","OkHiLocationManager","props","token","setToken","applicationConfiguration","setApplicationConfiguration","defaultStyle","flex","style","user","onSuccess","onCloseRequest","onError","loader","launch","phone","auth","anonymousSignInWithPhoneNumber","then","catch","handleOnMessage","nativeEvent","data","response","JSON","parse","message","code","UNKNOWN_ERROR_CODE","payload","toString","location","startVerification","config","createdUser","Promise","resolve","reject","id","BAD_REQUEST_CODE","lat","lon","error","errorMessage","Error","handleOnError","NETWORK_ERROR_CODE","NETWORK_ERROR_MESSAGE","renderContent","jsAfterLoad","jsBeforeLoad","uri","OS","undefined"],"mappings":"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","sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { Modal, SafeAreaView, Platform } from 'react-native';\nimport { WebView, WebViewMessageEvent } from 'react-native-webview';\nimport { Spinner } from './Spinner';\nimport type {\n OkHiLocationManagerResponse,\n OkHiLocationManagerProps,\n} from './types';\nimport {\n getFrameUrl,\n generateJavaScriptStartScript,\n generateStartDataPayload,\n parseOkHiLocation,\n} from './Util';\nimport { OkHiException } from '../OkCore/OkHiException';\nimport { OkHiAuth } from '../OkCore/OkHiAuth';\nimport type { AuthApplicationConfig } from '../OkCore/_types';\nimport { start as sv } from '../OkVerify';\nimport type { OkVerifyStartConfiguration } from '../OkVerify/types';\nimport { getApplicationConfiguration } from '../OkCore';\n/**\n * The OkHiLocationManager React Component is used to display an in app modal, enabling the user to quickly create an accurate OkHi address.\n */\nexport const OkHiLocationManager = (props: OkHiLocationManagerProps) => {\n const [token, setToken] = useState<string | null>(null);\n const [applicationConfiguration, setApplicationConfiguration] =\n useState<AuthApplicationConfig | null>(null);\n const defaultStyle = { flex: 1 };\n const style = props.style\n ? { ...props.style, ...defaultStyle }\n : defaultStyle;\n\n const { user, onSuccess, onCloseRequest, onError, loader, launch } = props;\n\n useEffect(() => {\n if (user.phone) {\n const auth = new OkHiAuth();\n auth\n .anonymousSignInWithPhoneNumber(user.phone, ['address'])\n .then(setToken)\n .catch(onError);\n getApplicationConfiguration()\n .then(setApplicationConfiguration)\n .catch(onError);\n }\n }, [onError, user.phone]);\n\n const handleOnMessage = ({ nativeEvent: { data } }: WebViewMessageEvent) => {\n try {\n const response: OkHiLocationManagerResponse = JSON.parse(data);\n if (response.message === 'fatal_exit') {\n onError(\n new OkHiException({\n code: OkHiException.UNKNOWN_ERROR_CODE,\n message: response.payload.toString(),\n })\n );\n } else if (response.message === 'exit_app') {\n onCloseRequest();\n } else {\n onSuccess({\n ...response.payload,\n location: parseOkHiLocation(response.payload.location),\n startVerification: function (config?: OkVerifyStartConfiguration) {\n const createdUser = { ...this.user };\n const location = { ...this.location };\n return new Promise((resolve, reject) => {\n if (!location.id) {\n reject(\n new OkHiException({\n code: OkHiException.BAD_REQUEST_CODE,\n message: 'Missing location id from response',\n })\n );\n } else {\n sv(\n createdUser.phone,\n location.id,\n location.lat,\n location.lon,\n config\n )\n .then(resolve)\n .catch(reject);\n }\n });\n },\n });\n }\n } catch (error) {\n let errorMessage = 'Something went wrong';\n if (error instanceof Error) {\n errorMessage = error.message;\n }\n onError(\n new OkHiException({\n code: OkHiException.UNKNOWN_ERROR_CODE,\n message: errorMessage,\n })\n );\n }\n };\n\n const handleOnError = () => {\n onError(\n new OkHiException({\n code: OkHiException.NETWORK_ERROR_CODE,\n message: OkHiException.NETWORK_ERROR_MESSAGE,\n })\n );\n };\n\n const renderContent = () => {\n if (token === null || applicationConfiguration == null) {\n return loader || <Spinner />;\n }\n\n const { jsAfterLoad, jsBeforeLoad } = generateJavaScriptStartScript({\n message: 'select_location',\n payload: generateStartDataPayload(props, token, applicationConfiguration),\n });\n\n return (\n <SafeAreaView style={style}>\n <WebView\n source={{ uri: getFrameUrl(applicationConfiguration) }}\n injectedJavaScriptBeforeContentLoaded={\n Platform.OS === 'ios' ? jsBeforeLoad : undefined\n }\n injectedJavaScript={Platform.OS === 'ios' ? undefined : jsAfterLoad}\n onMessage={handleOnMessage}\n onError={handleOnError}\n onHttpError={handleOnError}\n geolocationEnabled={true}\n allowsBackForwardNavigationGestures={true}\n />\n </SafeAreaView>\n );\n };\n\n return (\n <Modal animationType=\"slide\" transparent={false} visible={launch}>\n {launch ? renderContent() : null}\n </Modal>\n );\n};\n\nexport default OkHiLocationManager;\n"]}
|
|
1
|
+
{"version":3,"sources":["OkHiLocationManager.tsx"],"names":["React","useState","useEffect","Modal","SafeAreaView","Platform","WebView","Spinner","getFrameUrl","generateJavaScriptStartScript","generateStartDataPayload","parseOkHiLocation","OkHiException","OkHiAuth","start","sv","getApplicationConfiguration","OkHiLocationManager","props","token","setToken","applicationConfiguration","setApplicationConfiguration","defaultStyle","flex","style","user","onSuccess","onCloseRequest","onError","loader","launch","phone","then","config","code","UNAUTHORIZED_CODE","message","UNAUTHORIZED_MESSAGE","auth","anonymousSignInWithPhoneNumber","catch","error","handleOnMessage","nativeEvent","data","response","JSON","parse","UNKNOWN_ERROR_CODE","payload","toString","location","startVerification","createdUser","Promise","resolve","reject","id","BAD_REQUEST_CODE","lat","lon","errorMessage","Error","handleOnError","NETWORK_ERROR_CODE","NETWORK_ERROR_MESSAGE","renderContent","jsAfterLoad","jsBeforeLoad","console","log","uri","OS","undefined"],"mappings":"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","sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { Modal, SafeAreaView, Platform } from 'react-native';\nimport { WebView, WebViewMessageEvent } from 'react-native-webview';\nimport { Spinner } from './Spinner';\nimport type {\n OkHiLocationManagerResponse,\n OkHiLocationManagerProps,\n} from './types';\nimport {\n getFrameUrl,\n generateJavaScriptStartScript,\n generateStartDataPayload,\n parseOkHiLocation,\n} from './Util';\nimport { OkHiException } from '../OkCore/OkHiException';\nimport { OkHiAuth } from '../OkCore/OkHiAuth';\nimport type { AuthApplicationConfig } from '../OkCore/_types';\nimport { start as sv } from '../OkVerify';\nimport type { OkVerifyStartConfiguration } from '../OkVerify/types';\nimport { getApplicationConfiguration } from '../OkCore';\n/**\n * The OkHiLocationManager React Component is used to display an in app modal, enabling the user to quickly create an accurate OkHi address.\n */\nexport const OkHiLocationManager = (props: OkHiLocationManagerProps) => {\n const [token, setToken] = useState<string | null>(null);\n const [applicationConfiguration, setApplicationConfiguration] =\n useState<AuthApplicationConfig | null>(null);\n const defaultStyle = { flex: 1 };\n const style = props.style\n ? { ...props.style, ...defaultStyle }\n : defaultStyle;\n\n const { user, onSuccess, onCloseRequest, onError, loader, launch } = props;\n\n useEffect(() => {\n if (applicationConfiguration == null && token == null && user.phone) {\n getApplicationConfiguration()\n .then((config) => {\n if (!config && launch) {\n onError(\n new OkHiException({\n code: OkHiException.UNAUTHORIZED_CODE,\n message: OkHiException.UNAUTHORIZED_MESSAGE,\n })\n );\n } else if (config) {\n setApplicationConfiguration(config);\n const auth = new OkHiAuth();\n auth\n .anonymousSignInWithPhoneNumber(user.phone, ['address'], config)\n .then(setToken)\n .catch((error) => {\n if (launch) {\n onError(error);\n }\n });\n }\n })\n .catch((error) => {\n if (launch) {\n onError(error);\n }\n });\n }\n }, [onError, user.phone, launch, applicationConfiguration, token]);\n\n const handleOnMessage = ({ nativeEvent: { data } }: WebViewMessageEvent) => {\n try {\n const response: OkHiLocationManagerResponse = JSON.parse(data);\n if (response.message === 'fatal_exit') {\n onError(\n new OkHiException({\n code: OkHiException.UNKNOWN_ERROR_CODE,\n message: response.payload.toString(),\n })\n );\n } else if (response.message === 'exit_app') {\n onCloseRequest();\n } else {\n onSuccess({\n ...response.payload,\n location: parseOkHiLocation(response.payload.location),\n startVerification: function (config?: OkVerifyStartConfiguration) {\n const createdUser = { ...this.user };\n const location = { ...this.location };\n return new Promise((resolve, reject) => {\n if (!location.id) {\n reject(\n new OkHiException({\n code: OkHiException.BAD_REQUEST_CODE,\n message: 'Missing location id from response',\n })\n );\n } else {\n sv(\n createdUser.phone,\n location.id,\n location.lat,\n location.lon,\n config\n )\n .then(resolve)\n .catch(reject);\n }\n });\n },\n });\n }\n } catch (error) {\n let errorMessage = 'Something went wrong';\n if (error instanceof Error) {\n errorMessage = error.message;\n }\n onError(\n new OkHiException({\n code: OkHiException.UNKNOWN_ERROR_CODE,\n message: errorMessage,\n })\n );\n }\n };\n\n const handleOnError = () => {\n onError(\n new OkHiException({\n code: OkHiException.NETWORK_ERROR_CODE,\n message: OkHiException.NETWORK_ERROR_MESSAGE,\n })\n );\n };\n\n const renderContent = () => {\n if (token === null || applicationConfiguration == null) {\n return loader || <Spinner />;\n }\n\n const { jsAfterLoad, jsBeforeLoad } = generateJavaScriptStartScript({\n message: 'select_location',\n payload: generateStartDataPayload(props, token, applicationConfiguration),\n });\n\n console.log('render');\n return (\n <SafeAreaView style={style}>\n <WebView\n source={{ uri: getFrameUrl(applicationConfiguration) }}\n injectedJavaScriptBeforeContentLoaded={\n Platform.OS === 'ios' ? jsBeforeLoad : undefined\n }\n injectedJavaScript={Platform.OS === 'ios' ? undefined : jsAfterLoad}\n onMessage={handleOnMessage}\n onError={handleOnError}\n onHttpError={handleOnError}\n geolocationEnabled={true}\n allowsBackForwardNavigationGestures={true}\n />\n </SafeAreaView>\n );\n };\n\n return (\n <Modal animationType=\"slide\" transparent={false} visible={launch}>\n {launch ? renderContent() : null}\n </Modal>\n );\n};\n\nexport default OkHiLocationManager;\n"]}
|
|
@@ -19,9 +19,12 @@ export class OkHiAuth {
|
|
|
19
19
|
_defineProperty(this, "SANDBOX_BASE_URL", `https://sandbox-api.okhi.io/${this.API_VERSION}` + this.ANONYMOUS_SIGN_IN_ENDPOINT);
|
|
20
20
|
|
|
21
21
|
_defineProperty(this, "PROD_BASE_URL", `https://api.okhi.io/${this.API_VERSION}` + this.ANONYMOUS_SIGN_IN_ENDPOINT);
|
|
22
|
+
|
|
23
|
+
_defineProperty(this, "config", null);
|
|
22
24
|
}
|
|
23
25
|
|
|
24
|
-
anonymousSignInWithPhoneNumber(phone, scopes) {
|
|
26
|
+
anonymousSignInWithPhoneNumber(phone, scopes, config) {
|
|
27
|
+
this.config = config;
|
|
25
28
|
return this.anonymousSignIn({
|
|
26
29
|
scopes,
|
|
27
30
|
phone
|
|
@@ -38,7 +41,7 @@ export class OkHiAuth {
|
|
|
38
41
|
async anonymousSignIn(payload) {
|
|
39
42
|
return new Promise(async (resolve, reject) => {
|
|
40
43
|
try {
|
|
41
|
-
const config = await getApplicationConfiguration();
|
|
44
|
+
const config = this.config || (await getApplicationConfiguration());
|
|
42
45
|
|
|
43
46
|
if (config === null || !config.auth || !config.auth.token) {
|
|
44
47
|
reject(new OkHiException({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["OkHiAuth.ts"],"names":["axios","OkHiMode","OkHiException","getApplicationConfiguration","OkHiAuth","API_VERSION","ANONYMOUS_SIGN_IN_ENDPOINT","anonymousSignInWithPhoneNumber","phone","scopes","anonymousSignIn","anonymousSignInWithUserId","userId","user_id","payload","Promise","resolve","reject","
|
|
1
|
+
{"version":3,"sources":["OkHiAuth.ts"],"names":["axios","OkHiMode","OkHiException","getApplicationConfiguration","OkHiAuth","API_VERSION","ANONYMOUS_SIGN_IN_ENDPOINT","anonymousSignInWithPhoneNumber","phone","scopes","config","anonymousSignIn","anonymousSignInWithUserId","userId","user_id","payload","Promise","resolve","reject","auth","token","code","UNAUTHORIZED_CODE","message","UNAUTHORIZED_MESSAGE","context","url","SANDBOX_BASE_URL","mode","DEV_BASE_URL","PROD","PROD_BASE_URL","headers","Authorization","data","post","authorization_token","error","parseRequestError","response","NETWORK_ERROR_CODE","NETWORK_ERROR_MESSAGE","status","INVALID_PHONE_CODE","INVALID_PHONE_MESSAGE","UNKNOWN_ERROR_CODE","UNKNOWN_ERROR_MESSAGE"],"mappings":"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","sourcesContent":["import axios from 'axios';\nimport { OkHiMode } from './OkHiMode';\nimport { OkHiException } from './OkHiException';\nimport type { AuthApplicationConfig, OkHiAccessScope } from './_types';\nimport { getApplicationConfiguration } from './';\n\n/**\n * @ignore\n */\nexport class OkHiAuth {\n private readonly API_VERSION = 'v5';\n private readonly ANONYMOUS_SIGN_IN_ENDPOINT = '/auth/anonymous-signin';\n private readonly DEV_BASE_URL =\n `https://dev-api.okhi.io/${this.API_VERSION}` +\n this.ANONYMOUS_SIGN_IN_ENDPOINT;\n private readonly SANDBOX_BASE_URL =\n `https://sandbox-api.okhi.io/${this.API_VERSION}` +\n this.ANONYMOUS_SIGN_IN_ENDPOINT;\n private readonly PROD_BASE_URL =\n `https://api.okhi.io/${this.API_VERSION}` + this.ANONYMOUS_SIGN_IN_ENDPOINT;\n private config: AuthApplicationConfig | null = null;\n\n anonymousSignInWithPhoneNumber(\n phone: string,\n scopes: Array<OkHiAccessScope>,\n config: AuthApplicationConfig\n ) {\n this.config = config;\n return this.anonymousSignIn({\n scopes,\n phone,\n });\n }\n\n protected anonymousSignInWithUserId(\n userId: string,\n scopes: Array<OkHiAccessScope>\n ) {\n return this.anonymousSignIn({\n scopes,\n user_id: userId,\n });\n }\n\n private async anonymousSignIn(payload: {\n scopes: Array<OkHiAccessScope>;\n [key: string]: any;\n }): Promise<string> {\n return new Promise(async (resolve, reject) => {\n try {\n const config = this.config || (await getApplicationConfiguration());\n if (config === null || !config.auth || !config.auth.token) {\n reject(\n new OkHiException({\n code: OkHiException.UNAUTHORIZED_CODE,\n message: OkHiException.UNAUTHORIZED_MESSAGE,\n })\n );\n } else {\n const { auth, context } = config;\n let url = this.SANDBOX_BASE_URL;\n if (context?.mode === ('dev' as any)) {\n url = this.DEV_BASE_URL;\n } else if (context?.mode === OkHiMode.PROD) {\n url = this.PROD_BASE_URL;\n } else {\n url = this.SANDBOX_BASE_URL;\n }\n const headers = { Authorization: auth.token };\n const { data } = await axios.post(url, payload, {\n headers,\n });\n resolve(data.authorization_token);\n }\n } catch (error) {\n reject(this.parseRequestError(error));\n }\n });\n }\n\n private parseRequestError(error: any) {\n if (!error.response) {\n return new OkHiException({\n code: OkHiException.NETWORK_ERROR_CODE,\n message: OkHiException.NETWORK_ERROR_MESSAGE,\n });\n }\n switch (error.response.status) {\n case 400:\n return new OkHiException({\n code: OkHiException.INVALID_PHONE_CODE,\n message: OkHiException.INVALID_PHONE_MESSAGE,\n });\n case 401:\n return new OkHiException({\n code: OkHiException.UNAUTHORIZED_CODE,\n message: OkHiException.UNAUTHORIZED_MESSAGE,\n });\n default:\n return new OkHiException({\n code: OkHiException.UNKNOWN_ERROR_CODE,\n message: error.message || OkHiException.UNKNOWN_ERROR_MESSAGE,\n });\n }\n }\n}\n"]}
|
|
@@ -14,13 +14,13 @@ let okhiApplicationConfiguration;
|
|
|
14
14
|
|
|
15
15
|
export function initialize(configuration) {
|
|
16
16
|
return errorHandler(async () => {
|
|
17
|
+
okhiApplicationConfiguration = configuration;
|
|
18
|
+
|
|
17
19
|
if (Platform.OS === 'android') {
|
|
18
20
|
await OkHiNativeModule.initialize(JSON.stringify(configuration));
|
|
19
21
|
} else {
|
|
20
22
|
await OkHiNativeModule.initializeIOS(configuration.credentials.branchId, configuration.credentials.clientKey, configuration.context.mode);
|
|
21
23
|
}
|
|
22
|
-
|
|
23
|
-
okhiApplicationConfiguration = configuration;
|
|
24
24
|
});
|
|
25
25
|
}
|
|
26
26
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.ts"],"names":["Platform","OkHiNativeModule","errorHandler","okhiApplicationConfiguration","initialize","configuration","OS","JSON","stringify","initializeIOS","credentials","branchId","clientKey","context","mode","getApplicationConfiguration","auth","token","getAuthToken","error"],"mappings":"AAAA,SAASA,QAAT,QAAyB,cAAzB;AACA,SAASC,gBAAT,QAAiC,qBAAjC;AAEA,SAASC,YAAT,QAA6B,YAA7B;AAGA,cAAc,SAAd;AACA,cAAc,iBAAd;AACA,cAAc,YAAd;AACA,cAAc,WAAd;AAEA,IAAIC,4BAAJ;AAEA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASC,UAAT,CACLC,aADK,EAEU;AACf,SAAOH,YAAY,CAAC,YAAY;
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":["Platform","OkHiNativeModule","errorHandler","okhiApplicationConfiguration","initialize","configuration","OS","JSON","stringify","initializeIOS","credentials","branchId","clientKey","context","mode","getApplicationConfiguration","auth","token","getAuthToken","error"],"mappings":"AAAA,SAASA,QAAT,QAAyB,cAAzB;AACA,SAASC,gBAAT,QAAiC,qBAAjC;AAEA,SAASC,YAAT,QAA6B,YAA7B;AAGA,cAAc,SAAd;AACA,cAAc,iBAAd;AACA,cAAc,YAAd;AACA,cAAc,WAAd;AAEA,IAAIC,4BAAJ;AAEA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASC,UAAT,CACLC,aADK,EAEU;AACf,SAAOH,YAAY,CAAC,YAAY;AAC9BC,IAAAA,4BAA4B,GAAGE,aAA/B;;AACA,QAAIL,QAAQ,CAACM,EAAT,KAAgB,SAApB,EAA+B;AAC7B,YAAML,gBAAgB,CAACG,UAAjB,CAA4BG,IAAI,CAACC,SAAL,CAAeH,aAAf,CAA5B,CAAN;AACD,KAFD,MAEO;AACL,YAAMJ,gBAAgB,CAACQ,aAAjB,CACJJ,aAAa,CAACK,WAAd,CAA0BC,QADtB,EAEJN,aAAa,CAACK,WAAd,CAA0BE,SAFtB,EAGJP,aAAa,CAACQ,OAAd,CAAsBC,IAHlB,CAAN;AAKD;AACF,GAXkB,CAAnB;AAYD;AAED;AACA;AACA;AACA;;AACA,OAAO,eAAeC,2BAAf,GAAoF;AACzF,MAAI;AACF,QAAI,OAAOZ,4BAAP,KAAwC,QAA5C,EAAsD;AAAA;;AACpD,aAAO,EACL,GAAGA,4BADE;AAELa,QAAAA,IAAI,EAAE;AACJC,UAAAA,KAAK,EAAE,MAAMhB,gBAAgB,CAACiB,YAAjB,CACX,0BAAAf,4BAA4B,UAA5B,sEAA8BO,WAA9B,CAA0CC,QAA1C,KAAsD,EAD3C,EAEX,2BAAAR,4BAA4B,UAA5B,wEAA8BO,WAA9B,CAA0CE,SAA1C,KAAuD,EAF5C;AADT;AAFD,OAAP;AASD;;AACD,WAAO,IAAP;AACD,GAbD,CAaE,OAAOO,KAAP,EAAc;AACd,UAAMA,KAAN;AACD;AACF","sourcesContent":["import { Platform } from 'react-native';\nimport { OkHiNativeModule } from '../OkHiNativeModule';\nimport type { OkHiApplicationConfiguration } from './types';\nimport { errorHandler } from './_helpers';\nimport type { AuthApplicationConfig } from './_types';\n\nexport * from './types';\nexport * from './OkHiException';\nexport * from './OkHiMode';\nexport * from './Helpers';\n\nlet okhiApplicationConfiguration: OkHiApplicationConfiguration | undefined;\n\n/**\n * Initializes the OkHi library with provided API keys\n * @param {Object} configuration A configuration object with your OkHi credentials as well as library settings\n * @returns {Promise<void>} A promise that resolves when initialization is successful\n */\nexport function initialize(\n configuration: OkHiApplicationConfiguration\n): Promise<void> {\n return errorHandler(async () => {\n okhiApplicationConfiguration = configuration;\n if (Platform.OS === 'android') {\n await OkHiNativeModule.initialize(JSON.stringify(configuration));\n } else {\n await OkHiNativeModule.initializeIOS(\n configuration.credentials.branchId,\n configuration.credentials.clientKey,\n configuration.context.mode\n );\n }\n });\n}\n\n/**\n * Obtains your current running configuration\n * @returns {Promise<void>} A promise that resolves with your application configuration\n */\nexport async function getApplicationConfiguration(): Promise<AuthApplicationConfig | null> {\n try {\n if (typeof okhiApplicationConfiguration === 'object') {\n return {\n ...okhiApplicationConfiguration,\n auth: {\n token: await OkHiNativeModule.getAuthToken(\n okhiApplicationConfiguration?.credentials.branchId || '',\n okhiApplicationConfiguration?.credentials.clientKey || ''\n ),\n },\n };\n }\n return null;\n } catch (error) {\n throw error;\n }\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { OkHiAccessScope } from './_types';
|
|
1
|
+
import type { AuthApplicationConfig, OkHiAccessScope } from './_types';
|
|
2
2
|
/**
|
|
3
3
|
* @ignore
|
|
4
4
|
*/
|
|
@@ -8,7 +8,8 @@ export declare class OkHiAuth {
|
|
|
8
8
|
private readonly DEV_BASE_URL;
|
|
9
9
|
private readonly SANDBOX_BASE_URL;
|
|
10
10
|
private readonly PROD_BASE_URL;
|
|
11
|
-
|
|
11
|
+
private config;
|
|
12
|
+
anonymousSignInWithPhoneNumber(phone: string, scopes: Array<OkHiAccessScope>, config: AuthApplicationConfig): Promise<string>;
|
|
12
13
|
protected anonymousSignInWithUserId(userId: string, scopes: Array<OkHiAccessScope>): Promise<string>;
|
|
13
14
|
private anonymousSignIn;
|
|
14
15
|
private parseRequestError;
|
package/package.json
CHANGED
|
@@ -33,17 +33,36 @@ export const OkHiLocationManager = (props: OkHiLocationManagerProps) => {
|
|
|
33
33
|
const { user, onSuccess, onCloseRequest, onError, loader, launch } = props;
|
|
34
34
|
|
|
35
35
|
useEffect(() => {
|
|
36
|
-
if (user.phone) {
|
|
37
|
-
const auth = new OkHiAuth();
|
|
38
|
-
auth
|
|
39
|
-
.anonymousSignInWithPhoneNumber(user.phone, ['address'])
|
|
40
|
-
.then(setToken)
|
|
41
|
-
.catch(onError);
|
|
36
|
+
if (applicationConfiguration == null && token == null && user.phone) {
|
|
42
37
|
getApplicationConfiguration()
|
|
43
|
-
.then(
|
|
44
|
-
|
|
38
|
+
.then((config) => {
|
|
39
|
+
if (!config && launch) {
|
|
40
|
+
onError(
|
|
41
|
+
new OkHiException({
|
|
42
|
+
code: OkHiException.UNAUTHORIZED_CODE,
|
|
43
|
+
message: OkHiException.UNAUTHORIZED_MESSAGE,
|
|
44
|
+
})
|
|
45
|
+
);
|
|
46
|
+
} else if (config) {
|
|
47
|
+
setApplicationConfiguration(config);
|
|
48
|
+
const auth = new OkHiAuth();
|
|
49
|
+
auth
|
|
50
|
+
.anonymousSignInWithPhoneNumber(user.phone, ['address'], config)
|
|
51
|
+
.then(setToken)
|
|
52
|
+
.catch((error) => {
|
|
53
|
+
if (launch) {
|
|
54
|
+
onError(error);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
})
|
|
59
|
+
.catch((error) => {
|
|
60
|
+
if (launch) {
|
|
61
|
+
onError(error);
|
|
62
|
+
}
|
|
63
|
+
});
|
|
45
64
|
}
|
|
46
|
-
}, [onError, user.phone]);
|
|
65
|
+
}, [onError, user.phone, launch, applicationConfiguration, token]);
|
|
47
66
|
|
|
48
67
|
const handleOnMessage = ({ nativeEvent: { data } }: WebViewMessageEvent) => {
|
|
49
68
|
try {
|
|
@@ -120,6 +139,7 @@ export const OkHiLocationManager = (props: OkHiLocationManagerProps) => {
|
|
|
120
139
|
payload: generateStartDataPayload(props, token, applicationConfiguration),
|
|
121
140
|
});
|
|
122
141
|
|
|
142
|
+
console.log('render');
|
|
123
143
|
return (
|
|
124
144
|
<SafeAreaView style={style}>
|
|
125
145
|
<WebView
|
package/src/OkCore/OkHiAuth.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import axios from 'axios';
|
|
2
2
|
import { OkHiMode } from './OkHiMode';
|
|
3
3
|
import { OkHiException } from './OkHiException';
|
|
4
|
-
import type { OkHiAccessScope } from './_types';
|
|
4
|
+
import type { AuthApplicationConfig, OkHiAccessScope } from './_types';
|
|
5
5
|
import { getApplicationConfiguration } from './';
|
|
6
6
|
|
|
7
7
|
/**
|
|
@@ -18,11 +18,14 @@ export class OkHiAuth {
|
|
|
18
18
|
this.ANONYMOUS_SIGN_IN_ENDPOINT;
|
|
19
19
|
private readonly PROD_BASE_URL =
|
|
20
20
|
`https://api.okhi.io/${this.API_VERSION}` + this.ANONYMOUS_SIGN_IN_ENDPOINT;
|
|
21
|
+
private config: AuthApplicationConfig | null = null;
|
|
21
22
|
|
|
22
23
|
anonymousSignInWithPhoneNumber(
|
|
23
24
|
phone: string,
|
|
24
|
-
scopes: Array<OkHiAccessScope
|
|
25
|
+
scopes: Array<OkHiAccessScope>,
|
|
26
|
+
config: AuthApplicationConfig
|
|
25
27
|
) {
|
|
28
|
+
this.config = config;
|
|
26
29
|
return this.anonymousSignIn({
|
|
27
30
|
scopes,
|
|
28
31
|
phone,
|
|
@@ -45,7 +48,7 @@ export class OkHiAuth {
|
|
|
45
48
|
}): Promise<string> {
|
|
46
49
|
return new Promise(async (resolve, reject) => {
|
|
47
50
|
try {
|
|
48
|
-
const config = await getApplicationConfiguration();
|
|
51
|
+
const config = this.config || (await getApplicationConfiguration());
|
|
49
52
|
if (config === null || !config.auth || !config.auth.token) {
|
|
50
53
|
reject(
|
|
51
54
|
new OkHiException({
|
package/src/OkCore/index.ts
CHANGED
|
@@ -20,6 +20,7 @@ export function initialize(
|
|
|
20
20
|
configuration: OkHiApplicationConfiguration
|
|
21
21
|
): Promise<void> {
|
|
22
22
|
return errorHandler(async () => {
|
|
23
|
+
okhiApplicationConfiguration = configuration;
|
|
23
24
|
if (Platform.OS === 'android') {
|
|
24
25
|
await OkHiNativeModule.initialize(JSON.stringify(configuration));
|
|
25
26
|
} else {
|
|
@@ -29,7 +30,6 @@ export function initialize(
|
|
|
29
30
|
configuration.context.mode
|
|
30
31
|
);
|
|
31
32
|
}
|
|
32
|
-
okhiApplicationConfiguration = configuration;
|
|
33
33
|
});
|
|
34
34
|
}
|
|
35
35
|
|