fermi-web-socket-message-handler.js 9.48 KB
Newer Older
Kim Peace committed
1 2 3 4 5
var FermiWebSocketMessageHandler = {};

FermiWebSocketMessageHandler.bindWebSocketMessage = function () {
  fw.socket.on("message", async function (data) {
    if (g_isMainMan) {
6
      // 自分がホストの場合
Kim Peace committed
7 8 9 10 11
      FermiWebSocketMessageHandler.handleMessagesToHost(data);
    } else if (data.payload.loginId == globalUserInfo.loginId) {
      // 自分自身の場合
      FermiWebSocketMessageHandler.handleMessagesToSelf(data);
    }
12 13
    // global messages
    FermiWebSocketMessageHandler.handleMessagesToAll(data);
Kim Peace committed
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
  });
};

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
    default:
      break;
  }
};

FermiWebSocketMessageHandler.handleMessagesToSelf = function (data) {
  // 自分自身の場合
  switch (data.type) {
    case "HOST_CHANGE_REQUEST":
46
      FermiWebSocketMessageHandler.hostChangeRequest(data);
Kim Peace committed
47 48
      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
        FermiWebSocketMessageHandler.shareFile();
      }
      break;
    case "API_SEND_OWNER_CHANGE_COMPLETE":
Kim Peace committed
72
      FermiWebSocketMessageHandler.apiSendOwnerChangeComplete(data);
73
      CollaborationFeature.updateHost();
74
      FermiWebSocketBridge.hostUpdated();
Kim Peace committed
75 76
      break;
    case "API_SEND_OWNER_CHANGE_CONFIRM":
77
      if (globalUserInfo.collaborationType == COLLABORATION_TYPE.CAMERA) {
Kim Peace committed
78 79 80 81
        FermiWebSocketMessageHandler.apiSendOwnerChangeConfirm();
      }
      break;
    case "CHANGE_HOST_APPLY":
Kim Peace committed
82
      FermiWebSocketMessageHandler.changeHostApplyForNotHost(data);
Kim Peace committed
83 84 85
      break;
    case "HOST_REQUEST_DONE":
      FermiWebSocketMessageHandler.hostRequestDone();
86
      CollaborationFeature.updateHost();
Kim Peace committed
87 88 89 90 91
      break;
    case "HOST_REQUEST_REJECT":
      FermiWebSocketMessageHandler.hostRequestReject(data);
      break;
    case "API_WELCOME":
92
      if (globalUserInfo.joinType != COLLABORATION_JOIN_TYPE.INVITED) {
Kim Peace committed
93 94
        FermiWebSocketMessageHandler.apiWelcome();
      }
95
      CollaborationFeature.updateHost();
Kim Peace committed
96
      break;
Kim Peace committed
97 98 99 100
    case "SWITCH_VIDEO":
      CollaborationFeature.updateHost();
      CollaborationUI.userListSlideOut();
      $(".profile_favorite_btn").click();
101 102 103 104
      break;
    case "HOST_UPDATED":
      CollaborationFeature.updateHost();
      break;
Kim Peace committed
105 106 107 108 109 110 111 112
    default:
      break;
  }
};

// CHANGE_COLLABORATION
FermiWebSocketMessageHandler.changeCollaboration = function (data) {
  const newMeetingID = data.payload.newMeetingId;
113
  if (globalUserInfo.collaborationType == COLLABORATION_TYPE.DOCUMENT) {
Kim Peace committed
114 115 116 117 118 119 120 121 122 123 124 125 126 127
    NativeBridgeDelegate.exitMeetingRoom();
    NativeBridgeDelegate.finishPIPMode(true);

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

    waitMillisecond(500);
    updateCanvasSize();
  }

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

129
  globalUserInfo.meetingID = newMeetingID;
Kim Peace committed
130 131

  CollaborationUI.updateScreen(globalUserInfo.collaborationType);
Kim Peace committed
132 133

  NativeBridgeDelegate.joinChangedCollaboration(
134
    globalUserInfo.collaborationType,
Kim Peace committed
135 136 137
    newMeetingID
  );

138
  if (globalUserInfo.collaborationType == COLLABORATION_TYPE.DOCUMENT) {
Kim Peace committed
139 140 141 142 143 144
    NativeBridgeDelegate.joinMeetingRoom(newMeetingID);
  }
};

// SHARE_FILE
FermiWebSocketMessageHandler.shareFile = function () {
Kim Peace committed
145
  CollaborationUI.updateScreen(COLLABORATION_TYPE.CAMERA);
146
  globalUserInfo.collaborationType = COLLABORATION_TYPE.CAMERA;
Kim Peace committed
147 148 149 150 151
  FermiWebSocketBridge.shareFileHost(COLLABORATION_TYPE.CAMERA);
};

// SHARE_FILE_HOST
FermiWebSocketMessageHandler.shareFileHost = function () {
Kim Peace committed
152
  CollaborationUI.updateScreen(COLLABORATION_TYPE.CAMERA);
153
  globalUserInfo.collaborationType = COLLABORATION_TYPE.CAMERA;
Kim Peace committed
154 155 156 157
};

// CAPTURE_REQUEST
FermiWebSocketMessageHandler.captureRequest = function (data) {
Kim Peace committed
158 159
  const name = data.payload.name;
  if (confirm(name + getLocalizedString("request_capture")) == false) {
Kim Peace committed
160 161 162 163 164 165 166 167 168
    return;
  }

  if ($("#recordBtn .record").hasClass("disable")) {
    screenLock();
    recordStop(function () {
      $("#screenLock").remove();
      captureAndShareImage(
        serverInfo.cmsURL + "/chatapi/file/uploadArchive",
Kim Peace committed
169
        name
Kim Peace committed
170 171 172 173 174
      );
    });
  } else {
    captureAndShareImage(
      serverInfo.cmsURL + "/chatapi/file/uploadArchive",
Kim Peace committed
175
      name
Kim Peace committed
176 177 178 179 180
    );
  }
};

// HOST_CHANGE_REQUEST
181 182
FermiWebSocketMessageHandler.hostChangeRequest = function (data) {
  FermiWebSocketBridge.hostChangeResponse(data);
Kim Peace committed
183 184 185 186 187 188 189 190 191
};

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

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

// API_SEND_OWNER_CHANGE_COMPLETE
Kim Peace committed
213
FermiWebSocketMessageHandler.apiSendOwnerChangeComplete = function (data) {
Kim Peace committed
214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231
  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
232 233 234 235 236 237 238
FermiWebSocketMessageHandler.changeHostApplyForNotHost = function (data) {
  NativeBridgeDelegate.setHostRequestFlg(HostRequestFlag.DOING);
  waitMillisecond(500);
};

// CHANGE_HOST_APPLY
FermiWebSocketMessageHandler.changeHostApplyForHost = function (data) {
Kim Peace committed
239
  const hostID = data.payload.hostId;
Kim Peace committed
240 241 242 243 244
  coview_api.HeartBeatUser(globalUserInfo.loginId);
  NativeBridgeDelegate.finishPIPMode(true);
  if (deviceInfo.isAndroid()) {
    $(".pip_indicator").addClass("none");
  }
Kim Peace committed
245

Kim Peace committed
246
  NativeBridgeDelegate.setHostRequestFlg(HostRequestFlag.DOING);
Kim Peace committed
247

Kim Peace committed
248
  waitMillisecond(500);
Kim Peace committed
249

Kim Peace committed
250
  if (confirm(getLocalizedString("norify_request_host_change", hostID))) {
251
    CoviewBridge.changeHost(hostID);
Kim Peace committed
252
    NativeBridgeDelegate.setHostRequestFlg(HostRequestFlag.DONE);
Kim Peace committed
253
  } else {
Kim Peace committed
254
    FermiWebSocketBridge.hostRequestReject(hostID);
Kim Peace committed
255
  }
Kim Peace committed
256
  FermiWebSocketBridge.hostRequestDone(hostID);
Kim Peace committed
257 258 259 260 261 262 263 264 265
};

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

// HOST_REQUEST_REJECT
FermiWebSocketMessageHandler.hostRequestReject = function (data) {
266
  if (data.payload.hostId == globalUserInfo.loginId) {
Kim Peace committed
267 268 269 270 271 272 273 274 275 276 277 278
    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) {
Kim Peace committed
279
  const collaborationType = data.payload.collaborationType;
280 281
  const meetingID = data.payload.newMeetingId ?? 0;
  
Kim Peace committed
282 283
  FermiWebSocketMessageHandler.updateJoinChangeCollaboration(collaborationType);
  globalUserInfo.meetingID = meetingID;
Kim Peace committed
284
  CollaborationUI.updateScreen(globalUserInfo.collaborationType);
Kim Peace committed
285 286

  NativeBridgeDelegate.joinChangedCollaboration(
287
    globalUserInfo.collaborationType,
Kim Peace committed
288
    meetingID
Kim Peace committed
289 290
  );

291
  if (globalUserInfo.collaborationType == COLLABORATION_TYPE.DOCUMENT) {
Kim Peace committed
292
    NativeBridgeDelegate.joinMeetingRoom(meetingID);
Kim Peace committed
293 294 295 296 297 298
  }
};

// API_WELCOME
FermiWebSocketMessageHandler.apiWelcome = function () {
  FermiWebSocketBridge.getCollaborationType();
299
  globalUserInfo.joinType = COLLABORATION_JOIN_TYPE.ATTENDEE;
Kim Peace committed
300 301 302 303 304 305 306 307
};

FermiWebSocketMessageHandler.updateJoinChangeCollaboration = function (
  collaborationType
) {
  if (
    deviceInfo.isAndroid() &&
    collaborationType == COLLABORATION_TYPE.DOCUMENT &&
308
    deviceInfo.androidVersion < ANDROID_SDK_VERSION.O
Kim Peace committed
309 310 311
  ) {
    coview_api.HeartBeatUser(globalUserInfo.loginId);
    alert(getLocalizedString("not_support_version"));
312
    globalUserInfo.collaborationType = COLLABORATION_TYPE.CAMERA;
Kim Peace committed
313
  } else {
314
    globalUserInfo.collaborationType = collaborationType;
Kim Peace committed
315 316
  }
};