UNPKG

@amityco/ts-sdk-react-native

Version:

Amity Social Cloud Typescript SDK

36 lines (28 loc) 813 B
type SessionStateCallback = (state: Amity.SessionStates) => void; class SessionWatcher { private _sessionState: Amity.SessionStates = Amity.SessionStates.NOT_LOGGED_IN; private _listener = new Map<SessionStateCallback, SessionStateCallback>(); onSessionStateChange(callback: SessionStateCallback) { this._listener.set(callback, callback); return () => { this._listener.delete(callback); }; } setSessionState(state: Amity.SessionStates) { if (this._sessionState === state) return; this._sessionState = state; this._listener.forEach(cb => cb(state)); } destroy() { this._listener.clear(); } } let instance: SessionWatcher; export default { getInstance: () => { if (!instance) { instance = new SessionWatcher(); } return instance; }, };