import { Channel } from "./Channel.js" import { IRCUser } from "./IRCUser.js" import { MatrixUser } from "./MatrixUser.js" export class Server { public name: string // public matrixRooms: Map // public ircChannels: Map // public matrixUsers: Map // public ircUsers: Map public nickToMxid: Map constructor(public config: any) { this.name = this.config.serverName; this.matrixRooms = new Map(); this.ircChannels = new Map(); this.matrixUsers = new Map(); this.ircUsers = new Map(); this.nickToMxid = new Map(); } getOrCreateMatrixUser(mxid: string): MatrixUser { let maybeMatrixUser = this.matrixUsers.get(mxid); if (maybeMatrixUser) { return maybeMatrixUser; } let potentialNick = mxid.split(":")[0].substr(1); if (!this.nickToMxid.has(potentialNick)) { const newMatrixUser = new MatrixUser(mxid, potentialNick); this.matrixUsers.set(mxid, newMatrixUser); this.nickToMxid.set(potentialNick, mxid); return newMatrixUser; } const homeserverArray = mxid.split(":")[1].split('.'); const baseDomainNum = homeserverArray.length - 2; potentialNick = `${potentialNick}-${homeserverArray[baseDomainNum]}`; const newMatrixUser = new MatrixUser(mxid, potentialNick); this.matrixUsers.set(mxid, newMatrixUser); this.nickToMxid.set(potentialNick, mxid); return newMatrixUser; } }