Browse Source

Simplify resolvers

Steven Silvester 9 năm trước cách đây
mục cha
commit
4afc37c4f1
3 tập tin đã thay đổi với 15 bổ sung87 xóa
  1. 4 40
      src/filehandler/plugin.ts
  2. 5 41
      src/imagehandler/plugin.ts
  3. 6 6
      src/notebook/plugin.ts

+ 4 - 40
src/filehandler/plugin.ts

@@ -29,44 +29,8 @@ import {
  */
 export
 function resolve(container: Container): Promise<void> {
-  return container.resolve(FileHandlerPlugin).then(plugin => plugin.run());
-}
-
-
-/**
- * A plugin that provides the default file handler to the IFileOpener.
- */
-class FileHandlerPlugin {
-
-  /**
-   * The dependencies required by the file handler.
-   */
-  static requires: Token<any>[] = [IServicesProvider, IFileOpener];
-
-  /**
-   * Create a new file handler plugin instance.
-   */
-  static create(services: IServicesProvider, opener: IFileOpener): FileHandlerPlugin {
-    return new FileHandlerPlugin(services, opener);
-  }
-
-  /**
-   * Construct a new FileHandlerPlugin.
-   */
-  constructor(services: IServicesProvider, opener: IFileOpener) {
-    this._services = services;
-    this._opener = opener;
-  }
-
-  /**
-   * Initialize the plugin.
-   */
-  run(): void {
-    this._handler = new FileHandler(this._services.contentsManager);
-    this._opener.registerDefault(this._handler);
-  }
-
-  private _handler: IFileHandler = null;
-  private _services: IServicesProvider = null;
-  private _opener: IFileOpener = null;
+  return Promise.all([container.resolve(IServicesProvider),
+               container.resolve(IFileOpener)]).then(([services, opener]) => {
+    opener.registerDefault(new FileHandler(services.contentsManager))
+  }).then(() => {});
 }

+ 5 - 41
src/imagehandler/plugin.ts

@@ -32,47 +32,11 @@ import {
  * This is called automatically when the plugin is loaded.
  */
 export
-function resolve(container: Container): Promise<void> {
-  return container.resolve(ImageHandlerPlugin).then(plugin => plugin.run());
-}
-
-
-/**
- * A plugin that provides the default file handler to the IFileOpener.
- */
-class ImageHandlerPlugin {
-
-  /**
-   * The dependencies required by the file handler.
-   */
-  static requires: Token<any>[] = [IServicesProvider, IFileOpener];
-
-  /**
-   * Create a new file handler plugin instance.
-   */
-  static create(services: IServicesProvider, opener: IFileOpener): ImageHandlerPlugin {
-    return new ImageHandlerPlugin(services, opener);
-  }
-
-  /**
-   * Construct a new FileHandlerPlugin.
-   */
-  constructor(services: IServicesProvider, opener: IFileOpener) {
-    this._services = services;
-    this._opener = opener;
-  }
-
-  /**
-   * Initialize the plugin.
-   */
-  run(): void {
-    this._handler = new ImageHandler(this._services.contentsManager);
-    this._opener.register(this._handler);
-  }
-
-  private _handler: ImageHandler = null;
-  private _services: IServicesProvider = null;
-  private _opener: IFileOpener = null;
+function resolve(container: Container) {
+  return Promise.all([container.resolve(IServicesProvider),
+               container.resolve(IFileOpener)]).then(([services, opener]) => {
+    opener.registerDefault(new ImageHandler(services.contentsManager))
+  }).then(() => {});
 }
 
 

+ 6 - 6
src/notebook/plugin.ts

@@ -38,10 +38,10 @@ import './plugin.css';
  */
 export
 function resolve(container: Container) {
-  Promise.all([container.resolve(IServicesProvider),
+  return Promise.all([container.resolve(IServicesProvider),
                container.resolve(IFileOpener)]).then(([services, opener]) => {
-    opener.register(new NotebookFileHandler(services.contentsManager))
-  });
+    opener.registerDefault(new NotebookFileHandler(services.contentsManager))
+  }).then(() => {});
 }
 
 
@@ -57,7 +57,7 @@ class NotebookFileHandler extends AbstractFileHandler {
   get fileExtensions(): string[] {
     return ['.ipynb']
   }
-  
+
   /**
    * Get file contents given a path.
    */
@@ -75,7 +75,7 @@ class NotebookFileHandler extends AbstractFileHandler {
     return widget;
   }
 
-  
+
   protected populateWidget(widget: NotebookWidget, model: IContentsModel): Promise<void> {
     let nbdata: NBData = makedata(model);
     populateNotebookModel(widget.model, nbdata);
@@ -89,4 +89,4 @@ function makedata(a: IContentsModel): NBData {
     name: a.name,
     path: a.path
   }
-}
+}