Skip to content
Extraits de code Groupes Projets
Valider 5005c488 rédigé par Kai A. Hiller's avatar Kai A. Hiller
Parcourir les fichiers

Tighten callback types


Signed-off-by: default avatarKai A. Hiller <V02460@gmail.com>
parent b3a8e7a3
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -14,7 +14,14 @@ See the License for the specific language governing permissions and ...@@ -14,7 +14,14 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
import { Cli, Bridge, AppServiceRegistration, ClientFactory, BridgeContext } from "matrix-appservice-bridge"; import {
AppServiceRegistration,
Bridge,
BridgeContext,
Cli,
ClientFactory,
thirdPartyLookup,
} from "matrix-appservice-bridge";
import * as yaml from "js-yaml"; import * as yaml from "js-yaml";
import * as fs from "fs"; import * as fs from "fs";
import { DiscordBridgeConfig } from "./config"; import { DiscordBridgeConfig } from "./config";
...@@ -55,8 +62,19 @@ function generateRegistration(reg, callback) { ...@@ -55,8 +62,19 @@ function generateRegistration(reg, callback) {
callback(reg); callback(reg);
} }
// tslint:disable-next-line no-any interface IBridgeCallbacks {
type callbackFn = (...args: any[]) => Promise<any>; onAliasQueried?: (alias: string, roomId: string) => Promise<void>;
onAliasQuery?: (alias: string, aliasLocalpart: string) => Promise<IProvisionedRoom>;
onEvent: (request: Request, context: BridgeContext) => Promise<void>;
thirdPartyLookup?: thirdPartyLookup;
}
type RemoteRoom = any; // tslint:disable-line no-any
interface IProvisionedRoom {
creationOpts: Record<string, any>; // tslint:disable-line no-any
remote?: RemoteRoom;
}
async function run(port: number, fileConfig: DiscordBridgeConfig) { async function run(port: number, fileConfig: DiscordBridgeConfig) {
const config = new DiscordBridgeConfig(); const config = new DiscordBridgeConfig();
...@@ -78,20 +96,20 @@ async function run(port: number, fileConfig: DiscordBridgeConfig) { ...@@ -78,20 +96,20 @@ async function run(port: number, fileConfig: DiscordBridgeConfig) {
}); });
const store = new DiscordStore(config.database); const store = new DiscordStore(config.database);
const callbacks: { [id: string]: callbackFn; } = {}; let callbacks: IBridgeCallbacks;
const bridge = new Bridge({ const bridge = new Bridge({
clientFactory, clientFactory,
controller: { controller: {
// onUserQuery: userQuery, // onUserQuery: userQuery,
onAliasQueried: async (alias: string, roomId: string) => { onAliasQueried: async (alias: string, roomId: string): Promise<void> => {
try { try {
return await callbacks.onAliasQueried(alias, roomId); return await callbacks.onAliasQueried!(alias, roomId);
} catch (err) { log.error("Exception thrown while handling \"onAliasQueried\" event", err); } } catch (err) { log.error("Exception thrown while handling \"onAliasQueried\" event", err); }
}, },
onAliasQuery: async (alias: string, aliasLocalpart: string) => { onAliasQuery: async (alias: string, aliasLocalpart: string): Promise<IProvisionedRoom|undefined> => {
try { try {
return await callbacks.onAliasQuery(alias, aliasLocalpart); return await callbacks.onAliasQuery!(alias, aliasLocalpart);
} catch (err) { log.error("Exception thrown while handling \"onAliasQuery\" event", err); } } catch (err) { log.error("Exception thrown while handling \"onAliasQuery\" event", err); }
}, },
onEvent: async (request) => { onEvent: async (request) => {
...@@ -183,11 +201,13 @@ async function run(port: number, fileConfig: DiscordBridgeConfig) { ...@@ -183,11 +201,13 @@ async function run(port: number, fileConfig: DiscordBridgeConfig) {
const eventProcessor = discordbot.MxEventProcessor; const eventProcessor = discordbot.MxEventProcessor;
try { try {
callbacks.onAliasQueried = roomhandler.OnAliasQueried.bind(roomhandler); callbacks = {
callbacks.onAliasQuery = roomhandler.OnAliasQuery.bind(roomhandler); onAliasQueried: roomhandler.OnAliasQueried.bind(roomhandler),
callbacks.onEvent = eventProcessor.OnEvent.bind(eventProcessor); onAliasQuery: roomhandler.OnAliasQuery.bind(roomhandler),
callbacks.thirdPartyLookup = async () => { onEvent: eventProcessor.OnEvent.bind(eventProcessor),
thirdPartyLookup: async () => {
return roomhandler.ThirdPartyLookup; return roomhandler.ThirdPartyLookup;
},
}; };
} catch (err) { } catch (err) {
log.error("Failed to register callbacks. Exiting.", err); log.error("Failed to register callbacks. Exiting.", err);
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter