import { NativeModules, NativeModulesStatic } from "react-native";

import { Storage } from "../Storage";

const storage = "SessionStorage";

const { SessionStorage } = NativeModules as NativeModulesStatic & {
  SessionStorage: NativeSessionStorageI;
};

class SessionStorageModule extends Storage {
  private static _instance: SessionStorageModule;

  static get instance() {
    if (!SessionStorageModule._instance) {
      SessionStorageModule._instance = new SessionStorageModule();
    }

    return SessionStorageModule._instance;
  }

  constructor() {
    super(storage, SessionStorage);
  }
}

export const sessionStorage = new SessionStorageModule();

// this is only added for backwards compatibility with Cognito Favourites plugin
export const SessionStorageListener = sessionStorage;
