diff options
| author | crupest <crupest@outlook.com> | 2020-07-31 00:25:50 +0800 | 
|---|---|---|
| committer | crupest <crupest@outlook.com> | 2020-07-31 00:25:50 +0800 | 
| commit | e408d62889f8eab4603f1d14bd650aea066cd00c (patch) | |
| tree | 08d8024d26df0ff30f596935e021f5e8dbd57c8d /Timeline/ClientApp/src/app/http | |
| parent | 8dd3bc0ac8c7035edec7974e76f4e49d7e401ab5 (diff) | |
| download | timeline-e408d62889f8eab4603f1d14bd650aea066cd00c.tar.gz timeline-e408d62889f8eab4603f1d14bd650aea066cd00c.tar.bz2 timeline-e408d62889f8eab4603f1d14bd650aea066cd00c.zip | |
Add mock network latency.
Diffstat (limited to 'Timeline/ClientApp/src/app/http')
| -rw-r--r-- | Timeline/ClientApp/src/app/http/mock/common.ts | 28 | 
1 files changed, 28 insertions, 0 deletions
| diff --git a/Timeline/ClientApp/src/app/http/mock/common.ts b/Timeline/ClientApp/src/app/http/mock/common.ts index 11939c2b..a3ad08ee 100644 --- a/Timeline/ClientApp/src/app/http/mock/common.ts +++ b/Timeline/ClientApp/src/app/http/mock/common.ts @@ -22,10 +22,16 @@ export async function sha1(data: Blob): Promise<string> {  }
  const disableNetworkKey = 'mockServer.disableNetwork';
 +const networkLatencyKey = 'mockServer.networkLatency';
  let disableNetwork: boolean =
    localStorage.getItem(disableNetworkKey) === 'true' ? true : false;
 +const savedNetworkLatency = localStorage.getItem(networkLatencyKey);
 +
 +let networkLatency: number | null =
 +  savedNetworkLatency != null ? Number(savedNetworkLatency) : null;
 +
  Object.defineProperty(window, 'disableNetwork', {
    get: () => disableNetwork,
    set: (value) => {
 @@ -39,10 +45,32 @@ Object.defineProperty(window, 'disableNetwork', {    },
  });
 +Object.defineProperty(window, 'networkLatency', {
 +  get: () => networkLatency,
 +  set: (value) => {
 +    if (typeof value === 'number') {
 +      networkLatency = value;
 +      localStorage.setItem(networkLatencyKey, value.toString());
 +    } else if (value == null) {
 +      networkLatency = null;
 +      localStorage.removeItem(networkLatencyKey);
 +    }
 +  },
 +});
 +
  export async function mockPrepare(): Promise<void> {
    if (disableNetwork) {
      console.warn('Network is disabled for mock server.');
      throw new HttpNetworkError();
    }
 +  if (networkLatency != null) {
 +    await new Promise((resolve) => {
 +      window.setTimeout(() => {
 +        resolve();
 +        // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
 +      }, networkLatency! * 1000);
 +    });
 +  }
 +
    await Promise.resolve();
  }
 | 
