Commit 86d7f716 by Kim Eunchul

Merge remote-tracking branch 'origin/develop' into squash/socket_kim-ec

# Conflicts:
#	public_new/js/sockets/chat-websocket-message.js
parents 2f805a11 f598d8fc
......@@ -73,6 +73,9 @@ input[name="tab_item"] {
width: 90px;
max-height: 60px;
}
#addUserFormInCollaboration .chat_list li {
border-bottom: 1px solid #e2e8f0;
}
.chat_list ul li {
list-style: none;
border-bottom: 1px solid #e2e8f0;
......
......@@ -26,14 +26,42 @@
margin: 0 5px;
}
.menu-icon {width: 40px;height: 50px;margin: 10px 15px;transform:scale(0.8);padding: 0;cursor: pointer;z-index:20}
.menu-bar {width: 40px;height: 5px;background: white;position: absolute;transition: all 0.3s;}
.menu-bar1 {margin-top: 9px}
.menu-bar2 {margin-top: 23px}
.menu-bar3 {margin-top: 37px}
.menu-icon.hover .menu-bar1 {-webkit-transform: rotate(45deg) scaleX(0.7);margin-top: 22px;}
.menu-icon.hover .menu-bar2 {opacity: 0}
.menu-icon.hover .menu-bar3 {-webkit-transform: rotate(-45deg) scaleX(0.7);margin-top: 22px;}
.menu-icon {
width: 40px;
height: 50px;
margin: 10px 15px;
transform: scale(0.8);
padding: 0;
cursor: pointer;
z-index: 20;
}
.menu-bar {
width: 40px;
height: 5px;
background: white;
position: absolute;
transition: all 0.3s;
}
.menu-bar1 {
margin-top: 9px;
}
.menu-bar2 {
margin-top: 23px;
}
.menu-bar3 {
margin-top: 37px;
}
.menu-icon.hover .menu-bar1 {
-webkit-transform: rotate(45deg) scaleX(0.7);
margin-top: 22px;
}
.menu-icon.hover .menu-bar2 {
opacity: 0;
}
.menu-icon.hover .menu-bar3 {
-webkit-transform: rotate(-45deg) scaleX(0.7);
margin-top: 22px;
}
.collabo-label {
padding: 2px 5px;
......@@ -50,8 +78,8 @@
margin-top: 50px;
}
#overlay_user_list .user_list {
background: #383838!important;
border: none!important;
background: #383838 !important;
border: none !important;
height: calc(100% - 140px);
overflow-x: unset;
overflow-y: scroll;
......@@ -139,38 +167,40 @@
width: 60px;
height: 60px;
}
#collabo_main .talking_area,#collabo_main .start_pip_area {
#collabo_main .talking_area,
#collabo_main .start_pip_area {
position: relative;
z-index: 2;
}
.talking_img_wrap {
position: relative;
display: flex;
align-items: center;
justify-content: center;
width: 90px;
height: 90px;
border-radius: 50%;
border: 1px solid #fff;
box-shadow: 0 0 20px #ffffff;
cursor: pointer;
}
.talking_img_wrap::before, .talking_img_wrap::after {
content: "";
display: block;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
margin: auto;
width: 100%;
height: 100%;
border: 1px solid #fff;
border-radius: 50%;
box-sizing: border-box;
pointer-events: none;
animation: pulsate 2s linear infinite;
position: relative;
display: flex;
align-items: center;
justify-content: center;
width: 90px;
height: 90px;
border-radius: 50%;
border: 1px solid #fff;
box-shadow: 0 0 20px #ffffff;
cursor: pointer;
}
.talking_img_wrap::before,
.talking_img_wrap::after {
content: "";
display: block;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
margin: auto;
width: 100%;
height: 100%;
border: 1px solid #fff;
border-radius: 50%;
box-sizing: border-box;
pointer-events: none;
animation: pulsate 2s linear infinite;
}
/**************************** overlay *************************/
......@@ -217,7 +247,7 @@ animation: pulsate 2s linear infinite;
background: #383838;
height: 100vh;
}
#add_user_list{
#add_user_list {
width: 90%;
height: 90%;
}
......@@ -236,44 +266,44 @@ animation: pulsate 2s linear infinite;
overflow: scroll;
}
#overlay_menu {
transition: .7s;
transition: 0.7s;
position: absolute;
top: 60px;
right: 0;
}
#overlay_menu .item01{
#overlay_menu .item01 {
opacity: 0;
animation: fadein .5s ease forwards;
animation: fadein 0.5s ease forwards;
}
#overlay_menu .item02{
#overlay_menu .item02 {
opacity: 0;
animation: fadein 1s ease forwards;
}
#overlay_menu .item03{
#overlay_menu .item03 {
opacity: 0;
animation: fadein 1.5s ease forwards;
}
#overlay_menu .item04{
#overlay_menu .item04 {
opacity: 0;
animation: fadein 2s ease forwards;
}
#overlay_menu .item05{
#overlay_menu .item05 {
opacity: 0;
animation: fadein 2.5s ease forwards;
}
@keyframes fadein{
0%{
@keyframes fadein {
0% {
opacity: 0;
}
100%{
100% {
opacity: 1;
}
}
@keyframes fadeout{
0%{
@keyframes fadeout {
0% {
opacity: 1;
}
100%{
100% {
opacity: 0;
}
}
......@@ -282,7 +312,7 @@ animation: pulsate 2s linear infinite;
#overlay_menu .item02.hide,
#overlay_menu .item03.hide,
#overlay_menu .item04.hide,
#overlay_menu .item05.hide{
#overlay_menu .item05.hide {
opacity: 1;
animation: fadeout 0.3s ease forwards;
}
......@@ -303,7 +333,7 @@ animation: pulsate 2s linear infinite;
position: relative;
z-index: 999;
}
#overlay_menu .menu_wrap .menu .item.hide{
#overlay_menu .menu_wrap .menu .item.hide {
z-index: 0;
}
#overlay_menu .menu_wrap .menu .item:hover {
......@@ -317,8 +347,8 @@ animation: pulsate 2s linear infinite;
color: #fff;
padding-top: 6px;
}
#overlay_menu .menu_wrap .menu .item span{
font-size:12px;
#overlay_menu .menu_wrap .menu .item span {
font-size: 12px;
}
#overlay_menu .img_wrap {
width: 35px;
......@@ -330,21 +360,14 @@ animation: pulsate 2s linear infinite;
width: 35px;
height: 35px;
}
.fas.fa-wrench{
.fas.fa-wrench {
color: #fff;
font-size: 24px;
vertical-align: middle;
}
/* ユーザー追加 */
#overlay_add_user_list {
position: fixed;
z-index: 100;
top: 0;
background: white;
height: 70%;
width: 80%;
}
#add_user_list .user_list li {
list-style: none;
border-bottom: 1px solid #e2e8f0;
......@@ -424,13 +447,20 @@ animation: pulsate 2s linear infinite;
height: 50px;
border-radius: 50%;
}
#overlay_add_user_list a {
color: #323743;
}
/**************************** add user *************************/
#addUserFormInCollaboration nav{
border:none;
#addUserFormInCollaboration nav {
border: none;
}
#addUserFormInCollaboration {
height: 100%;
display: flex;
flex-flow: column;
overflow-y: auto;
}
#addUserFormInCollaboration .content {
width: 100%;
}
/**************************** zoomin zoomout *************************/
......@@ -456,6 +486,10 @@ animation: pulsate 2s linear infinite;
margin: auto 0;
}
.coview_on_media_image_crown {
visibility: hidden;
}
/**************************** modal *************************/
#captyaModal .modal-header span,
#changeHostModal .modal-header span,
......@@ -483,12 +517,12 @@ animation: pulsate 2s linear infinite;
height: 50px;
border-radius: 5px;
}
#modalAddUserConfirm .chat_list h2{
#modalAddUserConfirm .chat_list h2 {
font-size: 20px;
}
/**************************** document *************************/
.start_pip_img_wrap{
.start_pip_img_wrap {
width: 40px;
}
......@@ -519,12 +553,12 @@ animation: pulsate 2s linear infinite;
.end:hover {
background: #ff4747c7;
}
.close_img{
.close_img {
width: 20px;
height: 20px;
}
.t-icon{
.t-icon {
background-repeat: no-repeat;
background-position: center;
background-size: contain;
......@@ -532,40 +566,40 @@ animation: pulsate 2s linear infinite;
height: 30px;
margin: 0 10px 6px 10px;
}
.voice{
.voice {
background-image: url("../icon/icon_voice_white.svg");
}
.voice.disable{
.voice.disable {
background-image: url("../icon/icon_voice_white_disable.svg");
}
.pen{
.pen {
background-image: url("../icon/icon_collabo_pen_white.svg");
}
.pen.disable{
.pen.disable {
background-image: url("../icon/icon_collabo_pen_white_disable.svg");
}
.picture{
.picture {
background-image: url("../icon/icon_collabo_picture.svg");
}
.place{
.place {
background-image: url("../icon/icon_collabo_place_white.svg");
}
.delete{
.delete {
background-image: url("../icon/icon_collabo_delete_white.svg");
}
.rewind{
.rewind {
background-image: url("../icon/icon_collabo_rewind_white.svg");
}
.forward{
.forward {
background-image: url("../icon/icon_collabo_forward_white.svg");
}
.capture{
.capture {
background-image: url("../icon/icon_collabo_capture.svg");
}
.record{
.record {
background-image: url("../icon/icon_record.svg");
}
.record.disable{
.record.disable {
background-image: url("../icon/icon_record_disable.svg");
}
......@@ -575,11 +609,12 @@ animation: pulsate 2s linear infinite;
align-items: center;
justify-content: center;
border-radius: 50%;
background-color: #DD4545;
background-color: #dd4545;
box-shadow: 0 0 20px #dd4545;
cursor: pointer;
}
.record.disable::before, .record.disable::after {
.record.disable::before,
.record.disable::after {
content: "";
display: block;
position: absolute;
......@@ -590,7 +625,7 @@ animation: pulsate 2s linear infinite;
margin: auto;
width: 100%;
height: 100%;
border: 1px solid #DD4545;
border: 1px solid #dd4545;
border-radius: 50%;
box-sizing: border-box;
pointer-events: none;
......@@ -607,7 +642,7 @@ animation: pulsate 2s linear infinite;
}
}
.flash-txt{
.flash-txt {
position: absolute;
top: -35px;
left: -45px;
......@@ -627,14 +662,32 @@ animation: pulsate 2s linear infinite;
border-radius: 5px;
}
@-webkit-keyframes fade-in-out {
0% {visibility: hidden; opacity: 0;}
50% {visibility: visible; opacity: 1;}
100% {visibility: hidden; opacity: 0;}
0% {
visibility: hidden;
opacity: 0;
}
50% {
visibility: visible;
opacity: 1;
}
100% {
visibility: hidden;
opacity: 0;
}
}
@keyframes fade-in-out {
0% {visibility: hidden; opacity: 0;}
50% {visibility: visible; opacity: 1;}
100% {visibility: hidden; opacity: 0;}
0% {
visibility: hidden;
opacity: 0;
}
50% {
visibility: visible;
opacity: 1;
}
100% {
visibility: hidden;
opacity: 0;
}
}
/**************************** footer-menu *************************/
......@@ -677,15 +730,17 @@ animation: pulsate 2s linear infinite;
margin: 0 5px;
color: #fff;
}
#collabo_footer_menu{
#collabo_footer_menu {
opacity: 1;
animation: fadein 0.5s ease forwards;
}
#collabo_footer_menu.hide{
#collabo_footer_menu.hide {
opacity: 1;
animation: fadeout 0.5s ease forwards;
}
#collabo_footer .txt{ font-size: 12px; }
#collabo_footer .txt {
font-size: 12px;
}
@media screen and (max-width: 768px) {
#add_user_list .user_item_ttl {
......@@ -723,13 +778,12 @@ animation: pulsate 2s linear infinite;
.add_user_modal {
width: 80%;
height: 80%;
height: 100%;
left: 12.5%;
overflow: auto;
}
.add_user_confirm_modal {
max-height: 80%;
left: 5%;
width: 90%;
}
......@@ -743,7 +797,7 @@ animation: pulsate 2s linear infinite;
}
#selectedUserListinCollaboration {
height: 400px;
height: 50vh;
overflow: scroll;
}
......@@ -769,7 +823,7 @@ animation: pulsate 2s linear infinite;
}
.modal-content .msg_notification {
display: none;
}
}
input[name="tab_item"] {
display: none;
......@@ -781,28 +835,35 @@ input[name="tab_item"] {
overflow: hidden;
}
#addUserFormInCollaboration #tab1_content,
#addUserFormInCollaboration #tab2_content {
height: 70vh;
overflow-y: scroll;
overflow-x: hidden;
}
#tabMyGroupOnMakeRoom:checked ~ #tab1_content,
#tabAllGroupOnMakeRoom:checked ~ #tab2_content{
#tabAllGroupOnMakeRoom:checked ~ #tab2_content {
display: block;
}
#tabMyGroupOnAddUserInCollaboration:checked ~ #tab1_content,
#tabAllGroupOnAddUserInCollaboration:checked ~ #tab2_content{
#tabAllGroupOnAddUserInCollaboration:checked ~ #tab2_content {
display: block;
}
#tabMyGroupOnAddUser:checked ~ #tab1_content,
#tabAllGroupOnAddUser:checked ~ #tab2_content{
#tabAllGroupOnAddUser:checked ~ #tab2_content {
display: block;
}
#tabMyGroup:checked ~ #tab1_content,
#tabAllGroup:checked ~ #tab2_content{
#tabAllGroup:checked ~ #tab2_content {
display: block;
}
#tabGroup:checked ~ #tab1_content,
#tabDM:checked ~ #tab2_content{
#tabDM:checked ~ #tab2_content {
display: block;
}
......@@ -851,7 +912,7 @@ input[name="tab_item"] {
z-index: 999;
}
#userNameCardInCollaboration li{
#userNameCardInCollaboration li {
list-style: none;
}
......@@ -926,4 +987,3 @@ input[name="tab_item"] {
max-width: 75%;
}
}
......@@ -159,6 +159,7 @@ Common.startCollaboration = function (collaborationType) {
deviceInfo.androidVersion < ANDROID_SDK_VERSION.O
) {
alert(getLocalizedString("not_support_version"));
Common.dismissLoadingIndicator();
return;
}
}
......@@ -168,9 +169,10 @@ Common.startCollaboration = function (collaborationType) {
Common.dismissLoadingIndicator();
return;
}
const sendData = DATA_MESSAGE_SCHEME + FINISH_ALL_COLLABORATION_SIGNAL;
CHAT_SOCKET.emitCreateMessage(SOCKET_KEY.CREATE_MESSAGE, sendData);
NativeBridgeDelegate.finishAllCollaboration();
}
CHAT_SOCKET.emitCollaborationFinishMessage();
NativeBridgeDelegate.finishAllCollaboration();
NativeBridgeDelegate.startCollaboration(collaborationType);
Common.dismissLoadingIndicator();
};
......@@ -135,7 +135,7 @@ NativeBridgeDelegate.saveSelectedUserList = function (selectedUserList) {
NativeBridgeDelegate.startPIPMode = function () {
if (typeof android != "undefined") {
android.startPipMode();
android.startPIPMode();
} else if (deviceInfo.isiOS()) {
webkit.messageHandlers.startPipMode.postMessage({});
}
......@@ -366,7 +366,11 @@ NativeBridgeDelegate.changeCollaboration = function (
NativeBridgeDelegate.showLoadingIndicator = function () {
if (deviceInfo.isiOS()) {
try {
webkit.messageHandlers.showLoadingIndicator.postMessage({});
} catch (e) {
console.error("failed to display loading indicator with error: " + e);
}
} else if (deviceInfo.isAndroid()) {
android.showLoadingIndicator();
}
......
......@@ -19,6 +19,10 @@ CHAT_SOCKET.handleMessage = function (message, roomName, socketKey, roomID = nul
DATA_MESSAGE_SCHEME + FINISH_ALL_COLLABORATION_SIGNAL
) {
CHAT_SOCKET.cleanUpCollaborationMessage();
if (typeof CoviewBridge !== "undefined") {
CoviewBridge.finishCollaboration();
}
return;
}
......@@ -26,9 +30,7 @@ CHAT_SOCKET.handleMessage = function (message, roomName, socketKey, roomID = nul
const messageType = socketKey;
const messageText = unwrappedMessageInfo;
if (
messageType == SOCKET_KEY.NEW_COMMUNICATION
) {
if (messageType == SOCKET_KEY.NEW_COMMUNICATION) {
CHAT_SOCKET.addCollaborationMessage(
messageInfo,
message.userId,
......@@ -50,7 +52,7 @@ CHAT_SOCKET.handleMessage = function (message, roomName, socketKey, roomID = nul
} else {
Common.dismissLoadingIndicator();
}
}
};
CHAT_SOCKET.decodeMessage = function (text) {
try {
......@@ -126,6 +128,7 @@ CHAT_SOCKET.renderCollaborationMessage = function (
createdAtDay: messageTime.createdAtDay,
createdAtTime: messageTime.createdAtTime,
isOtherYear: false,
collaborationJoinMessage: getLocalizedString("message_join"),
});
};
......@@ -187,8 +190,11 @@ CHAT_SOCKET.getUserInfoList = function (userID) {
return JSON.parse(NativeBridgeDataSource.getUserInfoList(userID));
};
CHAT_SOCKET.cleanUpCollaborationMessage = function () {
CHAT_SOCKET.cleanUpCollaborationMessage = function (exceptFirst = false) {
$(".collabo_area.start").each(function (index, collaborationMessage) {
if (exceptFirst && index === 0) {
return;
}
$(collaborationMessage).removeClass("start");
$(collaborationMessage).addClass("end");
$(collaborationMessage).addClass("disable");
......@@ -197,7 +203,7 @@ CHAT_SOCKET.cleanUpCollaborationMessage = function () {
.attr("disabled", "disabled");
$(collaborationMessage)
.find(".collaboration_join_message")
.text(getLocalizedString("flex-directionmessage_ended"));
.text(getLocalizedString("message_ended"));
});
};
......
......@@ -189,9 +189,9 @@ var bindOnRefreshUserListInGroup = function () {
};
var nextFibonacci = function (num) {
let nextNum = num * (1 + Math.sqrt(5)) / 2.0;
let nextNum = (num * (1 + Math.sqrt(5))) / 2.0;
return Math.round(nextNum);
}
};
CHAT_SOCKET.emitCreateMessage = function (socketKey, sendData) {
if (socket.connected == false) {
......@@ -213,30 +213,56 @@ CHAT_SOCKET.emitCreateVideo = function (sendData) {
CHAT_SOCKET.emitCreateMessage(SOCKET_KEY.CREATE_VIDEO, sendData);
};
CHAT_SOCKET.emitCreateCommunicationStart = function (sendData, collaborationType, meetingID) {
CHAT_SOCKET.emitCreateCommunicationStart = function (
sendData,
collaborationType,
meetingID
) {
if (socket.connected == false) {
CHAT_SOCKET.reconnectCreateMessage(SOCKET_KEY.COMMUNICATION, sendData, collaborationType, meetingID);
CHAT_SOCKET.reconnectCreateMessage(
SOCKET_KEY.COMMUNICATION,
sendData,
collaborationType,
meetingID
);
} else {
socket.emit(SOCKET_KEY.COMMUNICATION, { text: sendData }, collaborationType, meetingID);
socket.emit(
SOCKET_KEY.COMMUNICATION,
{ text: sendData },
collaborationType,
meetingID
);
}
};
CHAT_SOCKET.reconnectCreateMessage = function (socketKey, sendData, timeout = 100, collaborationType = null, meetingID = null) {
CHAT_SOCKET.reconnectCreateMessage = function (
socketKey,
sendData,
timeout = 100,
collaborationType = null,
meetingID = null
) {
if (socket.connected == false) {
console.log("socket disconnected, reconnect... " + timeout)
console.info("socket disconnected, reconnect... " + timeout);
CHAT_SOCKET.initialJoin();
setTimeout(function() {
CHAT_SOCKET.reconnectCreateMessage(socketKey, sendData, nextFibonacci(timeout));
setTimeout(function () {
CHAT_SOCKET.reconnectCreateMessage(
socketKey,
sendData,
nextFibonacci(timeout)
);
}, timeout);
} else {
console.log("reconnected")
return;
}
console.info("socket reconnected");
if (collaborationType == null) {
socket.emit(socketKey, { text: sendData });
} else {
socket.emit(socketKey, { text: sendData }, collaborationType, meetingID);
}
}
}
};
CHAT_SOCKET.emitCollaborationFinishMessage = function () {
if (socket != null && socket.connected) {
......
......@@ -23,7 +23,7 @@ ArchiveUI.refreshSearchScreen = function (keyword) {
);
let obj = jQuery.parseHTML(html);
$(".overlay_src_msg").append(obj);
$(".overlay_src_msg").prepend(obj);
});
});
};
......@@ -340,7 +340,7 @@ ArchiveUI.refreshArchiveScreen = function () {
typeImage: typeImage,
});
const obj = $(jQuery.parseHTML(html)).on("click", function () {});
$("#archiveList").append(obj);
$("#archiveList").prepend(obj);
});
// loadingIndicatorを非表示
......
......@@ -98,6 +98,8 @@ ChatRoom.loadMessages = function (joinRoomID, joinRoomName) {
let messages = NativeBridgeDataSource.getMessagesByRoomID(roomID);
ChatRoom.prependMessage(messages, roomID);
CHAT_SOCKET.cleanUpCollaborationMessage(true);
window.addEventListener(
"load",
function (event) {
......@@ -282,7 +284,7 @@ ChatRoom.renderCollaborationMessage = function (message, isToday, isOtherYear) {
};
ChatRoom.getMeetingID = function (meetingID) {
return typeof meetingID != "undefined" ? 0 : meetingID;
return typeof meetingID == "undefined" ? 0 : meetingID;
};
ChatRoom.getDisplayUserList = function (userList) {
......
......@@ -10,32 +10,45 @@ window.onscroll = function () {
return;
}
beforeScroll = window.scrollY;
ChatRoom.prependMessageWhenScrollIfNeeded();
};
ChatRoom.prependMessageWhenScrollIfNeeded = function () {
const beforeHeight = $(".room_container").height();
messageCount = $(".chat_message").length;
// TODO: peacekim :: check this condition
if ($(this).scrollTop() === 0 && messageCount >= PagingSize.MESSAGE) {
setTimeout(function () {
setTimeout(() => {
if (!$("#chatLoader").is(":visible")) {
// display loading indicator in chat message
let loader = $(
'<div id="chatLoader" class="text-center"><div class="spinner-grow spinner-grow-sm" role="status" /></div>'
);
$("#messages").append(loader);
// get lastest message id and update message from server via native
const messageID = $($(".chat_message").last()).data("messageid");
NativeBridgeDelegate.updatePreMessage(messageID);
let messages = NativeBridgeDataSource.getMessagesByMessageID(messageID);
}
ChatRoom.loadNewMessage().then((messages) => {
// prepend message
ChatRoom.prependMessage(messages);
// hide loading indicator
if (typeof loader !== "undefined") {
loader.remove();
var afterHeight = $(".room_container").height();
window.scroll(0, afterHeight - beforeHeight);
}
const afterHeight = $(".room_container").height();
window.scroll(0, afterHeight - beforeHeight);
});
}, 0);
}
};
ChatRoom.loadNewMessage = async function () {
return new Promise(function (done) {
// get lastest message id and update message from server via native
const messageID = $($(".chat_message").last()).data("messageid");
NativeBridgeDelegate.updatePreMessage(messageID);
let messages = NativeBridgeDataSource.getMessagesByMessageID(messageID);
done(messages);
});
};
document.addEventListener("DOMContentLoaded", function () {
// 検索イベントバインディング
ChatRoom.bindSearchUI();
......
CollaborationUI.initialBindAddUserButton = function () {
// ユーザー招待メンバー検索
$(".add_user_btn").click(function () {
CollaborationUI.bindEnableScroll();
CollaborationUI.enableScroll();
Common.showLoadingIndicator();
ChatManagementCommon.selectedUserList = [];
CollaborationUI.refreshMyGroupForAddUserInCollaboration();
......@@ -9,6 +9,11 @@ CollaborationUI.initialBindAddUserButton = function () {
.off()
.on("click", function () {
$("#addUserInCollaboration").modal("hide");
if (ChatManagementCommon.selectedUserList.length == 0) {
return;
}
const selectedUserList =
ChatManagementCommon.selectedUserList.join(",");
NativeBridgeDelegate.saveSelectedUserList(selectedUserList);
......@@ -149,7 +154,7 @@ CollaborationUI.refreshAllGroupForAddUserInCollaboration = function (groupID) {
CollaborationUI.appendChildGroups(result.childGroupList);
//該当グループの所属ユーザを表示。
CollaborationUI.appendUsers();
CollaborationUI.appendUsers(result.groupUserList);
};
CollaborationUI.bindOnClickParentGroup = function (parentGroupID) {
......@@ -168,7 +173,7 @@ CollaborationUI.displayRootGroupAndParentGroupIfNeeded = function (
rootGroupID,
groupID
) {
if (typeof rootGroupID !== "undefined" && paramGroupID == 0) {
if (typeof rootGroupID !== "undefined" && rootGroupID == 0) {
groupID = rootGroupID;
}
......@@ -296,7 +301,7 @@ CollaborationUI.bindAddUserButton = function (selectedUsers) {
let userIDList = selectedUsers.map((user) => user.shopMemberId);
const commaJoinedUserIDList = userIDList.join(",");
const collaborationType = globalUserInfo.collaborationType;
scrollTo(0,0);
NativeBridgeDelegate.inviteCollaboration(
commaJoinedUserIDList,
collaborationType
......
var CollaborationUI = {};
document.addEventListener("DOMContentLoaded", function () {
CollaborationUI.bindDisableScroll();
CollaborationUI.disableScroll();
// メニューオーバーレイ表示
CollaborationUI.bindMenuButton();
......@@ -12,14 +12,16 @@ document.addEventListener("DOMContentLoaded", function () {
// モーダルonモーダル(前のモーダルを非表示に)
// ホスト変更ボタン押下イベント
CollaborationUI.bindChangeHostButton();
});
document.addEventListener("readystatechange", () => {
if (document.readyState === "complete") {
CollaborationUI.initialBindAddUserButton();
// 閉じるイベント
CollaborationUI.bindCloseButton();
// ユーザー追加イベント
CollaborationUI.bindInviteButton();
CollaborationUI.initialBindAddUserButton();
}
});
/*********************************
......@@ -34,30 +36,31 @@ CollaborationUI.bindMenuButton = function () {
CollaborationUI.bindDisplayUsersButton = function () {
$(".user_btn").click(function () {
var w = $(this).width();
const width = $(this).width();
$("#overlay_user_list.overlay").stop();
$(this).toggleClass("hide");
$("#overlay_user_list.overlay")
.toggleClass("slidein")
.css({ transform: "translateX(" & -w & ")" });
.animate({ left: "+=width" }, 500, function () {
scrollTo(0, 0);
});
if ($(this).hasClass("hide")) {
CollaborationUI.bindEnableScroll();
CollaborationUI.enableScroll();
} else {
scrollTo(0, 0);
CollaborationUI.bindDisableScroll();
CollaborationUI.disableScroll();
}
});
};
CollaborationUI.userListSlideOut = function () {
const w = $(".user_btn").width();
const userButtonWidth = $(".user_btn").width();
$(".user_btn").removeClass("hide");
$("#overlay_user_list.overlay")
.removeClass("slidein")
.css({ transform: "translateX(" & -w & ")" });
.css({ transform: "translateX(" & -userButtonWidth & ")" });
scrollTo(0, 0);
CollaborationUI.bindDisableScroll();
CollaborationUI.disableScroll();
};
CollaborationUI.bindChangeHostButton = function () {
......@@ -73,21 +76,21 @@ CollaborationUI.bindChangeHostButton = function () {
CollaborationUI.bindCloseButton = function () {
$(".close_btn").click(function () {
$("#overlay_add_user_list").addClass("none");
CollaborationUI.bindDisableScroll();
scrollTo(0, 0);
CollaborationUI.disableScroll();
});
};
CollaborationUI.bindInviteButton = function () {
$(".inv_btn").click(function () {
$("#overlay_add_user_list").addClass("none");
scrollTo(0, 0);
});
};
/*********************************
* Scroll Controls
********************************/
CollaborationUI.bindDisableScroll = function () {
CollaborationUI.disableScroll = function () {
document.addEventListener("mousewheel", CollaborationUI.scrollControl, {
passive: false,
});
......@@ -97,7 +100,7 @@ CollaborationUI.bindDisableScroll = function () {
};
// スクロール禁止解除
CollaborationUI.bindEnableScroll = function () {
CollaborationUI.enableScroll = function () {
document.removeEventListener("mousewheel", CollaborationUI.scrollControl, {
passive: false,
});
......@@ -182,14 +185,6 @@ CollaborationUI.refreshForOffline = function () {
}
};
CollaborationUI.showLoadingIndicator = function () {
$("#loadingIndicator").addClass("full_active");
};
CollaborationUI.hideLoadingIndicator = function () {
$("#loadingIndicator").removeClass("full_active");
};
CollaborationUI.displayAddUserButtonIfNeeded = function () {
if (roomInfo.roomType == ChatRoomType.DM) {
$(".add_user_btn").removeClass("none");
......
......@@ -45,9 +45,7 @@ FermiWebSocketBridge.hostRequestDone = function (hostID) {
// GET_COLLABORATION_TYPE_RESPONSE
FermiWebSocketBridge.getCollaborationTypeResponse = function (loginID) {
if (typeof meetingID == undefined) {
var meetingID = 0;
}
let meetingID = globalUserInfo.meetingID ?? 0;
fw.sendToMsg("others", "GET_COLLABORATION_TYPE_RESPONSE", {
loginId: loginID,
......
......@@ -28,7 +28,6 @@ CoviewBridge.bindFermiWebSocketOpenned = function () {
CoviewBridge.bindStartEvent = function () {
coview_api.addEventListener("start", function () {
CollaborationFeature.enableScrollLock();
CollaborationUI.hideLoadingIndicator();
});
};
......@@ -84,14 +83,11 @@ CoviewBridge.bindAllByeEvent = function () {
NativeBridgeDelegate.showExitHostAlert();
return;
}
CollaborationUI.hideLoadingIndicator();
});
};
CoviewBridge.bindGuestByeEvent = function () {
coview_api.addEventListener("guestbye", function () {
CollaborationUI.hideLoadingIndicator();
});
coview_api.addEventListener("guestbye", function () {});
};
CoviewBridge.bindDestroyEvent = function () {
......@@ -99,7 +95,6 @@ CoviewBridge.bindDestroyEvent = function () {
CHAT_SOCKET.emitCollaborationFinishMessage();
alert(getLocalizedString("inform_exit_host_collaboration"));
CoviewBridge.exitCollaboration();
CollaborationUI.hideLoadingIndicator();
});
};
......@@ -110,7 +105,7 @@ CoviewBridge.bindMessageEvent = function () {
}
switch (json.api) {
case "LoginResponse":
CollaborationFeature.didReceiveLoginResponseMessage();
await CollaborationFeature.didReceiveLoginResponseMessage();
break;
case "CreateRoomResponse":
if (json.resultCode == 200) {
......@@ -211,21 +206,26 @@ CollaborationFeature.didReceiveLoginResponseMessage = async function () {
CollaborationFeature.didReceiveCreateRoomResponseMessage = function () {
let coviewInviteMessage = "";
let collaborationType = CHAT_UTIL.getCollaborationTypeNumber(globalUserInfo.collaborationType);
let meetingID = null
let collaborationType = CHAT_UTIL.getCollaborationTypeNumber(
globalUserInfo.collaborationType
);
let meetingID = null;
if (globalUserInfo.collaborationType == COLLABORATION_TYPE.DOCUMENT) {
meetingID = globalUserInfo.meetingID;
}
CHAT_SOCKET.emitCreateCommunicationStart(coviewInviteMessage, collaborationType, meetingID);
CHAT_SOCKET.emitCreateCommunicationStart(
coviewInviteMessage,
collaborationType,
meetingID
);
};
CollaborationFeature.didReceivedJoinRoomInfoResponseMessage = function () {
alert(getLocalizedString("not_exist_sharing_call"));
coview_api.LeaveRoom();
$(".coview_share_area").hide();
CollaborationUI.hideLoadingIndicator();
NativeBridgeDelegate.joinRoom(roomInfo.roomID, roomInfo.roomName);
};
......@@ -492,7 +492,6 @@ CollaborationUI.refreshJoinedCollaboration = function (loginIDList) {
};
CollaborationUI.moveToVideoShareArea = function () {
CollaborationUI.showLoadingIndicator();
$(".coview_share_area").show();
$("#collabo_main").removeClass("none");
};
......@@ -52,7 +52,8 @@ function changeCollaboration(collaborationType) {
case COLLABORATION_TYPE.DOCUMENT:
coview_api.ChangeCollaboration("audio");
newMeetingID = NativeBridgeDataSource.createContentView();
if (newMeetingID == "-1") { //会議室作成失敗
if (newMeetingID == "-1") {
//会議室作成失敗
CoviewBridge.finishCollaboration();
return;
}
......
......@@ -143,9 +143,7 @@ Contact.refreshContactScreen = function () {
Contact.appendMyNamecard();
Contact.appendFavoritGroupList();
Contact.appendFavoritUsers();
Contact.reloadFavoriteList();
Contact.appendMyGroupList();
......@@ -173,6 +171,12 @@ Contact.appendMyNamecard = function () {
$("#myImg").attr("src", myInfo.profileImagePath);
};
Contact.reloadFavoriteList = function () {
$("#favoriteList").html("");
Contact.appendFavoritGroupList();
Contact.appendFavoritUsers();
};
Contact.appendFavoritGroupList = function () {
// グループの様式を読み込む
const groupTemplate = getTemplate(TemplateURL.GROUP_LIST);
......@@ -221,37 +225,35 @@ Contact.appendMyGroupList = function () {
};
Contact.favoriteGroupChange = function (groupID, star) {
if ($(star).hasClass("active")) {
Contact.removeFavoriteGroup(groupID);
} else if ($(star).hasClass("disable")) {
Contact.insertFavoriteGroup(groupID);
const div = $(star);
if (div.hasClass("sp-circle")) {
return;
}
div.removeClass("star");
div.addClass("sp-circle");
setTimeout(() => {
if (div.hasClass("active")) {
Contact.removeFavoriteGroup(groupID, div);
} else if (div.hasClass("disable")) {
Contact.insertFavoriteGroup(groupID, div);
}
div.removeClass("sp-circle");
div.addClass("star");
Contact.reloadFavoriteList();
}, 0);
};
Contact.removeFavoriteGroup = function (groupID) {
Common.showLoadingIndicator();
var result = NativeBridgeDataSource.removeFavoriteGroup(groupID);
if (result) {
$(".group_" + groupID).removeClass("active");
$(".group_" + groupID).addClass("disable");
} else {
$(".group_" + groupID).addClass("active");
$(".group_" + groupID).removeClass("disable");
}
Common.dismissLoadingIndicator();
Contact.removeFavoriteGroup = function (groupID, div) {
const result = NativeBridgeDataSource.removeFavoriteGroup(groupID);
div.removeClass(result ? "active" : "disable");
div.addClass(result ? "disable" : "active");
};
Contact.insertFavoriteGroup = function (groupID) {
Common.showLoadingIndicator();
Contact.insertFavoriteGroup = function (groupID, div) {
const result = NativeBridgeDataSource.addFavoriteGroup(groupID);
if (result) {
$(".group_" + groupID).removeClass("disable");
$(".group_" + groupID).addClass("active");
} else {
$(".group_" + groupID).addClass("disable");
$(".group_" + groupID).removeClass("active");
}
Common.dismissLoadingIndicator();
div.removeClass(result ? "disable" : "active");
div.addClass(result ? "active" : "disable");
};
//全グループ検索画面表示。
......
......@@ -63,40 +63,44 @@ Namecard.startVoice = function (userShopMemberID, userName) {
};
Namecard.favoriteUserChange = function (shopMemberID, star) {
if ($(star).hasClass("active")) {
Namecard.removeFavoriteUser(shopMemberID);
} else if ($(star).hasClass("disable")) {
Namecard.insertFavoriteUser(shopMemberID);
const div = $(star);
if (div.hasClass("sp-circle")) {
return;
}
div.removeClass("star");
div.addClass("sp-circle");
setTimeout(() => {
if (div.hasClass("active")) {
Namecard.removeFavoriteUser(shopMemberID, div);
} else if (div.hasClass("disable")) {
Namecard.insertFavoriteUser(shopMemberID, div);
}
div.removeClass("sp-circle");
div.addClass("star");
if (typeof Contact != "undefined") {
Contact.reloadFavoriteList();
}
if (div.hasClass("active")) {
window.scroll(0, window.scrollY + $(".my_info_sell").height());
} else if (div.hasClass("disable")) {
window.scroll(0, window.scrollY - $(".my_info_sell").height());
}
}, 0);
};
Namecard.removeFavoriteUser = function (shopMemberID) {
Common.showLoadingIndicator();
$("#userNameCard").modal("hide");
$("#myNameCard").modal("hide");
Namecard.removeFavoriteUser = function (shopMemberID, div) {
const result = NativeBridgeDataSource.removeFavoriteUser(shopMemberID);
if (result) {
$(".shopmember_" + shopMemberID).removeClass("active");
$(".shopmember_" + shopMemberID).addClass("disable");
} else {
$(".shopmember_" + shopMemberID).addClass("active");
$(".shopmember_" + shopMemberID).removeClass("disable");
}
Common.dismissLoadingIndicator();
div.removeClass(result ? "active" : "disable");
div.addClass(result ? "disable" : "active");
};
Namecard.insertFavoriteUser = function (shopMemberID) {
$("#userNameCard").modal("hide");
$("#myNameCard").modal("hide");
Namecard.insertFavoriteUser = function (shopMemberID, div) {
const result = NativeBridgeDataSource.addFavoriteUser(shopMemberID);
if (result) {
$(".shopmember_" + shopMemberID).removeClass("disable");
$(".shopmember_" + shopMemberID).addClass("active");
} else {
$(".shopmember_" + shopMemberID).addClass("disable");
$(".shopmember_" + shopMemberID).removeClass("active");
}
Common.dismissLoadingIndicator();
div.removeClass(result ? "disable" : "active");
div.addClass(result ? "active" : "disable");
};
Namecard.refreshForOnline = function () {
......@@ -109,11 +113,12 @@ Namecard.refreshForOffline = function () {
Namecard.moveContactPage = function (paramGroupID) {
const groupID = paramGroupID;
if (window.location.pathname.includes("chat_room") ||
window.location.pathname.includes("archive_detail"))
{
if (
window.location.pathname.includes("chat_room") ||
window.location.pathname.includes("archive_detail")
) {
if (groupID == "") return;
NativeBridgeDelegate.setToMoveGroupId(groupID);
window.location.href = "contact.html";
}
}
};
<div class="modal fade add_user_confirm_modal" id="modalAddUserConfirm" tabindex="-1" role="dialog"
aria-labelledby="modalAddUserConfirm" aria-hidden="true" style="position: fixed;">
<div class="modal-dialog modal-dialog-centered modal_collaboration_user" role="document">
<div class="modal-content" style="position: fixed;top: 0;height: 100%;width: 100%;left:0;right: 0;margin: 0 auto;">
aria-labelledby="modalAddUserConfirm" aria-hidden="true" style="position: fixed; overflow-y: hidden;">
<div class="modal-dialog modal-dialog-centered modal_collaboration_user" role="document" style="max-width: 100%;">
<div class="modal-content" style="height:70vh; width:90vw;">
<div class="modal-header border-0 pb-0">
<span class="m-auto">ユーザー招待</span>
</div>
......@@ -16,7 +16,8 @@
<div class="chat_item d-flex flex-row align-items-center w-100">
<div class="chat_item_l">
<div class="thumbnail">
<div class="img_wrap"><img src="{{profileUrl}}" onError="this.src='./img/noImage.png'"/></div>
<div class="img_wrap"><img src="{{profileUrl}}"
onError="this.src='./img/noImage.png'" /></div>
</div>
</div>
<div class="chat_item_m px-0">
......@@ -34,8 +35,10 @@
</ul>
</div>
</div>
<div class="modal-footer border-0 justify-content-center" style="position: relative;width: 100%;background-color: white;">
<button type="button" id="cancelAddUserBtn" class="profile_favorite_btn bg_white border_gray text_blue cancel_add_user_btn">
<div class="modal-footer border-0 justify-content-center"
style="position: relative;width: 100%;background-color: white;">
<button type="button" id="cancelAddUserBtn"
class="profile_favorite_btn bg_white border_gray text_blue cancel_add_user_btn">
<div class="d-flex flex-column">
<span>キャンセル</span>
</div>
......
<!-- コンテンツ -->
<div class="modal fade add_user_modal" id="addUserInCollaboration" tabindex="-1" role="dialog" aria-labelledby="addUserInCollaboration" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered modal_collaboration_user" role="document">
<div class="modal-content" style="position: fixed;width: 100%;height:100%;top: 0px;left:0;">
<div class="modal fade add_user_modal" id="addUserInCollaboration" tabindex="-1" role="dialog"
aria-labelledby="addUserInCollaboration" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered modal_collaboration_user" role="document" style="max-width: 100%;">
<div class="modal-content">
<form id="addUserFormInCollaboration" action="chat_add_user_confirm.html" method="post">
<!-- ユーザー検索 -->
<!-- タブ -->
......@@ -9,7 +10,8 @@
<div class="row h-100 align-items-center">
<div class="col-4 pr-0">
<div class="nav-item">
<a href="#" class="close_btn" class="close" data-dismiss="modal" aria-label="Close">閉じる</a>
<a href="#" class="close_btn" class="close" data-dismiss="modal"
aria-label="Close">閉じる</a>
</div>
</div>
<div class="col-4 p-0">
......@@ -20,19 +22,23 @@
</div><!-- .row -->
</nav><!-- nav -->
<div class="content tabs">
<input id="tabMyGroupOnAddUserInCollaboration" type="radio" name="tab_item" checked onclick="CollaborationUI.refreshMyGroupForAddUserInCollaboration();">
<input id="tabMyGroupOnAddUserInCollaboration" type="radio" name="tab_item" checked
onclick="CollaborationUI.refreshMyGroupForAddUserInCollaboration();">
<label class="tab_item m-0" for="tabMyGroupOnAddUserInCollaboration">マイグループ</label>
<input id="tabAllGroupOnAddUserInCollaboration" type="radio" name="tab_item" onclick="CollaborationUI.refreshAllGroupForAddUserInCollaboration('0');">
<input id="tabAllGroupOnAddUserInCollaboration" type="radio" name="tab_item"
onclick="CollaborationUI.refreshAllGroupForAddUserInCollaboration('0');">
<label class="tab_item m-0" for="tabAllGroupOnAddUserInCollaboration">全グループ</label>
<div class="tab_content" id="tab1_content" style="height: 100vh; overflow:scroll;">
<div class="tab_content" id="tab1_content">
<div class="chat_list">
<!-- お気に入りグループ -->
<div class="category" onclick="CollaborationUI.toggleCategory(this);"><div class="category_name"><span>お気に入り</span></div></div>
<div class="category" onclick="CollaborationUI.toggleCategory(this);">
<div class="category_name"><span>お気に入り</span></div>
</div>
<div id="favoriteListForAddUserInCollaboration"></div>
<div id="myGroupListForAddUserInCollaboration"></div>
</div>
</div>
<div class="tab_content" id="tab2_content" style="height: 100vh; overflow:scroll;">
<div class="tab_content" id="tab2_content">
<div class="breadcrumb" id="groupPathAreaForAddUserInCollaboration"></div>
<div class="chat_list">
<!-- 全グループ -->
......@@ -80,7 +86,7 @@
</div>
</div>
<!-- ルーム解説ボタン -->
<div class="add_user_confirm_btn content" id="addUserConfirmBtnInCollaboration" style="position: fixed;">
<div class="add_user_confirm_btn content" id="addUserConfirmBtnInCollaboration">
<button type="button" name="button" id="buttonAddUser" style="bottom: 0; width: 100%;">
確認<br>
<span class="select_member_num"></span><span class="select_member">名 選択中</span></button>
......
<!-- TODO: peacekim:: this file is not using-->
<div class="modal fade profile_modal" id="profileModal1" tabindex="-1" role="dialog" aria-labelledby="profileModal1"
aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
......
......@@ -19,21 +19,19 @@
</div>
<div class="modal-footer border-0 justify-content-center">
{{#isFavorite}}
<button type="button" class="border-0 bg_navy"
onclick="CollaborationUI.removeFavoriteUserInCollaboration({{shopMemberId}})" id="favoriteButton">
<button type="button" class="border-0 bg_navy" id="favoriteButton">
<div class="d-flex flex-column">
<span class="star active shopmember_{{shopMemberId}}"
onclick="CHAT_UI.favoriteUserChange('{{shopMemberId}}',this)"></span>
onclick="CollaborationUI.removeFavoriteUserInCollaboration({{shopMemberId}})"></span>
<span>お気に入り解除</span>
</div>
</button>
{{/isFavorite}}
{{^isFavorite}}
<button type="button" class="border-0 bg_navy"
onclick="CollaborationUI.insertFavoriteUserInCollaboration({{shopMemberId}})" id="favoriteButton">
<button type="button" class="border-0 bg_navy" id="favoriteButton">
<div class="d-flex flex-column">
<span class="star disable shopmember_{{shopMemberId}}"
onclick="Namecard.favoriteUserChange('{{shopMemberId}}',this)"></span>
onclick="CollaborationUI.insertFavoriteUserInCollaboration({{shopMemberId}})"></span>
<span>お気に入り登録</span>
</div>
</button>
......
{{#userList}}
<div class="user_item">
<a href="javascript:return false;" onclick="Namecard.makeNameCard({{shopMemberId}})">
<a href="#" onclick="Namecard.makeNameCard({{shopMemberId}})">
<div class="d-flex flex-column">
<div class="img_wrap">
<img src="{{profileUrl}}" onError="this.src='./img/noImage.png'">
......
......@@ -2,7 +2,7 @@
<ul class="p-0 chat_make_room_list">
{{#groupUserList}}
<li class="d-flex align-items-center">
<a href="javascript:return false;" onclick="Namecard.makeNameCard({{shopMemberId}})" style="width: 100%;">
<a href="#" onclick="Namecard.makeNameCard({{shopMemberId}})" style="width: 100%;">
<div class="chat_item d-flex flex-row align-items-center">
<div class="chat_item_l">
<div class="thumbnail">
......@@ -21,10 +21,10 @@
<div class="chat_item_r">
<div class="d-flex flex-column">
{{#isFavorite}}
<span class="star active shopmember_{{shopMemberId}}" onclick="Namecard.favoriteUserChange({{shopMemberId}},this)"></span>
<span class="star active shopmember_{{shopMemberId}}" onclick="Namecard.favoriteUserChange({{shopMemberId}}, this)"></span>
{{/isFavorite}}
{{^isFavorite}}
<span class="star disable shopmember_{{shopMemberId}}" onclick="Namecard.favoriteUserChange({{shopMemberId}},this)"></span>
<span class="star disable shopmember_{{shopMemberId}}" onclick="Namecard.favoriteUserChange({{shopMemberId}}, this)"></span>
{{/isFavorite}}
</div>
</div>
......
<ul class="p-0 chat_make_room_list" style="margin-top: 0px !important;border-top: none !important;">
<ul class="p-0" style="margin-top: 0px !important;border-top: none !important;">
{{#userList}}
<li class="d-flex align-items-center">
<a href="javascript:return false;" onclick="Namecard.makeNameCard({{shopMemberId}})" style="width: 100%;">
<li class="d-flex align-items-center userCell">
<a href="#" onclick="Namecard.makeNameCard({{shopMemberId}})" style="width: 100%;">
<div class="chat_item d-flex flex-row align-items-center">
<div class="chat_item_l">
<div class="thumbnail">
......@@ -20,10 +20,10 @@
<div class="chat_item_r">
<div class="d-flex flex-column">
{{#isFavorite}}
<span class="star active shopmember_{{shopMemberId}}" onclick="Namecard.favoriteUserChange({{shopMemberId}},this)"></span>
<span class="star active shopmember_{{shopMemberId}}" onclick="Namecard.favoriteUserChange({{shopMemberId}}, this)"></span>
{{/isFavorite}}
{{^isFavorite}}
<span class="star disable shopmember_{{shopMemberId}}" onclick="Namecard.favoriteUserChange({{shopMemberId}},this)"></span>
<span class="star disable shopmember_{{shopMemberId}}" onclick="Namecard.favoriteUserChange({{shopMemberId}}, this)"></span>
{{/isFavorite}}
</div>
</div>
......
......@@ -18,24 +18,20 @@
{{/groupPathList}}
</div>
<div class="modal-footer border-0 justify-content-center">
{{#isFavorite}}
<button type="button" class="border-0" onclick="Namecard.removeFavoriteUser({{shopMemberId}})"
id="favoriteButton">
<button type="button" class="border-0" id="favoriteButton">
<div class="d-flex flex-column">
<span class="star active shopmember_{{shopMemberId}}" onclick="Namecard.favoriteUserChange('{{shopMemberId}}', this)"></span>
{{#isFavorite}}
<span class="star active shopmember_{{shopMemberId}}"
onclick="Namecard.favoriteUserChange({{shopMemberId}}, this)"></span>
<span>お気に入り解除</span>
</div>
</button>
{{/isFavorite}}
{{^isFavorite}}
<button type="button" class="border-0" onclick="Namecard.insertFavoriteUser({{shopMemberId}})"
id="favoriteButton">
<div class="d-flex flex-column">
<span class="star disable shopmember_{{shopMemberId}}" onclick="Namecard.favoriteUserChange('{{shopMemberId}}', this)"></span>
<span class="star disable shopmember_{{shopMemberId}}"
onclick="Namecard.favoriteUserChange({{shopMemberId}}, this)"></span>
<span>お気に入り登録</span>
{{/isFavorite}}
</div>
</button>
{{/isFavorite}}
<button type="button" class="border-0" onclick="Namecard.startVoice('{{shopMemberId}}','{{name}}');">
<div class="d-flex flex-column">
<div class="img_wrap">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment