@netless/window-manager 1.0.17 → 1.0.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@netless/window-manager",
3
- "version": "1.0.17",
3
+ "version": "1.0.18",
4
4
  "description": "Multi-window mode for Netless Whiteboard",
5
5
  "author": "l1shen <lishen1635@gmail.com> (https://github.com/l1shen)",
6
6
  "license": "MIT",
package/src/AppManager.ts CHANGED
@@ -745,8 +745,19 @@ export class AppManager {
745
745
  public setMainViewFocusPath(scenePath?: string) {
746
746
  const focusScenePath = scenePath || this.store.getMainViewScenePath();
747
747
  if (focusScenePath) {
748
- setViewFocusScenePath(this.mainView, focusScenePath);
749
- return this.mainView?.focusScenePath === focusScenePath;
748
+ try {
749
+ setViewFocusScenePath(this.mainView, focusScenePath);
750
+ return this.mainView?.focusScenePath === focusScenePath;
751
+ } catch (error) {
752
+ const cause = error instanceof Error ? error : new Error(String(error));
753
+ this.Logger?.error(
754
+ `[WindowManager]: set main view focus scene path failed, ` +
755
+ `focusScenePath: ${focusScenePath}, ` +
756
+ `didRelease: ${Boolean((this.mainView as any).didRelease)}, ` +
757
+ `error: ${cause.message}, stack: ${cause.stack || ""}`
758
+ );
759
+ return false;
760
+ }
750
761
  }
751
762
  }
752
763
 
@@ -8,8 +8,8 @@ export type Item = {
8
8
  sourceCode: string;
9
9
  };
10
10
 
11
- export const initDb = async () => {
12
- db = await createDb();
11
+ export const initDb = async (onBlocked?: () => void) => {
12
+ db = await createDb(onBlocked);
13
13
  };
14
14
 
15
15
  export const setItem = (key: string, val: any) => {
@@ -27,12 +27,15 @@ export const removeItem = (key: string) => {
27
27
  return deleteRecord(db, key);
28
28
  };
29
29
 
30
- function createDb(): Promise<IDBDatabase> {
30
+ function createDb(onBlocked?: () => void): Promise<IDBDatabase> {
31
31
  return new Promise((resolve, reject) => {
32
32
  const request = indexedDB.open(DatabaseName, 2);
33
33
  request.onerror = e => {
34
34
  reject(e);
35
35
  };
36
+ request.onblocked = () => {
37
+ onBlocked?.();
38
+ };
36
39
 
37
40
  request.onupgradeneeded = (event: any) => {
38
41
  const db = event.target.result as IDBDatabase;
package/src/index.ts CHANGED
@@ -357,8 +357,14 @@ export class WindowManager
357
357
  }
358
358
  }
359
359
  if (WindowManager.isCreated) {
360
+ manager?._roomLogger?.error(
361
+ "[WindowManager] mount duplicate check failed: isCreated=true"
362
+ );
360
363
  throw new Error("[WindowManager]: Already created cannot be created again");
361
364
  }
365
+ manager?._roomLogger?.info(
366
+ `[WindowManager] mount duplicate check passed: isCreated=${WindowManager.isCreated}`
367
+ );
362
368
 
363
369
  this.debug = Boolean(debug);
364
370
  if (manager?._roomLogger) {
@@ -440,7 +446,11 @@ export class WindowManager
440
446
  );
441
447
  }
442
448
  try {
443
- await initDb();
449
+ manager._roomLogger?.info("[WindowManager] indexedDB open start");
450
+ await initDb(() => {
451
+ manager?._roomLogger?.warn("[WindowManager] indexedDB open blocked");
452
+ });
453
+ manager._roomLogger?.info("[WindowManager] indexedDB open success");
444
454
  } catch (error) {
445
455
  manager._roomLogger?.warn(`[WindowManager] indexedDB open failed: ${error.message}`);
446
456
  console.warn("[WindowManager]: indexedDB open failed");