import Bridge from '../manager/BridgeManager'
import { BridgeParams } from '../types/type'
import { CoolinkRetCode, CoolinkRetValue } from './type'
import mpWeb from './MpWeb';

class StorageModule {
  private static instance: StorageModule;

  public static getModule(): StorageModule {
    if (this.instance == null) {
      this.instance = new StorageModule()
    }
    return StorageModule.instance
  }

  public setKey(key: string, value: string) : Promise<CoolinkRetCode> {
    let bridgeParams : BridgeParams = {
      module: 'storage',
      method: 'setKey',
      params: {
        key, value
      }
    };
    return mpWeb.callNative(bridgeParams);
  }

  public getKey(key: string) : Promise<CoolinkRetValue> {
    let bridgeParams : BridgeParams = {
      module: 'storage',
      method: 'getKey',
      params: {
        key
      }
    };
    return mpWeb.callNative(bridgeParams);
  }

  public deleteKey(key: string) : Promise<CoolinkRetCode> {
    let bridgeParams : BridgeParams = {
      module: 'storage',
      method: 'deleteKey',
      params: {
        key
      }
    };
    return mpWeb.callNative(bridgeParams);
  }

  public clearAllKeys() : Promise<CoolinkRetCode> {
    let bridgeParams : BridgeParams = {
      module: 'storage',
      method: 'clearAllKeys',
      params: {
      }
    };
    return mpWeb.callNative(bridgeParams);
  }

}

export default StorageModule;
