fermi-web-socket-message-handler.js 9.08 KB
Newer Older
Kim Peace committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
var FermiWebSocketMessageHandler = {};

FermiWebSocketMessageHandler.bindWebSocketMessage = function () {
  fw.socket.on("message", async function (data) {
    if (g_isMainMan) {
      FermiWebSocketMessageHandler.handleMessagesToHost(data);
    } else if (data.payload.loginId == globalUserInfo.loginId) {
      // 自分自身の場合
      FermiWebSocketMessageHandler.handleMessagesToSelf(data);
    } else {
      // global messages
      FermiWebSocketMessageHandler.handleMessagesToAll(data);
    }
  });
};

FermiWebSocketMessageHandler.handleMessagesToHost = function (data) {
  // HOSTの場合
  switch (data.type) {
    case "CAPTURE_REQUEST":
      FermiWebSocketMessageHandler.captureRequest(data);
      break;
    case "HOST_CHANGE_RESPONSE":
      FermiWebSocketMessageHandler.hostChangeResponse(data);
      break;
    case "GET_COLLABORATION_TYPE":
      FermiWebSocketMessageHandler.getCollaborationType(data);
      break;
    case "SHARE_FILE_HOST":
30
      if (globalUserInfo.collaborationType != COLLABORATION_TYPE.CAMERA) {
Kim Peace committed
31 32 33
        FermiWebSocketMessageHandler.shareFileHost();
      }
      break;
Kim Peace committed
34 35 36
    case "CHANGE_HOST_APPLY":
      FermiWebSocketMessageHandler.changeHostApplyForHost(data);
      break;
Kim Peace committed
37 38 39 40 41 42 43 44 45 46 47 48
    default:
      break;
  }
};

FermiWebSocketMessageHandler.handleMessagesToSelf = function (data) {
  // 自分自身の場合
  switch (data.type) {
    case "HOST_CHANGE_REQUEST":
      FermiWebSocketMessageHandler.hostChangeRequest();
      break;
    case "PIP_END_REQUEST":
49
      if (globalUserInfo.collaborationType == COLLABORATION_TYPE.DOCUMENT) {
Kim Peace committed
50 51 52 53 54 55 56 57 58 59 60
        FermiWebSocketMessageHandler.pipEndRequest();
      }
      break;
    case "GET_COLLABORATION_TYPE_RESPONSE":
      FermiWebSocketMessageHandler.getCollaborationTypeResponse(data);
      break;
    default:
      break;
  }
};

Kim Peace committed
61
FermiWebSocketMessageHandler.handleMessagesToAll = function (data) {
Kim Peace committed
62 63 64 65 66
  switch (data.type) {
    case "CHANGE_COLLABORATION":
      FermiWebSocketMessageHandler.changeCollaboration(data);
      break;
    case "SHARE_FILE":
67
      if (globalUserInfo.collaborationType != COLLABORATION_TYPE.CAMERA) {
Kim Peace committed
68 69 70 71 72 73 74
        FermiWebSocketMessageHandler.shareFile();
      }
      break;
    case "API_SEND_OWNER_CHANGE_COMPLETE":
      FermiWebSocketMessageHandler.apiSendOwnerChangeComplete();
      break;
    case "API_SEND_OWNER_CHANGE_CONFIRM":
75
      if (globalUserInfo.collaborationType == COLLABORATION_TYPE.CAMERA) {
Kim Peace committed
76 77 78 79
        FermiWebSocketMessageHandler.apiSendOwnerChangeConfirm();
      }
      break;
    case "CHANGE_HOST_APPLY":
Kim Peace committed
80
      FermiWebSocketMessageHandler.changeHostApplyForNotHost(data);
Kim Peace committed
81 82 83 84 85 86 87 88
      break;
    case "HOST_REQUEST_DONE":
      FermiWebSocketMessageHandler.hostRequestDone();
      break;
    case "HOST_REQUEST_REJECT":
      FermiWebSocketMessageHandler.hostRequestReject(data);
      break;
    case "API_WELCOME":
89
      if (globalUserInfo.joinType != COLLABORATION_JOIN_TYPE.INVITED) {
Kim Peace committed
90 91 92 93 94 95 96 97 98 99 100
        FermiWebSocketMessageHandler.apiWelcome();
      }
      break;
    default:
      break;
  }
};

// CHANGE_COLLABORATION
FermiWebSocketMessageHandler.changeCollaboration = function (data) {
  const newMeetingID = data.payload.newMeetingId;
101
  if (globalUserInfo.collaborationType == COLLABORATION_TYPE.DOCUMENT) {
Kim Peace committed
102 103 104 105 106 107 108 109 110 111 112 113 114 115
    NativeBridgeDelegate.exitMeetingRoom();
    NativeBridgeDelegate.finishPIPMode(true);

    if (deviceInfo.isAndroid()) {
      $(".pip_indicator").addClass("none");
    }

    waitMillisecond(500);
    updateCanvasSize();
  }

  FermiWebSocketMessageHandler.updateJoinChangeCollaboration(
    data.payload.collaborationType
  );
Kim Peace committed
116

117
  globalUserInfo.meetingID = newMeetingID;
Kim Peace committed
118 119

  CollaborationUI.updateScreen(globalUserInfo.collaborationType);
Kim Peace committed
120 121

  NativeBridgeDelegate.joinChangedCollaboration(
122
    globalUserInfo.collaborationType,
Kim Peace committed
123 124 125
    newMeetingID
  );

126
  if (globalUserInfo.collaborationType == COLLABORATION_TYPE.DOCUMENT) {
Kim Peace committed
127 128 129 130 131 132
    NativeBridgeDelegate.joinMeetingRoom(newMeetingID);
  }
};

// SHARE_FILE
FermiWebSocketMessageHandler.shareFile = function () {
Kim Peace committed
133
  CollaborationUI.updateScreen(COLLABORATION_TYPE.CAMERA);
134
  globalUserInfo.collaborationType = COLLABORATION_TYPE.CAMERA;
Kim Peace committed
135 136 137 138 139
  FermiWebSocketBridge.shareFileHost(COLLABORATION_TYPE.CAMERA);
};

// SHARE_FILE_HOST
FermiWebSocketMessageHandler.shareFileHost = function () {
Kim Peace committed
140
  CollaborationUI.updateScreen(COLLABORATION_TYPE.CAMERA);
141
  globalUserInfo.collaborationType = COLLABORATION_TYPE.CAMERA;
Kim Peace committed
142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180
};

// CAPTURE_REQUEST
FermiWebSocketMessageHandler.captureRequest = function (data) {
  if (
    confirm(data.payload.name + getLocalizedString("request_capture")) == false
  ) {
    return;
  }

  if ($("#recordBtn .record").hasClass("disable")) {
    screenLock();
    recordStop(function () {
      $("#screenLock").remove();
      captureAndShareImage(
        serverInfo.cmsURL + "/chatapi/file/uploadArchive",
        data.payload.name
      );
    });
  } else {
    captureAndShareImage(
      serverInfo.cmsURL + "/chatapi/file/uploadArchive",
      data.payload.name
    );
  }
};

// HOST_CHANGE_REQUEST
FermiWebSocketMessageHandler.hostChangeRequest = function () {
  FermiWebSocketBridge.hostChangeRequest();
};

// HOST_CHANGE_RESPONSE
FermiWebSocketMessageHandler.hostChangeResponse = function (data) {
  const isAndroid = data.payload.isAndroid;
  const isAble = data.payload.isAble;
  if (
    isAndroid &&
    !isAble &&
181
    globalUserInfo.collaborationType == COLLABORATION_TYPE.DOCUMENT
Kim Peace committed
182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220
  ) {
    coview_api.HeartBeatUser(globalUserInfo.loginId);
    // 対象ユーザの端末バージョンでは文書協業が利用できません。
    alert(getLocalizedString("err_target_android_version_not_support"));
  } else {
    FermiWebSocketBridge.pipEndRequest(data.payload.loginId);
    waitMillisecond(500);
    CoviewBridge.changeHost(getFermiLoginId(data.payload.loginId));
  }
};

// PIP_END_REQUEST
FermiWebSocketMessageHandler.pipEndRequest = function () {
  NativeBridgeDelegate.finishPIPMode(true);
  if (deviceInfo.isAndroid()) {
    $(".pip_indicator").addClass("none");
  }
};

// API_SEND_OWNER_CHANGE_COMPLETE
FermiWebSocketMessageHandler.apiSendOwnerChangeComplete = function () {
  penOff();
  if ($("#recordBtn .record").hasClass("disable")) {
    recordStop(function () {});
  }
  if ($("#micBtn .voice").hasClass("disable")) {
    micOff();
  } else {
    micOn();
  }
};

// API_SEND_OWNER_CHANGE_CONFIRM
FermiWebSocketMessageHandler.apiSendOwnerChangeConfirm = function () {
  waitMillisecond(500);
  removeOldLocalVideo(g_localStream);
};

// CHANGE_HOST_APPLY
Kim Peace committed
221 222 223 224 225 226 227 228 229 230 231 232
FermiWebSocketMessageHandler.changeHostApplyForNotHost = function (data) {
  NativeBridgeDelegate.setHostRequestFlg(HostRequestFlag.DOING);
  waitMillisecond(500);
};

// CHANGE_HOST_APPLY
FermiWebSocketMessageHandler.changeHostApplyForHost = function (data) {
  coview_api.HeartBeatUser(globalUserInfo.loginId);
  NativeBridgeDelegate.finishPIPMode(true);
  if (deviceInfo.isAndroid()) {
    $(".pip_indicator").addClass("none");
  }
Kim Peace committed
233

Kim Peace committed
234
  NativeBridgeDelegate.setHostRequestFlg(HostRequestFlag.DOING);
Kim Peace committed
235

Kim Peace committed
236
  waitMillisecond(500);
Kim Peace committed
237

Kim Peace committed
238 239 240 241 242 243 244
  if (
    confirm(
      getLocalizedString("norify_request_host_change", data.payload.hostId)
    )
  ) {
    CoviewBridge.changeHost(getFermiLoginId(data.payload.hostId));
    NativeBridgeDelegate.setHostRequestFlg(HostRequestFlag.DONE);
Kim Peace committed
245
  } else {
Kim Peace committed
246
    FermiWebSocketBridge.hostRequestReject(data.payload.hostId);
Kim Peace committed
247
  }
Kim Peace committed
248
  FermiWebSocketBridge.hostRequestDone(data.payload.hostId);
Kim Peace committed
249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273
};

// HOST_REQUEST_DONE
FermiWebSocketMessageHandler.hostRequestDone = function () {
  NativeBridgeDelegate.setHostRequestFlg(HostRequestFlag.DONE);
};

// HOST_REQUEST_REJECT
FermiWebSocketMessageHandler.hostRequestReject = function (data) {
  if (data.payload.hostId == currentUserInfo.loginID) {
    alert("REJECT for owner user");
  }
  NativeBridgeDelegate.setHostRequestFlg(HostRequestFlag.DONE);
};

// GET_COLLABORATION_TYPE
FermiWebSocketMessageHandler.getCollaborationType = function (data) {
  FermiWebSocketBridge.getCollaborationTypeResponse(data.payload.loginId);
};

// GET_COLLABORATION_TYPE_RESPONSE
FermiWebSocketMessageHandler.getCollaborationTypeResponse = function (data) {
  FermiWebSocketMessageHandler.updateJoinChangeCollaboration(
    data.payload.collaborationType
  );
274
  globalUserInfo.meetingID = data.payload.newMeetingId;
Kim Peace committed
275
  CollaborationUI.updateScreen(globalUserInfo.collaborationType);
Kim Peace committed
276 277

  NativeBridgeDelegate.joinChangedCollaboration(
278
    globalUserInfo.collaborationType,
Kim Peace committed
279 280 281
    data.payload.newMeetingId
  );

282
  if (globalUserInfo.collaborationType == COLLABORATION_TYPE.DOCUMENT) {
Kim Peace committed
283 284 285 286 287 288 289
    NativeBridgeDelegate.joinMeetingRoom(data.payload.newMeetingId);
  }
};

// API_WELCOME
FermiWebSocketMessageHandler.apiWelcome = function () {
  FermiWebSocketBridge.getCollaborationType();
290
  globalUserInfo.joinType = COLLABORATION_JOIN_TYPE.ATTENDEE;
Kim Peace committed
291 292 293 294 295 296 297 298
};

FermiWebSocketMessageHandler.updateJoinChangeCollaboration = function (
  collaborationType
) {
  if (
    deviceInfo.isAndroid() &&
    collaborationType == COLLABORATION_TYPE.DOCUMENT &&
299
    deviceInfo.androidVersion < ANDROID_SDK_VERSION.O
Kim Peace committed
300 301 302
  ) {
    coview_api.HeartBeatUser(globalUserInfo.loginId);
    alert(getLocalizedString("not_support_version"));
303
    globalUserInfo.collaborationType = COLLABORATION_TYPE.CAMERA;
Kim Peace committed
304
  } else {
305
    globalUserInfo.collaborationType = collaborationType;
Kim Peace committed
306 307
  }
};