Browse Source

Only create the extension manager if it is needed, preventing (#5075)

unnecessary requests to npmjs.com
Ian Rose 6 năm trước cách đây
mục cha
commit
79ec988ccd
1 tập tin đã thay đổi với 12 bổ sung6 xóa
  1. 12 6
      packages/extensionmanager-extension/src/index.ts

+ 12 - 6
packages/extensionmanager-extension/src/index.ts

@@ -44,13 +44,18 @@ const plugin: JupyterLabPlugin<void> = {
     let enabled = settings.composite['enabled'] === true;
 
     const { shell, serviceManager } = app;
-    const view = new ExtensionView(serviceManager);
+    let view: ExtensionView | undefined;
 
-    view.id = 'extensionmanager.main-view';
-    view.title.label = 'Extensions';
-    restorer.add(view, view.id);
+    const createView = () => {
+      const v = new ExtensionView(serviceManager);
+      v.id = 'extensionmanager.main-view';
+      v.title.label = 'Extensions';
+      restorer.add(v, v.id);
+      return v;
+    };
 
     if (enabled) {
+      view = createView();
       shell.addToLeftArea(view);
     }
 
@@ -59,14 +64,15 @@ const plugin: JupyterLabPlugin<void> = {
     app.restored.then(() => {
       settings.changed.connect(async () => {
         enabled = settings.composite['enabled'] === true;
-        if (enabled && !view.isAttached) {
+        if (enabled && (!view || (view && !view.isAttached))) {
           const accepted = await Private.showWarning();
           if (!accepted) {
             settings.set('enabled', false);
             return;
           }
+          view = view || createView();
           shell.addToLeftArea(view);
-        } else if (!enabled && view.isAttached) {
+        } else if (!enabled && view && view.isAttached) {
           view.close();
         }
       });