Skip to content
Snippets Groups Projects
MockConnection.js 1.18 KiB
export const userID = { uuid: null }

export const sendListener = { callback: null }
export const broadcastListener = { callback: null }

const eventListeners = new Map()
export const getEventListener = (room, event) =>
  eventListeners.get(`${room}:${event}`)

class MockConnection {
  constructor({ room }) {
    this.room = room

    setTimeout(
      () =>
        getEventListener(room, "roomJoined") &&
        getEventListener(room, "roomJoined")(),
      0,
    )
  }

  getUserID() {
    return userID.uuid
  }

  getPeerHandle(/*uid*/) {
    return undefined
  }

  getPeerFootprint(/*uid*/) {
    return Promise.resolve(Date.now())
  }

  send(uid, channel, message) {
    if (sendListener.callback) {
      sendListener.callback(uid, channel, message)
    }
  }

  broadcast(channel, message) {
    if (broadcastListener.callback) {
      broadcastListener.callback(channel, message)
    }
  }

  terminatePeer() {
    // Twiddle thumbs
  }

  destructor() {
    sendListener.callback = null
    broadcastListener.callback = null

    eventListeners.clear()
  }

  addEventListener(event, callback) {
    eventListeners.set(`${this.room}:${event}`, callback)
  }
}

export default MockConnection