Convert BasePlatform and BaseEventIndexManager to Typescript

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
This commit is contained in:
Michael Telatynski 2020-05-21 18:06:36 +01:00
parent e7d37228f2
commit b27f1fa6db
2 changed files with 28 additions and 39 deletions

View file

@ -1,5 +1,3 @@
// @flow
/* /*
Copyright 2016 Aviral Dasgupta Copyright 2016 Aviral Dasgupta
Copyright 2016 OpenMarket Ltd Copyright 2016 OpenMarket Ltd
@ -19,9 +17,10 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
import {MatrixClient} from "matrix-js-sdk"; import {MatrixClient} from "matrix-js-sdk/src/client";
import dis from './dispatcher/dispatcher'; import dis from './dispatcher/dispatcher';
import BaseEventIndexManager from './indexing/BaseEventIndexManager'; import BaseEventIndexManager from './indexing/BaseEventIndexManager';
import {ActionPayload} from "./dispatcher/payloads";
/** /**
* Base class for classes that provide platform-specific functionality * Base class for classes that provide platform-specific functionality
@ -29,27 +28,25 @@ import BaseEventIndexManager from './indexing/BaseEventIndexManager';
* *
* Instances of this class are provided by the application. * Instances of this class are provided by the application.
*/ */
export default class BasePlatform { export default abstract class BasePlatform {
constructor() { protected notificationCount: number = 0;
this.notificationCount = 0; protected errorDidOccur: boolean = false;
this.errorDidOccur = false;
dis.register(this._onAction.bind(this)); constructor() {
dis.register(this.onAction);
} }
_onAction(payload: Object) { protected onAction = (payload: ActionPayload) => {
switch (payload.action) { switch (payload.action) {
case 'on_client_not_viable': case 'on_client_not_viable':
case 'on_logged_out': case 'on_logged_out':
this.setNotificationCount(0); this.setNotificationCount(0);
break; break;
} }
} };
// Used primarily for Analytics // Used primarily for Analytics
getHumanReadableName(): string { abstract getHumanReadableName(): string;
return 'Base Platform';
}
setNotificationCount(count: number) { setNotificationCount(count: number) {
this.notificationCount = count; this.notificationCount = count;
@ -84,22 +81,16 @@ export default class BasePlatform {
* that is 'granted' if the user allowed the request or * that is 'granted' if the user allowed the request or
* 'denied' otherwise. * 'denied' otherwise.
*/ */
requestNotificationPermission(): Promise<string> { abstract requestNotificationPermission(): Promise<string>;
}
displayNotification(title: string, msg: string, avatarUrl: string, room: Object) { abstract displayNotification(title: string, msg: string, avatarUrl: string, room: Object);
}
loudNotification(ev: Event, room: Object) { abstract loudNotification(ev: Event, room: Object);
}
/** /**
* Returns a promise that resolves to a string representing * Returns a promise that resolves to a string representing the current version of the application.
* the current version of the application.
*/ */
getAppVersion(): Promise<string> { abstract getAppVersion(): Promise<string>;
throw new Error("getAppVersion not implemented!");
}
/* /*
* If it's not expected that capturing the screen will work * If it's not expected that capturing the screen will work
@ -114,20 +105,18 @@ export default class BasePlatform {
* Restarts the application, without neccessarily reloading * Restarts the application, without neccessarily reloading
* any application code * any application code
*/ */
reload() { abstract reload();
throw new Error("reload not implemented!");
}
supportsAutoLaunch(): boolean { supportsAutoLaunch(): boolean {
return false; return false;
} }
// XXX: Surely this should be a setting like any other? // XXX: Surely this should be a setting like any other?
async getAutoLaunchEnabled(): boolean { async getAutoLaunchEnabled(): Promise<boolean> {
return false; return false;
} }
async setAutoLaunchEnabled(enabled: boolean): void { async setAutoLaunchEnabled(enabled: boolean): Promise<void> {
throw new Error("Unimplemented"); throw new Error("Unimplemented");
} }
@ -135,11 +124,11 @@ export default class BasePlatform {
return false; return false;
} }
async getAutoHideMenuBarEnabled(): boolean { async getAutoHideMenuBarEnabled(): Promise<boolean> {
return false; return false;
} }
async setAutoHideMenuBarEnabled(enabled: boolean): void { async setAutoHideMenuBarEnabled(enabled: boolean): Promise<void> {
throw new Error("Unimplemented"); throw new Error("Unimplemented");
} }
@ -147,11 +136,11 @@ export default class BasePlatform {
return false; return false;
} }
async getMinimizeToTrayEnabled(): boolean { async getMinimizeToTrayEnabled(): Promise<boolean> {
return false; return false;
} }
async setMinimizeToTrayEnabled(enabled: boolean): void { async setMinimizeToTrayEnabled(enabled: boolean): Promise<void> {
throw new Error("Unimplemented"); throw new Error("Unimplemented");
} }

View file

@ -1,5 +1,5 @@
/* /*
Copyright 2019 The Matrix.org Foundation C.I.C. Copyright 2019, 2020 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -20,7 +20,7 @@ export interface MatrixEvent {
content: {}; content: {};
event_id: string; event_id: string;
origin_server_ts: number; origin_server_ts: number;
unsigned: ?{}; unsigned?: {};
room_id: string; room_id: string;
} }
@ -59,7 +59,7 @@ export interface SearchArgs {
before_limit: number; before_limit: number;
after_limit: number; after_limit: number;
order_by_recency: boolean; order_by_recency: boolean;
room_id: ?string; room_id?: string;
} }
export interface EventAndProfile { export interface EventAndProfile {
@ -85,7 +85,7 @@ export interface IndexStats {
* *
* Instances of this class are provided by the application. * Instances of this class are provided by the application.
*/ */
export default class BaseEventIndexManager { export default abstract class BaseEventIndexManager {
/** /**
* Does our EventIndexManager support event indexing. * Does our EventIndexManager support event indexing.
* *
@ -119,7 +119,7 @@ export default class BaseEventIndexManager {
* @return {Promise} A promise that will resolve when the was queued up for * @return {Promise} A promise that will resolve when the was queued up for
* addition. * addition.
*/ */
async addEventToIndex(ev: MatrixEvent, profile: MatrixProfile): Promise<> { async addEventToIndex(ev: MatrixEvent, profile: MatrixProfile): Promise<void> {
throw new Error("Unimplemented"); throw new Error("Unimplemented");
} }
@ -188,7 +188,7 @@ export default class BaseEventIndexManager {
events: [EventAndProfile], events: [EventAndProfile],
checkpoint: CrawlerCheckpoint | null, checkpoint: CrawlerCheckpoint | null,
oldCheckpoint: CrawlerCheckpoint | null, oldCheckpoint: CrawlerCheckpoint | null,
): Promise<bool> { ): Promise<boolean> {
throw new Error("Unimplemented"); throw new Error("Unimplemented");
} }