From ed3b4e953b5d6b2531dad5065256ab5a95ad3b97 Mon Sep 17 00:00:00 2001 From: Andreas Gassmann Date: Wed, 18 Dec 2019 10:07:01 +0000 Subject: [PATCH] feat(storage): add localstorage --- src/client/storage/LocalStorage.ts | 2 +- src/client/storage/StorageProvider.ts | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 src/client/storage/StorageProvider.ts diff --git a/src/client/storage/LocalStorage.ts b/src/client/storage/LocalStorage.ts index 1027e5a10..af0930881 100644 --- a/src/client/storage/LocalStorage.ts +++ b/src/client/storage/LocalStorage.ts @@ -2,7 +2,7 @@ import { Storage } from './Storage' export class LocalStorage implements Storage { public async isSupported(): Promise { - return Promise.resolve(window && !!window.localStorage) + return Promise.resolve(typeof window !== 'undefined' && !!window.localStorage) } public async get(key: string): Promise { diff --git a/src/client/storage/StorageProvider.ts b/src/client/storage/StorageProvider.ts new file mode 100644 index 000000000..72003c796 --- /dev/null +++ b/src/client/storage/StorageProvider.ts @@ -0,0 +1,15 @@ +import { FileStorage } from "./FileStorage" +import { LocalStorage } from "./LocalStorage" +import { Storage } from "./Storage" + +export async function getStorage(): Promise { + const local: LocalStorage = new LocalStorage() + const file: FileStorage = new FileStorage() + if (await local.isSupported()) { + return local + } else if (await file.isSupported()) { + return file + } else { + throw new Error('no storage type supported') + } +} \ No newline at end of file