From e2ec21df11db3392fba14cdd301f1919a8db258a Mon Sep 17 00:00:00 2001 From: DarkSky Date: Mon, 2 Jan 2023 22:38:10 +0800 Subject: [PATCH] feat: destroy workspace instance --- .../data-center/src/datacenter/provider/affine/index.ts | 3 +++ packages/data-center/src/datacenter/store.ts | 6 +++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/data-center/src/datacenter/provider/affine/index.ts b/packages/data-center/src/datacenter/provider/affine/index.ts index c9c1b0e096..0511fc6c57 100644 --- a/packages/data-center/src/datacenter/provider/affine/index.ts +++ b/packages/data-center/src/datacenter/provider/affine/index.ts @@ -52,6 +52,9 @@ export class AffineProvider extends LocalProvider { if (this._onTokenRefresh) { token.offChange(this._onTokenRefresh); } + if (this._ws) { + this._ws.disconnect(); + } } async initData() { diff --git a/packages/data-center/src/datacenter/store.ts b/packages/data-center/src/datacenter/store.ts index 108b1ff28b..b8dd831f95 100644 --- a/packages/data-center/src/datacenter/store.ts +++ b/packages/data-center/src/datacenter/store.ts @@ -1,8 +1,9 @@ -import { createStore, del, get, keys, set, clear } from 'idb-keyval'; +import { createStore, del, get, keys, set, setMany, clear } from 'idb-keyval'; export type ConfigStore = { get: (key: string) => Promise; set: (key: string, value: T) => Promise; + setMany: (values: [string, T][]) => Promise; keys: () => Promise; delete: (key: string) => Promise; clear: () => Promise; @@ -13,6 +14,7 @@ const initialIndexedDB = (database: string): ConfigStore => { return { get: (key: string) => get(key, store), set: (key: string, value: T) => set(key, value, store), + setMany: (values: [string, T][]) => setMany(values, store), keys: () => keys(store), delete: (key: string) => del(key, store), clear: () => clear(store), @@ -28,6 +30,8 @@ const scopedIndexedDB = () => { const store = { get: async (key: string) => idb.get(`${scope}:${key}`), set: (key: string, value: T) => idb.set(`${scope}:${key}`, value), + setMany: (values: [string, T][]) => + idb.setMany(values.map(([k, v]) => [`${scope}:${k}`, v])), keys: () => idb .keys()