فهرست منبع

Document ControllerModel interface

Also, add some new types to increase type safety.
Danilo Bargen 7 سال پیش
والد
کامیت
1907d50ebe

+ 6 - 4
src/controller_model/contact.ts

@@ -16,9 +16,11 @@
  */
 
 import {WebClientService} from '../services/webclient';
-import {ControllerModelMode} from '../types/enums';
 import {AvatarControllerModel} from './avatar';
 
+// Type aliases
+import ControllerModelMode = threema.ControllerModelMode;
+
 export class ContactControllerModel implements threema.ControllerModel {
 
     // Angular services
@@ -26,7 +28,7 @@ export class ContactControllerModel implements threema.ControllerModel {
     private $translate: ng.translate.ITranslateService;
     private $mdDialog: ng.material.IDialogService;
 
-    private onRemovedCallback: any;
+    private onRemovedCallback: threema.OnRemovedCallback;
     public firstName: string;
     public lastName: string;
     public identity: string;
@@ -83,7 +85,7 @@ export class ContactControllerModel implements threema.ControllerModel {
         }
     }
 
-    public setOnRemoved(callback: any): void {
+    public setOnRemoved(callback: threema.OnRemovedCallback): void {
         this.onRemovedCallback = callback;
     }
 
@@ -164,7 +166,7 @@ export class ContactControllerModel implements threema.ControllerModel {
     }
 
     public onChangeMembers(identities: string[]): void {
-        return null;
+        // Do nothing
     }
 
     public getMembers(): string[] {

+ 5 - 3
src/controller_model/distributionList.ts

@@ -16,7 +16,9 @@
  */
 
 import {WebClientService} from '../services/webclient';
-import {ControllerModelMode} from '../types/enums';
+
+// Type aliases
+import ControllerModelMode = threema.ControllerModelMode;
 
 export class DistributionListControllerModel implements threema.ControllerModel {
 
@@ -32,7 +34,7 @@ export class DistributionListControllerModel implements threema.ControllerModel
     private distributionList: threema.DistributionListReceiver;
     private webClientService: WebClientService;
     private mode: ControllerModelMode;
-    private onRemovedCallback: any;
+    private onRemovedCallback: threema.OnRemovedCallback;
 
     constructor($log: ng.ILogService, $translate: ng.translate.ITranslateService, $mdDialog: ng.material.IDialogService,
                 webClientService: WebClientService,
@@ -72,7 +74,7 @@ export class DistributionListControllerModel implements threema.ControllerModel
         }
     }
 
-    public setOnRemoved(callback: any): void {
+    public setOnRemoved(callback: threema.OnRemovedCallback): void {
         this.onRemovedCallback = callback;
     }
 

+ 5 - 3
src/controller_model/group.ts

@@ -16,9 +16,11 @@
  */
 
 import {WebClientService} from '../services/webclient';
-import {ControllerModelMode} from '../types/enums';
 import {AvatarControllerModel} from './avatar';
 
+// Type aliases
+import ControllerModelMode = threema.ControllerModelMode;
+
 export class GroupControllerModel implements threema.ControllerModel {
 
     private $log: ng.ILogService;
@@ -34,7 +36,7 @@ export class GroupControllerModel implements threema.ControllerModel {
     private webClientService: WebClientService;
     private avatarController: AvatarControllerModel;
     private mode: ControllerModelMode;
-    private onRemovedCallback: any;
+    private onRemovedCallback: threema.OnRemovedCallback;
 
     constructor($log: ng.ILogService, $translate: ng.translate.ITranslateService, $mdDialog: ng.material.IDialogService,
                 webClientService: WebClientService,
@@ -84,7 +86,7 @@ export class GroupControllerModel implements threema.ControllerModel {
         return this.webClientService.getMaxGroupMemberSize();
     }
 
-    public setOnRemoved(callback: any): void {
+    public setOnRemoved(callback: threema.OnRemovedCallback): void {
         this.onRemovedCallback = callback;
     }
 

+ 3 - 1
src/partials/messenger.ts

@@ -30,7 +30,9 @@ import {SettingsService} from '../services/settings';
 import {StateService} from '../services/state';
 import {VersionService} from '../services/version';
 import {WebClientService} from '../services/webclient';
-import {ControllerModelMode} from '../types/enums';
+
+// Type aliases
+import ControllerModelMode = threema.ControllerModelMode;
 
 class DialogController {
     public static $inject = ['$mdDialog'];

+ 3 - 1
src/services/controller_model.ts

@@ -18,9 +18,11 @@
 import {ContactControllerModel} from '../controller_model/contact';
 import {DistributionListControllerModel} from '../controller_model/distributionList';
 import {GroupControllerModel} from '../controller_model/group';
-import {ControllerModelMode} from '../types/enums';
 import {WebClientService} from './webclient';
 
+// Type aliases
+import ControllerModelMode = threema.ControllerModelMode;
+
 /**
  * Factory to create ControllerModels
  */

+ 59 - 3
src/threema.d.ts

@@ -426,18 +426,74 @@ declare namespace threema {
         data?: T;
     }
 
+    type OnRemovedCallback = (identity: string) => void;
+
+    const enum ControllerModelMode {
+        NEW = 'new',
+        VIEW = 'view',
+        EDIT = 'edit',
+        CHAT = 'chat',
+    }
+
     interface ControllerModel {
+        /**
+         * The title shown in the header.
+         */
         subject: string;
+
+        /**
+         * Loading state.
+         */
         isLoading: boolean;
-        save(): any;
+
+        /**
+         * Save the changes, return a promise with the receiver.
+         */
+        save(): Promise<Receiver>;
+
+        /**
+         * Delete all messages in this conversation.
+         */
         clean(ev: any): any;
+
+        /**
+         * Validate this receiver.
+         */
         isValid(): boolean;
+
+        /**
+         * Can this receiver be viewed?
+         */
         canView(): boolean;
+
+        /**
+         * Can this receiver be edited?
+         */
         canEdit(): boolean;
+
+        /**
+         * Can this receiver be cleaned?
+         */
         canClean(): boolean;
-        getMode(): number;
-        setOnRemoved(callback: any): void;
+
+        /**
+         * The mode, e.g. view or edit this receiver.
+         */
+        getMode(): ControllerModelMode;
+
+        /**
+         * Set the on removed callback.
+         */
+        setOnRemoved(callback: OnRemovedCallback): void;
+
+        /**
+         * Callback called when the members change.
+         */
         onChangeMembers(identities: string[]): void;
+
+        /**
+         * Return the members of this receiver.
+         */
         getMembers(): string[];
     }
 

+ 0 - 23
src/types/enums.ts

@@ -1,23 +0,0 @@
-/**
- * This file is part of Threema Web.
- *
- * Threema Web is free software: you can redistribute it and/or modify it
- * under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero
- * General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with Threema Web. If not, see <http://www.gnu.org/licenses/>.
- */
-
-export enum ControllerModelMode {
-    NEW = 1,
-    VIEW = 2,
-    EDIT = 3,
-    CHAT = 4,
-}