

class ConnectAdapter {
  constructor() {
  }


  public init() {
    console.log("Connect Adapter Init")
    window.addEventListener("message", ((e) => {
      console.log("Connect Adapter Recievs MSG", e);
      if (e.data.type == "initialUserDetails") {
        this._onInitialUserDetailsReceived(e.data.data);
      }
      if (e.data.type == "roleChanged") {
        this._onRoleChangedReceived(e.data)
      }
      if (e.data.type == "userStatusChanged") {
        this._onUserStatusChanged(e.data)
      }

      if (e.data.type == "userDetailsChanged") {
        this._onUserDetailsChanged(e.data)
      }
      if (e.data.type == "userJoined") {
        this._onUserJoined(e.data)
      }
      if (e.data.type == "userJoined") {
        this._onUserLeft(e.data)
      }
      if (e.data.type == "podClosed") {
        this._onPodClosed()
      }


    }));
    window.parent.postMessage("botinitialized", "*");
  }


  _onUserLeft = (e: { userID: string }) => { }
  _onUserJoined = (e: { breakoutId: number, breakoutName: string, status: string[] | undefined, name: string, fullName: string, id: number, role: string }) => { }
  _onPodClosed = () => { }
  _onUserDetailsChanged = (e: { type: "userDetailsChanged", fullName: string, name: string, userId: number }) => { }
  _onUserStatusChanged = (e: { type: "userStatusChanged", status: string[], userId: number }) => { }
  _onInitialUserDetailsReceived = (e: { name: string, fullName: string, id: number, role: string }) => { }
  _onRoleChangedReceived = (e: { newRole: string, userId: number, type: "roleChanged" }) => { }


}

//@ts-ignore
window.connectAdapter = new ConnectAdapter();


