import { IS_BROWSER } from '../../constants';
import { ILocalStorage } from './types';

/**
 * Async interface to the browser's local-storage.
 */
export function init(): ILocalStorage {
  if (IS_BROWSER) {
    const store = window.localStorage;
    return {
      async getItem(key: string) {
        return store.getItem(key);
      },
      async setItem(key: string, value: any) {
        store.setItem(key, value);
      },
      async removeItem(key: string) {
        store.removeItem(key);
      },
    };
  } else {
    // Not in browser, return no-op.
    return {
      async getItem() {
        return undefined;
      },
      async setItem() {
        return undefined;
      },
      async removeItem() {
        return undefined;
      },
    };
  }
}
