import CoreManager from './CoreManager';
const Storage = {
async(): boolean {
const controller = CoreManager.getStorageController();
return !!controller.async;
},
getItem(path: string): string | null {
const controller = CoreManager.getStorageController();
if (controller.async === 1) {
throw new Error('Synchronous storage is not supported by the current storage controller');
}
return controller.getItem(path);
},
getItemAsync(path: string): Promise<string | null> {
const controller = CoreManager.getStorageController();
if (controller.async === 1) {
return controller.getItemAsync(path);
}
return Promise.resolve(controller.getItem(path));
},
setItem(path: string, value: string): void {
const controller = CoreManager.getStorageController();
if (controller.async === 1) {
throw new Error('Synchronous storage is not supported by the current storage controller');
}
return controller.setItem(path, value);
},
setItemAsync(path: string, value: string): Promise<void> {
const controller = CoreManager.getStorageController();
if (controller.async === 1) {
return controller.setItemAsync(path, value);
}
return Promise.resolve(controller.setItem(path, value));
},
removeItem(path: string): void {
const controller = CoreManager.getStorageController();
if (controller.async === 1) {
throw new Error('Synchronous storage is not supported by the current storage controller');
}
return controller.removeItem(path);
},
removeItemAsync(path: string): Promise<void> {
const controller = CoreManager.getStorageController();
if (controller.async === 1) {
return controller.removeItemAsync(path);
}
return Promise.resolve(controller.removeItem(path));
},
getAllKeys(): string[] {
const controller = CoreManager.getStorageController();
if (controller.async === 1) {
throw new Error('Synchronous storage is not supported by the current storage controller');
}
return controller.getAllKeys!();
},
getAllKeysAsync(): Promise<string[]> {
const controller = CoreManager.getStorageController();
if (controller.async === 1) {
return controller.getAllKeysAsync!();
}
return Promise.resolve(controller.getAllKeys!());
},
generatePath(path: string): string {
if (!CoreManager.get('APPLICATION_ID')) {
throw new Error('You need to call Parse.initialize before using Parse.');
}
if (typeof path !== 'string') {
throw new Error('Tried to get a Storage path that was not a String.');
}
if (path[0] === '/') {
path = path.substr(1);
}
return 'Parse/' + CoreManager.get('APPLICATION_ID') + '/' + path;
},
_clear() {
const controller = CoreManager.getStorageController();
if (Object.prototype.hasOwnProperty.call(controller, 'clear')) {
controller.clear();
}
},
};
export default Storage;