import { GigyaSdkDataCenters, GigyaSdkLinkAccountVersions, GigyaSdkStateType } from '../types' import getState from '../core/getState' export const initialState: GigyaSdkStateType = { UID: '', lang: 'en', apiKey: '', storageKey: 'GigyaSdkState', dataCenter: GigyaSdkDataCenters.EU1, linkAccountVersion: GigyaSdkLinkAccountVersions.V1, } export let state: GigyaSdkStateType = initialState export function setState(data: Partial): Promise { return new Promise(async (resolve, reject) => { try { const oldState = await getState() const newState = { ...oldState, ...data } const setItem = data.storage?.setItem || oldState.storage?.setItem await Promise.resolve(setItem?.(newState.storageKey, JSON.stringify(newState))) state = newState resolve(state) } catch (e) { reject(e) } }) }