react-native-gigya-sdk
Version:
SAP CDC/Gigya SDK for your React Native applications
45 lines (35 loc) • 1.16 kB
text/typescript
import type { GigyaSdkStateType } from '../types'
import { state, initialState } from '../internals/state'
export default function (): Promise<GigyaSdkStateType> {
return new Promise(async (resolve, reject) => {
try {
if (!Object.is(state, initialState)) {
return resolve(state)
}
let output: GigyaSdkStateType | null = null
const rehydrateState = async (storeKey: string): Promise<GigyaSdkStateType | null> => {
let persistedState = null
try {
const data = await Promise.resolve(state.storage?.getItem?.(storeKey))
if (data) {
persistedState = JSON.parse(data) as GigyaSdkStateType
}
} catch (error) {
reject(error)
}
return persistedState
}
output = await rehydrateState(state.storageKey)
if (
output?.storageKey &&
output?.storageKey !== state.storageKey &&
state?.storageKey === initialState.storageKey
) {
output = await rehydrateState(output?.storageKey as string)
}
resolve(output || initialState)
} catch (e) {
reject(e)
}
})
}