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 | 4e5a42bfb82aacfcc6d2d1be24aaceb73b4b154d (patch) | |
tree | bd2f24cbdaaed5d5ebbf4c5ccf1797093da1fabe /Timeline/ClientApp/src | |
parent | 9e500f240a76bd0e16c8c63b764dd81c01f46f78 (diff) | |
download | timeline-4e5a42bfb82aacfcc6d2d1be24aaceb73b4b154d.tar.gz timeline-4e5a42bfb82aacfcc6d2d1be24aaceb73b4b154d.tar.bz2 timeline-4e5a42bfb82aacfcc6d2d1be24aaceb73b4b154d.zip |
Add mock network latency.
Diffstat (limited to 'Timeline/ClientApp/src')
-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();
}
|