From b78d21a524f7a11ad29b4bd230f23825f80c3ed7 Mon Sep 17 00:00:00 2001 From: crupest Date: Sun, 26 Jul 2020 15:02:55 +0800 Subject: Merge front end repo --- Timeline/ClientApp/src/app/http/mock/common.ts | 48 ++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 Timeline/ClientApp/src/app/http/mock/common.ts (limited to 'Timeline/ClientApp/src/app/http/mock/common.ts') diff --git a/Timeline/ClientApp/src/app/http/mock/common.ts b/Timeline/ClientApp/src/app/http/mock/common.ts new file mode 100644 index 00000000..11939c2b --- /dev/null +++ b/Timeline/ClientApp/src/app/http/mock/common.ts @@ -0,0 +1,48 @@ +import localforage from 'localforage'; +import { SHA1 } from 'crypto-js'; + +import { HttpNetworkError } from '../common'; + +export const mockStorage = localforage.createInstance({ + name: 'mock-backend', + description: 'Database for mock back end.', + driver: localforage.INDEXEDDB, +}); + +export async function sha1(data: Blob): Promise { + const s = await new Promise((resolve) => { + const fileReader = new FileReader(); + fileReader.readAsBinaryString(data); + fileReader.onload = () => { + resolve(fileReader.result as string); + }; + }); + + return SHA1(s).toString(); +} + +const disableNetworkKey = 'mockServer.disableNetwork'; + +let disableNetwork: boolean = + localStorage.getItem(disableNetworkKey) === 'true' ? true : false; + +Object.defineProperty(window, 'disableNetwork', { + get: () => disableNetwork, + set: (value) => { + if (value) { + disableNetwork = true; + localStorage.setItem(disableNetworkKey, 'true'); + } else { + disableNetwork = false; + localStorage.setItem(disableNetworkKey, 'false'); + } + }, +}); + +export async function mockPrepare(): Promise { + if (disableNetwork) { + console.warn('Network is disabled for mock server.'); + throw new HttpNetworkError(); + } + await Promise.resolve(); +} -- cgit v1.2.3