From 40e9198d91d0450f3cbeb22fefe0cf4dc8972968 Mon Sep 17 00:00:00 2001
From: Will Hunt <will@half-shot.uk>
Date: Sun, 27 Jan 2019 16:51:16 +0000
Subject: [PATCH] Provisioner support for room store

---
 src/discordas.ts   |  2 +-
 src/provisioner.ts | 12 ++++++------
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/discordas.ts b/src/discordas.ts
index 6771e66..a328294 100644
--- a/src/discordas.ts
+++ b/src/discordas.ts
@@ -122,7 +122,6 @@ async function run(port: number, fileConfig: DiscordBridgeConfig) {
         userStore: config.database.userStorePath,
         // To avoid out of order message sending.
     });
-    provisioner.SetBridge(bridge);
     roomhandler.setBridge(bridge);
     discordbot.setBridge(bridge);
     discordbot.setRoomHandler(roomhandler);
@@ -134,6 +133,7 @@ async function run(port: number, fileConfig: DiscordBridgeConfig) {
         log.info("Initing store.");
         await discordstore.init();
         log.info("Initing bot.");
+        provisioner.setStore(discordstore.roomStore);
         await discordbot.run();
         log.info("Discordbot started successfully.");
     } catch (err) {
diff --git a/src/provisioner.ts b/src/provisioner.ts
index 68980f0..d2d066c 100644
--- a/src/provisioner.ts
+++ b/src/provisioner.ts
@@ -20,16 +20,17 @@ import {
     MatrixRoom,
 } from "matrix-appservice-bridge";
 import * as Discord from "discord.js";
+import { DbRoomStore } from "./db/roomstore";
 
 const PERMISSION_REQUEST_TIMEOUT = 300000; // 5 minutes
 
 export class Provisioner {
 
-    private bridge: Bridge;
     private pendingRequests: Map<string, (approved: boolean) => void> = new Map(); // [channelId]: resolver fn
+    private roomStore: DbRoomStore;
 
-    public SetBridge(bridge: Bridge): void {
-        this.bridge = bridge;
+    public setStore(roomStore: DbRoomStore) {
+        this.roomStore = roomStore;
     }
 
     public BridgeMatrixRoom(channel: Discord.TextChannel, roomId: string) {
@@ -40,12 +41,11 @@ export class Provisioner {
         remote.set("plumbed", true);
 
         const local = new MatrixRoom(roomId);
-        this.bridge.getRoomStore().linkRooms(local, remote);
-        this.bridge.getRoomStore().setMatrixRoom(local); // Needs to be done after linking
+        this.roomStore.linkRooms(local, remote);
     }
 
     public UnbridgeRoom(remoteRoom: RemoteRoom) {
-        return this.bridge.getRoomStore().removeEntriesByRemoteRoomId(remoteRoom.getId());
+        return this.roomStore.removeEntriesByRemoteRoomId(remoteRoom.getId());
     }
 
     public async AskBridgePermission(
-- 
GitLab