Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
chat_webview
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
abookCommunication
chat_webview
Commits
91c488ee
Commit
91c488ee
authored
Jul 08, 2021
by
Kim Peace
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Moved native bridge delegate for calling native method
parent
42fe068a
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
33 changed files
with
390 additions
and
329 deletions
+390
-329
public_new/archive.html
+2
-2
public_new/archive_detail.html
+3
-3
public_new/chat.html
+3
-7
public_new/chat_add_user.html
+2
-2
public_new/chat_add_user_confirm.html
+2
-2
public_new/chat_change_room_name.html
+2
-2
public_new/chat_make_room.html
+2
-2
public_new/chat_make_room_confirm.html
+2
-2
public_new/chat_room.html
+3
-6
public_new/collaboration.html
+8
-23
public_new/collaboration_documents.html
+6
-17
public_new/collaboration_picture.html
+3
-9
public_new/collaboration_video.html
+3
-9
public_new/collaboration_voice.html
+3
-8
public_new/collaboration_whiteboard.html
+3
-8
public_new/contact.html
+3
-7
public_new/js/chat-db.js
+1
-15
public_new/js/chat-error.js
+1
-5
public_new/js/chat-room.js
+3
-33
public_new/js/chat-ui-clickEvents.js
+5
-15
public_new/js/chat-ui-collaboration.js
+13
-25
public_new/js/chat-ui.js
+31
-48
public_new/js/chat.js
+3
-14
public_new/js/collaboration.js
+2
-7
public_new/js/common/common.js
+1
-5
public_new/js/common/native-bridge-datasource.js
+36
-0
public_new/js/common/native-bridge-delegate.js
+238
-41
public_new/js/share.js
+0
-0
public_new/js/sockets/chat-websocket-refresh-group-list.js
+1
-1
public_new/js/sockets/chat-websocket.js
+2
-8
public_new/modal_chat_menu.html
+1
-1
public_new/template/template_open_collaboration_message.html
+1
-1
public_new/template/template_room_list.html
+1
-1
No files found.
public_new/archive.html
View file @
91c488ee
...
...
@@ -155,8 +155,8 @@
$
(
"#chatMenuModal"
).
load
(
"./modal_chat_menu.html"
);
$
(
"#loadingArea"
).
load
(
"./loading.html"
);
NativeBridge
.
getLoginParameter
();
NativeBridge
.
getGlobalParameter
();
NativeBridge
Delegate
.
getLoginParameter
();
NativeBridge
Delegate
.
getGlobalParameter
();
function
getGlobalParam
(
chatServerUrl
,
cmsServerUrl
,
platform
,
isMobile
,
isOnline
)
{
CHAT_SERVER_URL
=
chatServerUrl
;
...
...
public_new/archive_detail.html
View file @
91c488ee
...
...
@@ -80,7 +80,7 @@
<script
src=
"./js/languages/language_en.js"
charset=
"UTF-8"
></script>
<!-- Common -->
<script
src=
"./js/common/constant.js"
></script>
<script
src=
"./js/common/
NativeBridg
e.js"
></script>
<script
src=
"./js/common/
native-bridge-delegat
e.js"
></script>
<script
src=
"./js/common/common.js"
></script>
<script
src=
"./js/chat-util.js"
></script>
<!-- Model -->
...
...
@@ -203,8 +203,8 @@
let
IS_MOBILE
=
true
;
let
IS_ONLINE
=
false
;
NativeBridge
.
getLoginParameter
();
NativeBridge
.
getGlobalParameter
();
NativeBridge
Delegate
.
getLoginParameter
();
NativeBridge
Delegate
.
getGlobalParameter
();
function
getGlobalParam
(
chatServerUrl
,
cmsServerUrl
,
platform
,
isMobile
,
isOnline
)
{
CHAT_SERVER_URL
=
chatServerUrl
;
...
...
public_new/chat.html
View file @
91c488ee
...
...
@@ -135,14 +135,10 @@
let
IS_ONLINE
=
false
;
$
(
"#loadingArea"
).
load
(
"./loading.html"
);
NativeBridge
.
getLoginParameter
();
NativeBridge
.
getGlobalParameter
();
NativeBridgeDelegate
.
getLoginParameter
();
NativeBridgeDelegate
.
getGlobalParameter
();
NativeBridgeDelegate
.
saveSelectedUserList
(
""
);
if
(
typeof
(
android
)
!=
"undefined"
)
{
android
.
saveSelectedUserList
(
""
);
}
else
{
webkit
.
messageHandlers
.
saveSelectedUserList
.
postMessage
(
""
);
}
function
getGlobalParam
(
chatServerUrl
,
cmsServerUrl
,
platform
,
isMobile
,
isOnline
)
{
CHAT_SERVER_URL
=
chatServerUrl
;
CMS_SERVER_URL
=
cmsServerUrl
;
...
...
public_new/chat_add_user.html
View file @
91c488ee
...
...
@@ -165,8 +165,8 @@
let
IS_MOBILE
=
true
;
let
IS_ONLINE
=
false
;
NativeBridge
.
getLoginParameter
();
NativeBridge
.
getGlobalParameter
();
NativeBridge
Delegate
.
getLoginParameter
();
NativeBridge
Delegate
.
getGlobalParameter
();
function
getGlobalParam
(
chatServerUrl
,
cmsServerUrl
,
platform
,
isMobile
,
isOnline
)
{
CHAT_SERVER_URL
=
chatServerUrl
;
...
...
public_new/chat_add_user_confirm.html
View file @
91c488ee
...
...
@@ -93,8 +93,8 @@
let
IS_MOBILE
=
true
;
let
IS_ONLINE
=
false
;
NativeBridge
.
getLoginParameter
();
NativeBridge
.
getGlobalParameter
();
NativeBridge
Delegate
.
getLoginParameter
();
NativeBridge
Delegate
.
getGlobalParameter
();
function
getGlobalParam
(
chatServerUrl
,
cmsServerUrl
,
platform
,
isMobile
,
isOnline
)
{
CHAT_SERVER_URL
=
chatServerUrl
;
...
...
public_new/chat_change_room_name.html
View file @
91c488ee
...
...
@@ -93,8 +93,8 @@
let
IS_ONLINE
=
false
;
let
roomId
=
0
;
NativeBridge
.
getLoginParameter
();
NativeBridge
.
getGlobalParameter
();
NativeBridge
Delegate
.
getLoginParameter
();
NativeBridge
Delegate
.
getGlobalParameter
();
function
getGlobalParam
(
chatServerUrl
,
cmsServerUrl
,
platform
,
isMobile
,
isOnline
)
{
CHAT_SERVER_URL
=
chatServerUrl
;
...
...
public_new/chat_make_room.html
View file @
91c488ee
...
...
@@ -166,8 +166,8 @@
let
IS_MOBILE
=
true
;
let
IS_ONLINE
=
false
;
NativeBridge
.
getLoginParameter
();
NativeBridge
.
getGlobalParameter
();
NativeBridge
Delegate
.
getLoginParameter
();
NativeBridge
Delegate
.
getGlobalParameter
();
function
getGlobalParam
(
chatServerUrl
,
cmsServerUrl
,
platform
,
isMobile
,
isOnline
)
{
...
...
public_new/chat_make_room_confirm.html
View file @
91c488ee
...
...
@@ -101,8 +101,8 @@
let
IS_MOBILE
=
true
;
let
IS_ONLINE
=
false
;
NativeBridge
.
getLoginParameter
();
NativeBridge
.
getGlobalParameter
();
NativeBridge
Delegate
.
getLoginParameter
();
NativeBridge
Delegate
.
getGlobalParameter
();
function
getGlobalParam
(
chatServerUrl
,
cmsServerUrl
,
platform
,
isMobile
,
isOnline
)
{
CHAT_SERVER_URL
=
chatServerUrl
;
...
...
public_new/chat_room.html
View file @
91c488ee
...
...
@@ -198,15 +198,12 @@
$
(
"#chatMenuModal"
).
load
(
"./modal_chat_menu.html"
);
$
(
"#loadingArea"
).
load
(
"./loading.html"
);
NativeBridge
.
getLogin
Parameter
();
NativeBridge
.
getGlobalParameter
(
);
NativeBridgeDelegate
.
getLoginParameter
();
NativeBridge
Delegate
.
getGlobal
Parameter
();
NativeBridge
Delegate
.
saveSelectedUserList
(
""
);
if
(
typeof
(
android
)
!=
"undefined"
)
{
android
.
saveSelectedUserList
(
""
);
androidVersion
=
android
.
getAndroidVersion
();
}
else
{
webkit
.
messageHandlers
.
saveSelectedUserList
.
postMessage
(
""
);
}
function
getGlobalParam
(
chatServerUrl
,
cmsServerUrl
,
platform
,
isMobile
,
isOnline
)
{
...
...
public_new/collaboration.html
View file @
91c488ee
...
...
@@ -69,7 +69,7 @@
<div
class=
"start_pip_area d-flex flex-column justify-content-center align-items-center h-100 collaboration_contents document_contents none"
>
<div
class=
"start_pip_img_wrap"
>
<a
href=
"javascript:
startPip
Mode();"
>
<a
href=
"javascript:
NativeBridgeDelegate.startPIP
Mode();"
>
<img
src=
"icon/icon_start_pip.png"
alt=
"文書共有"
>
</a>
</div>
...
...
@@ -113,7 +113,7 @@
<!-- フッター -->
<div
id=
"footer_collabo"
></div>
<div
id=
"loadingArea"
></div>
<div
class=
"pip_indicator none"
onclick=
"
finishPip
Mode();"
>
<div
class=
"pip_indicator none"
onclick=
"
NativeBridgeDelegate.finishPIP
Mode();"
>
<div
style=
"vertical-align: middle;display: table-cell;"
>
<img
src=
"icon/icon_end_pip.png"
alt=
"文書共有"
style=
"width: 30px;height: 30px;"
>
<span
style=
"font-size: 20px;vertical-align: middle;"
>
戻る
</span>
...
...
@@ -176,36 +176,21 @@
let
IS_ONLINE
=
false
;
let
collaborationJoinFlg
=
0
;
let
isInvited
=
0
;
let
roomType
;
let
joinCollaborationType
=
0
;
let
joinMeetingId
=
0
;
let
androidVersion
=
0
;
NativeBridge
.
getLoginParameter
();
NativeBridge
.
getGlobalParameter
();
if
(
typeof
(
android
)
!=
"undefined"
)
{
roomType
=
android
.
getRoomType
();
}
else
{
roomType
=
CHAT_DB
.
getRoomType
();
}
NativeBridgeDelegate
.
getLoginParameter
();
NativeBridgeDelegate
.
getGlobalParameter
();
const
roomType
=
NativeBridgeDataSource
.
getRoomType
();
if
(
roomType
==
ChatRoomType
.
DM
)
{
$
(
'.add_user_btn'
).
removeClass
(
'none'
);
}
function
startPipMode
()
{
if
(
typeof
(
android
)
!=
"undefined"
)
{
android
.
startPipMode
();
}
else
{
webkit
.
messageHandlers
.
startPipMode
.
postMessage
({});
}
}
function
finishPipMode
()
{
if
(
CHAT_UTIL
.
isIOS
())
{
webkit
.
messageHandlers
.
finishPipMode
.
postMessage
({});
}
NativeBridgeDelegate
.
startPIPMode
();
}
String
.
prototype
.
replaceAll
=
function
(
org
,
dest
)
{
...
...
@@ -228,7 +213,7 @@
if
(
joinCollaborationType
==
COLLABORATION_TYPE
.
DOCUMENT
&&
androidVersion
<
ANDROID_SDK_VERSION
.
O
)
{
alert
(
getLocalizedString
(
'not_support_version'
));
if
(
typeof
android
!=
"undefined"
)
{
NativeBridge
.
openCommunicationHome
();
NativeBridge
Delegate
.
openCommunicationHome
();
}
}
}
...
...
public_new/collaboration_documents.html
View file @
91c488ee
...
...
@@ -29,7 +29,7 @@
<div
class=
"text-right d-flex align-items-center"
>
<button
type=
"button"
name=
"button"
class=
"btn add_user_btn"
></button>
<button
type=
"button"
name=
"button"
class=
"btn menu_btn"
></button>
<button
type=
"button"
name=
"button"
class=
"btn start_pip_btn"
onclick=
"
startPip
Mode();"
></button>
<button
type=
"button"
name=
"button"
class=
"btn start_pip_btn"
onclick=
"
NativeBridgeDelegate.startPIP
Mode();"
></button>
</div>
</div>
</div>
...
...
@@ -64,9 +64,8 @@
<!-- フッター -->
<div
id=
"footer_collabo"
></div>
<div
id=
"loadingArea"
></div>
<div
class=
"pip_indicator none"
onclick=
"finishPipMode();"
>
<div
style=
"vertical-align: middle;display: table-cell;"
>
協業中
</div>
<div
class=
"pip_indicator none"
onclick=
"NativeBridgeDelegate.finishPIPMode();"
>
<div
style=
"vertical-align: middle;display: table-cell;"
>
協業中
</div>
</div>
<!-- Library -->
...
...
@@ -119,21 +118,11 @@
let
IS_ONLINE
=
false
;
let
collaborationJoinFlg
=
0
;
NativeBridge
.
getLoginParameter
();
NativeBridge
.
getGlobalParameter
();
function
startPipMode
()
{
if
(
typeof
(
android
)
!=
"undefined"
)
{
android
.
startPipMode
();
}
else
if
(
CHAT_UTIL
.
isIOS
())
{
webkit
.
messageHandlers
.
startPipMode
.
postMessage
({});
}
}
NativeBridgeDelegate
.
getLoginParameter
();
NativeBridgeDelegate
.
getGlobalParameter
();
function
finishPipMode
()
{
if
(
CHAT_UTIL
.
isIOS
())
{
webkit
.
messageHandlers
.
finishPipMode
.
postMessage
({});
}
NativeBridgeDelegate
.
finishPIPMode
();
}
async
function
getGlobalParam
(
chatServerUrl
,
cmsServerUrl
,
platform
,
isMobile
,
isOnline
)
{
...
...
public_new/collaboration_picture.html
View file @
91c488ee
...
...
@@ -179,17 +179,11 @@
let
IS_MOBILE
=
true
;
let
IS_ONLINE
=
false
;
let
collaborationJoinFlg
=
0
;
let
roomType
;
NativeBridge
.
getLoginParameter
();
NativeBridge
.
getGlobalParameter
();
if
(
typeof
(
android
)
!=
"undefined"
)
{
roomType
=
android
.
getRoomType
();
}
else
{
roomType
=
CHAT_DB
.
getRoomType
();
}
NativeBridgeDelegate
.
getLoginParameter
();
NativeBridgeDelegate
.
getGlobalParameter
();
const
roomType
=
NativeBridgeDataSource
.
getRoomType
();
if
(
roomType
==
ChatRoomType
.
DM
)
{
$
(
'.add_user_btn'
).
removeClass
(
'none'
);
}
...
...
public_new/collaboration_video.html
View file @
91c488ee
...
...
@@ -170,17 +170,11 @@
let
IS_MOBILE
=
true
;
let
IS_ONLINE
=
false
;
let
collaborationJoinFlg
=
0
;
let
roomType
;
NativeBridge
.
getLoginParameter
();
NativeBridge
.
getGlobalParameter
();
if
(
typeof
(
android
)
!=
"undefined"
)
{
roomType
=
android
.
getRoomType
();
}
else
{
roomType
=
CHAT_DB
.
getRoomType
();
}
NativeBridgeDelegate
.
getLoginParameter
();
NativeBridgeDelegate
.
getGlobalParameter
();
const
roomType
=
NativeBridgeDataSource
.
getRoomType
();
if
(
roomType
==
ChatRoomType
.
DM
)
{
$
(
'.add_user_btn'
).
removeClass
(
'none'
);
}
...
...
public_new/collaboration_voice.html
View file @
91c488ee
...
...
@@ -113,17 +113,12 @@
let
IS_MOBILE
=
true
;
let
IS_ONLINE
=
false
;
let
collaborationJoinFlg
=
0
;
let
roomType
;
NativeBridge
.
getLoginParameter
();
NativeBridge
.
getGlobalParameter
();
if
(
typeof
(
android
)
!=
"undefined"
)
{
roomType
=
android
.
getRoomType
();
}
else
{
roomType
=
CHAT_DB
.
getRoomType
();
}
NativeBridgeDelegate
.
getLoginParameter
();
NativeBridgeDelegate
.
getGlobalParameter
();
const
roomType
=
NativeBridgeDataSource
.
getRoomType
();
if
(
roomType
==
ChatRoomType
.
DM
)
{
$
(
'.add_user_btn'
).
removeClass
(
'none'
);
}
...
...
public_new/collaboration_whiteboard.html
View file @
91c488ee
...
...
@@ -171,17 +171,12 @@
let
IS_MOBILE
=
true
;
let
IS_ONLINE
=
false
;
let
collaborationJoinFlg
=
0
;
let
roomType
;
NativeBridge
.
getLoginParameter
();
NativeBridge
.
getGlobalParameter
();
if
(
typeof
(
android
)
!=
"undefined"
)
{
roomType
=
android
.
getRoomType
();
}
else
{
roomType
=
CHAT_DB
.
getRoomType
();
}
NativeBridgeDelegate
.
getLoginParameter
();
NativeBridgeDelegate
.
getGlobalParameter
();
const
roomType
=
NativeBridgeDataSource
.
getRoomType
();
if
(
roomType
==
ChatRoomType
.
DM
)
{
$
(
'.add_user_btn'
).
removeClass
(
'none'
);
}
...
...
public_new/contact.html
View file @
91c488ee
...
...
@@ -215,8 +215,8 @@
let
IS_ONLINE
=
false
;
$
(
"#loadingArea"
).
load
(
"./loading.html"
);
NativeBridge
.
getLoginParameter
();
NativeBridge
.
getGlobalParameter
();
NativeBridge
Delegate
.
getLoginParameter
();
NativeBridge
Delegate
.
getGlobalParameter
();
function
getGlobalParam
(
chatServerUrl
,
cmsServerUrl
,
platform
,
isMobile
,
isOnline
)
{
CHAT_SERVER_URL
=
chatServerUrl
;
...
...
@@ -233,11 +233,7 @@
}
if
(
groupId
!=
""
&&
groupId
!=
undefined
)
{
CHAT_UI
.
refreshAllGroupSearch
(
groupId
);
if
(
typeof
(
android
)
!=
"undefined"
)
{
android
.
setToMoveGroupId
(
""
);
}
else
{
webkit
.
messageHandlers
.
setToMoveGroupId
.
postMessage
(
""
);
}
NativeBridgeDelegate
.
setToMoveGroupId
(
""
);
}
else
{
CHAT_UI
.
refreshContactScreen
();
}
...
...
public_new/js/chat-db.js
View file @
91c488ee
...
...
@@ -228,14 +228,6 @@ CHAT_DB.getArchiveList = function () {
}
};
CHAT_DB
.
updateArchiveList
=
function
()
{
if
(
CHAT_UTIL
.
isIOS
())
{
webkit
.
messageHandlers
.
updateArchiveList
.
postMessage
({});
}
else
if
(
CHAT_UTIL
.
isAndroid
())
{
android
.
updateArchiveList
();
}
};
// アーカイブ一覧検索
CHAT_DB
.
getArchiveByName
=
function
(
archiveName
)
{
if
(
CHAT_UTIL
.
isIOS
())
{
...
...
@@ -260,13 +252,7 @@ CHAT_DB.getArchiveDetail = function (archiveId) {
}
};
CHAT_DB
.
updateArchiveDetail
=
function
(
archiveId
)
{
if
(
CHAT_UTIL
.
isIOS
())
{
webkit
.
messageHandlers
.
updateArchiveDetail
.
postMessage
(
archiveId
);
}
else
if
(
CHAT_UTIL
.
isAndroid
())
{
android
.
updateArchiveDetail
(
archiveId
);
}
};
CHAT_DB
.
searchMessages
=
function
(
keyword
,
userList
)
{
if
(
CHAT_UTIL
.
isIOS
())
{
...
...
public_new/js/chat-error.js
View file @
91c488ee
jQuery
(
"#homeButton"
).
on
(
"click"
,
function
()
{
if
(
CHAT_UTIL
.
isIOS
())
{
webkit
.
messageHandlers
.
goHome
.
postMessage
({});
}
else
if
(
CHAT_UTIL
.
isAndroid
())
{
android
.
goHome
();
}
NativeBridgeDelegate
.
goHome
();
});
jQuery
(
"#reloadButton"
).
on
(
"click"
,
function
()
{
...
...
public_new/js/chat-room.js
View file @
91c488ee
...
...
@@ -13,16 +13,8 @@ window.onscroll = function () {
);
$
(
"#messages"
).
prepend
(
loader
);
const
messageId
=
$
(
$
(
".chat_message"
).
get
(
0
)).
data
(
"messageid"
);
let
messages
;
if
(
typeof
android
!=
"undefined"
)
{
if
(
IS_ONLINE
==
"true"
)
{
android
.
updatePreMessage
(
messageId
);
}
}
else
{
// 追加メッセージUpdate、get
webkit
.
messageHandlers
.
updatePreMessage
.
postMessage
({
messageId
:
messageId
});
}
messages
=
CHAT_DB
.
getMessagesWithMessageId
(
messageId
);
NativeBridgeDelegate
.
updatePreMessage
(
messageId
);
let
messages
=
CHAT_DB
.
getMessagesWithMessageId
(
messageId
);
CHAT_UI
.
prependMessage
(
messages
);
loader
.
remove
();
var
afterHeight
=
$
(
".room_container"
).
height
();
...
...
@@ -38,27 +30,5 @@ $("#roomNameChangeBtn").click(function () {
alert
(
getLocalizedString
(
"error_empty_room_name"
));
return
;
}
if
(
CHAT_UTIL
.
isIOS
())
{
webkit
.
messageHandlers
.
changeRoomName
.
postMessage
(
changeRoomName
);
}
else
if
(
CHAT_UTIL
.
isAndroid
())
{
android
.
changeRoomName
(
changeRoomName
);
}
NativeBridgeDelegate
.
changeRoomName
(
changeRoomName
);
});
/*
$('#messages').scroll(function() {
console.log('messagescroll');
if ($(this).scrollTop() === 0) {
if (!$('#chatLoader').is(':visible')) {
// 現在、メッセージの個数以前をメッセージを読み込む
// ローディングアイコンを追加する
let loader = $('<div id="chatLoader" class="text-center"><div class="spinner-grow spinner-grow-sm" role="status" /></div>')
$('#messages').prepend(loader)
loader.remove();
// socket.emit('getMessages', $(this).children().length, function() {
// // ローディングアイコンを削除する
// loader.remove();
// });
}
}
});*/
public_new/js/chat-ui-clickEvents.js
View file @
91c488ee
...
...
@@ -95,7 +95,7 @@ $("#room-search").on("input", function (event) {
socket
.
emit
(
"roomSearch"
,
encodeURIComponent
(
$
(
"#room-search"
).
val
()));
}
else
{
if
(
IS_ONLINE
==
"true"
)
{
NativeBridge
.
updateRoomList
();
NativeBridge
Delegate
.
updateRoomList
();
CHAT_UI
.
refreshRoomList
(
ChatRoomType
.
DM
);
CHAT_UI
.
dismissLoadingIndicator
();
}
...
...
@@ -338,23 +338,13 @@ $("#tabAllGroupOnAddUserInCollaboration").on("click", function (e) {
});
$
(
"#makeRoomConfirmBtn"
).
on
(
"click"
,
function
(
e
)
{
if
(
typeof
android
!=
"undefined"
)
{
android
.
saveSelectedUserList
(
CHAT
.
globalSelectedUserList
.
join
(
","
));
}
else
{
webkit
.
messageHandlers
.
saveSelectedUserList
.
postMessage
(
CHAT
.
globalSelectedUserList
.
join
(
","
)
);
}
const
selectedUserList
=
CHAT
.
globalSelectedUserList
.
join
(
","
);
NativeBridgeDelegate
.
saveSelectedUserList
(
selectedUserList
);
$
(
"#makeRoomForm"
).
submit
();
});
$
(
"#addUserConfirmBtn"
).
on
(
"click"
,
function
(
e
)
{
if
(
typeof
android
!=
"undefined"
)
{
android
.
saveSelectedUserList
(
CHAT
.
globalSelectedUserList
.
join
(
","
));
}
else
{
webkit
.
messageHandlers
.
saveSelectedUserList
.
postMessage
(
CHAT
.
globalSelectedUserList
.
join
(
","
)
);
}
const
selectedUserList
=
CHAT
.
globalSelectedUserList
.
join
(
","
);
NativeBridgeDelegate
.
saveSelectedUserList
(
selectedUserList
);
$
(
"#addUserForm"
).
submit
();
});
public_new/js/chat-ui-collaboration.js
View file @
91c488ee
...
...
@@ -21,18 +21,9 @@ CHAT_UI.startCollaboration = function (collaborationType) {
},
0
);
if
(
CHAT_UTIL
.
isIOS
())
{
webkit
.
messageHandlers
.
finishAllCollaboration
.
postMessage
({});
}
else
if
(
CHAT_UTIL
.
isAndroid
())
{
android
.
finishAllCollaboration
();
}
}
if
(
CHAT_UTIL
.
isIOS
())
{
webkit
.
messageHandlers
.
startCollaboration
.
postMessage
(
collaborationType
);
}
else
if
(
CHAT_UTIL
.
isAndroid
())
{
android
.
startCollaboration
(
collaborationType
);
NativeBridgeDelegate
.
finishAllCollaboration
();
}
NativeBridgeDelegate
.
startCollaboration
(
collaborationType
);
};
CHAT_UI
.
refreshJoinedCollaboration
=
function
(
loginIdList
)
{
...
...
@@ -104,7 +95,7 @@ CHAT_UI.refreshMyGroupForAddUserInCollaboration = function () {
TemplateURL
.
ADD_USER_GROUP_USER_LIST_IN_COLLABORATION
);
NativeBridge
.
updateContactInfo
();
NativeBridge
Delegate
.
updateContactInfo
();
//お気に入りグループ取得。
var
favoriteGroupList
=
CHAT_DB
.
getFavoriteGroups
();
...
...
@@ -163,7 +154,7 @@ CHAT_UI.refreshAllGroupForAddUserInCollaboration = function (paramGroupId) {
$
(
"#tabAllGroupOnAddUserInCollaboration"
).
prop
(
"checked"
,
true
);
NativeBridge
.
updateGroupInfo
(
groupId
);
NativeBridge
Delegate
.
updateGroupInfo
(
groupId
);
//画面エリアを初期化。
$
(
"#parentGroupBtnForAddUserInCollaboration"
).
off
();
...
...
@@ -350,19 +341,16 @@ CHAT_UI.confirmInviteUserListInCollaboration = function () {
selectedUserList
.
forEach
(
function
(
user
)
{
userIdList
.
push
(
user
.
shopMemberId
);
});
if
(
typeof
android
!=
"undefined"
)
{
android
.
inviteCollaboration
(
userIdList
.
join
(
","
),
CHAT_UTIL
.
getCollaborationType
(
globalUserInfo
.
coWorkType
)
);
}
else
{
webkit
.
messageHandlers
.
inviteCollaboration
.
postMessage
({
userIdList
:
userIdList
.
join
(
","
),
collaborationType
:
CHAT_UTIL
.
getCollaborationType
(
const
commaJoinedUserIDList
=
userIdList
.
join
(
","
);
const
collaborationType
=
CHAT_UTIL
.
getCollaborationType
(
globalUserInfo
.
coWorkType
),
});
}
);
NativeBridgeDelegate
.
inviteCollaboration
(
commaJoinedUserIDList
,
collaborationType
);
CHAT_UI
.
dismissLoadingIndicator
();
$
(
"#modalAddUserConfirm"
).
modal
(
"hide"
);
});
...
...
public_new/js/chat-ui.js
View file @
91c488ee
...
...
@@ -139,7 +139,7 @@ $('a[data-toggle="pill"]').on("show.bs.tab", function (e) {
CHAT
.
saveRoomInfo
();
if
(
IS_ONLINE
==
"true"
)
{
socket
.
emit
(
"leaveRoom"
,
function
()
{
NativeBridge
.
updateRoomList
();
NativeBridge
Delegate
.
updateRoomList
();
});
}
CHAT_UI
.
refreshRoomList
(
ChatRoomType
.
DM
);
...
...
@@ -438,7 +438,7 @@ CHAT_UI.showConfirmView = function (isInvite) {
// ルーム名のURIencodingを行う
//const encodedRoomName = encodeURIComponent(newRoomName);
NativeBridge
.
createChatRoom
(
NativeBridge
Delegate
.
createChatRoom
(
ChatRoomType
.
DM
,
userIdList
.
join
(
","
),
newRoomName
,
...
...
@@ -514,7 +514,7 @@ CHAT_UI.showConfirmView = function (isInvite) {
// ルーム名のtrimmingした後、URIencodingを行う
const encodedRoomName = encodeURIComponent(trimmedRoomName);
NativeBridge.createChatRoom(
NativeBridge
Delegate
.createChatRoom(
ChatRoomType.DM,
userIdList.join(","),
encodedRoomName,
...
...
@@ -808,7 +808,7 @@ CHAT_UI.refreshContactScreen = function () {
var myNamecardTemplate = getTemplate(TemplateURL.MY_NAME_CARD);
var groupUserTemplate = getTemplate(TemplateURL.GROUP_USER_LIST);
NativeBridge.updateContactInfo();
NativeBridge
Delegate
.updateContactInfo();
var myInfo = CHAT_DB.getMyInfo();
myInfo.profileImagePath = CHAT.getProfileImgUrl(myInfo.profileUrl);
...
...
@@ -882,11 +882,7 @@ CHAT_UI.refreshRoomList = function (roomType) {
}
if (beforeRoomType != null) {
roomType = beforeRoomType;
if (typeof android != "undefined") {
android.clearBeforeRoomType();
} else {
webkit.messageHandlers.clearBeforeRoomType.postMessage({});
}
NativeBridgeDelegate.clearBeforeRoomType();
}
CHAT_UI.showLoadingIndicator();
if (roomType == ChatRoomType.DM) {
...
...
@@ -896,7 +892,7 @@ CHAT_UI.refreshRoomList = function (roomType) {
}
if (IS_ONLINE == "true") {
NativeBridge.updateRoomList();
NativeBridge
Delegate
.updateRoomList();
}
var rooms = CHAT_DB.getRoomList(roomType, null);
CHAT.globalIsInvite = false;
...
...
@@ -1003,23 +999,13 @@ CHAT_UI.refreshRoomList = function (roomType) {
CHAT_UI.loadMessages = function (roomId, joinRoomName) {
roomName = joinRoomName;
var now = new Date();
if (IS_ONLINE == "true") {
CHAT_UI.refreshForOnline();
if (typeof android != "undefined") {
android.updateMessages(roomId);
} else {
webkit.messageHandlers.updateMessages.postMessage(roomId);
}
NativeBridgeDelegate.updateMessages(roomId);
} else {
CHAT_UI.refreshForOffline();
}
var roomType;
if (typeof android != "undefined") {
roomType = android.getRoomType();
} else {
roomType = CHAT_DB.getRoomType();
}
const roomType = NativeBridgeDataSource.getRoomType();
if (roomType == ChatRoomType.DM) {
$("#roomMenu").removeClass("none");
}
...
...
@@ -1278,7 +1264,7 @@ CHAT_UI.insertFavoriteUser = function (shopMemberId) {
CHAT_UI.removeFavoriteGroup = function (groupId) {
CHAT_UI.showLoadingIndicator();
var result = NativeBridge.removeFavoriteGroup(groupId);
var result = NativeBridge
DataSource
.removeFavoriteGroup(groupId);
if (result) {
$(".group_" + groupId).removeClass("active");
$(".group_" + groupId).addClass("disable");
...
...
@@ -1291,7 +1277,7 @@ CHAT_UI.removeFavoriteGroup = function (groupId) {
CHAT_UI.insertFavoriteGroup = function (groupId) {
CHAT_UI.showLoadingIndicator();
const result = NativeBridge.addFavoriteGroup(groupID);
const result = NativeBridge
DataSource
.addFavoriteGroup(groupID);
if (result) {
$(".group_" + groupId).removeClass("disable");
$(".group_" + groupId).addClass("active");
...
...
@@ -1307,11 +1293,7 @@ CHAT_UI.refreshAllGroupSearch = function (paramGroupId) {
var groupId = paramGroupId;
if (window.location.pathname.includes("chat_room")) {
if (groupId == "") return;
if (typeof android != "undefined") {
android.setToMoveGroupId(groupId);
} else {
webkit.messageHandlers.setToMoveGroupId.postMessage(groupId);
}
NativeBridgeDelegate.setToMoveGroupId(groupId);
window.location.href = "contact.html";
}
...
...
@@ -1330,7 +1312,7 @@ CHAT_UI.refreshAllGroupSearch = function (paramGroupId) {
$("#tabAllGroup").prop("checked", true);
//オンライン状態であればサーバから情報更新。
NativeBridge.updateGroupInfo(groupId);
NativeBridge
Delegate
.updateGroupInfo(groupId);
//画面エリアを初期化。
$("#rootGroupBtn").off();
...
...
@@ -1408,7 +1390,7 @@ CHAT_UI.startChat = function (userShopMemberId, userName) {
// 参加ユーザ名でルーム名を生成
let newRoomName = CHAT.globalLoginParameter.loginId + "," + userName;
NativeBridge.createChatRoom(
NativeBridge
Delegate
.createChatRoom(
ChatRoomType.DM,
userIdList.join(","),
newRoomName,
...
...
@@ -1424,7 +1406,7 @@ CHAT_UI.startVoice = function (userShopMemberId, userName) {
// 参加ユーザ名でルーム名を生成
let newRoomName = CHAT.globalLoginParameter.loginId + "," + userName;
NativeBridge.createChatRoom(
NativeBridge
Delegate
.createChatRoom(
ChatRoomType.DM,
userIdList.join(","),
newRoomName,
...
...
@@ -1477,7 +1459,7 @@ CHAT_UI.refreshArchiveDetailScreen = function (archiveId) {
// アーカイブ詳細の様式を読み込む
const archiveDetailTemplate = $("#archive-detail-template").html();
if (IS_ONLINE == "true") {
CHAT_DB
.updateArchiveDetail(archiveId);
NativeBridgeDelegate
.updateArchiveDetail(archiveId);
}
// アーカイブ詳細取得
const archive = CHAT_DB.getArchiveDetail(archiveId);
...
...
@@ -1595,7 +1577,7 @@ CHAT_UI.refreshArchiveDetailScreen = function (archiveId) {
// チャットルームへのリンク付け
document
.
getElementById
(
"joinChatRoom"
).
onclick
=
function
()
{
NativeBridge
.
joinRoom
(
archive
.
roomId
,
archive
.
roomName
);
NativeBridge
Delegate
.
joinRoom
(
archive
.
roomId
,
archive
.
roomName
);
};
// loadingIndicatorを非表示
...
...
@@ -1618,7 +1600,7 @@ CHAT_UI.refreshMyGroupForMakeRoom = function () {
var
groupUserTemplate
=
getTemplate
(
TemplateURL
.
MAKE_ROOM_GROUP_USER_LIST
);
NativeBridge
.
updateContactInfo
();
NativeBridge
Delegate
.
updateContactInfo
();
//お気に入りグループ取得。
var
favoriteGroupList
=
CHAT_DB
.
getFavoriteGroups
();
...
...
@@ -1681,7 +1663,7 @@ CHAT_UI.refreshAllGroupForMakeRoom = function (paramGroupId) {
$
(
"#tabAllGroupOnMakeRoom"
).
prop
(
"checked"
,
true
);
//オンライン状態であればサーバから情報更新。
NativeBridge
.
updateGroupInfo
(
groupId
);
NativeBridge
Delegate
.
updateGroupInfo
(
groupId
);
//画面エリアを初期化。
$
(
"#parentGroupBtnForMakeRoom"
).
off
();
...
...
@@ -1805,7 +1787,7 @@ CHAT_UI.refreshArchiveScreen = function () {
// アーカイブ一覧取得
if
(
IS_ONLINE
==
"true"
)
{
CHAT_DB
.
updateArchiveList
();
NativeBridgeDelegate
.
updateArchiveList
();
}
// ローカルDBのデータを表示
...
...
@@ -1883,7 +1865,7 @@ CHAT_UI.showMakeRoomConfirmView = function () {
// 参加ユーザ名でルーム名を生成
let
newRoomName
=
CHAT
.
globalLoginParameter
.
loginId
+
","
+
userNameList
.
join
(
","
);
NativeBridge
.
createChatRoom
(
NativeBridge
Delegate
.
createChatRoom
(
ChatRoomType
.
DM
,
userIdList
.
join
(
","
),
newRoomName
,
...
...
@@ -1958,7 +1940,7 @@ CHAT_UI.showMakeRoomConfirmView = function () {
// TODO: check why here using trimmedroomname instead of encodedRoomName
// ルーム名のtrimmingした後、URIencodingを行う
const encodedRoomName = encodeURIComponent(trimmedRoomName);
NativeBridge.createChatRoom(
NativeBridge
Delegate
.createChatRoom(
ChatRoomType.DM,
userIdList.join(","),
trimmedRoomName,
...
...
@@ -1993,7 +1975,7 @@ CHAT_UI.showAddUserConfirmView = function () {
selectedUserList.forEach(function (user) {
userIdList.push(user.shopMemberId);
});
NativeBridge.inviteUsers(userIdList.join(","));
NativeBridge
Delegate
.inviteUsers(userIdList.join(","));
});
};
...
...
@@ -2012,7 +1994,7 @@ CHAT_UI.refreshMyGroupForAddUser = function () {
var userTemplate = getTemplate(TemplateURL.ADD_USER_USER_LIST);
var groupUserTemplate = getTemplate(TemplateURL.ADD_USER_GROUP_USER_LIST);
NativeBridge.updateContactInfo();
NativeBridge
Delegate
.updateContactInfo();
//お気に入りグループ取得。
var favoriteGroupList = CHAT_DB.getFavoriteGroups();
...
...
@@ -2075,7 +2057,7 @@ CHAT_UI.refreshAllGroupForAddUser = function (paramGroupId) {
$("#tabAllGroupOnAddUser").prop("checked", true);
//オンライン状態であればサーバから情報更新。
NativeBridge.updateGroupInfo(groupId);
NativeBridge
Delegate
.updateGroupInfo(groupId);
//画面エリアを初期化。
$("#parentGroupBtnForAddUser").off();
...
...
@@ -2198,16 +2180,16 @@ CHAT_UI.refreshForOffline = function () {
alertString = getLocalizedString("err_weak_network_exit_collaboration");
}
alert(alertString);
if (CHAT_UTIL.isIOS()) {
webkit.messageHandlers.finishCollaboration.postMessage({}
);
}
NativeBridgeDelegate.finishCollaboration(
);
if (collaborationJoinFlg != "2") {
NativeBridge.joinRoom(
NativeBridge
Delegate
.joinRoom(
CHAT.globalLoginParameter.roomId,
CHAT.globalLoginParameter.name
);
} else {
NativeBridge.openCommunicationHome();
NativeBridge
Delegate
.openCommunicationHome();
}
};
...
...
@@ -2217,7 +2199,7 @@ CHAT_UI.offlineHandler = function (e) {
CHAT_UI.displayExistRoom = function (roomId) {
if (confirm("error_already_exist_same_user")) {
NativeBridge.joinRoom(roomId);
NativeBridge
Delegate
.joinRoom(roomId);
}
return;
};
\ No newline at end of file
public_new/js/chat.js
View file @
91c488ee
...
...
@@ -15,21 +15,10 @@ var beforeHeight = window.innerHeight;
var
beforeWidth
=
window
.
innerWidth
;
var
beforeScroll
;
CHAT
.
saveRoomInfo
=
function
(
roomI
d
,
roomName
)
{
CHAT
.
globalLoginParameter
.
roomId
=
roomI
d
;
CHAT
.
saveRoomInfo
=
function
(
roomI
D
,
roomName
)
{
CHAT
.
globalLoginParameter
.
roomId
=
roomI
D
;
CHAT
.
globalLoginParameter
.
roomName
=
roomName
;
if
(
CHAT_UTIL
.
isIOS
())
{
webkit
.
messageHandlers
.
roomInfosaveMessageHandlerId
.
postMessage
({
roomId
:
roomId
,
roomName
:
roomName
,
});
}
else
if
(
CHAT_UTIL
.
isAndroid
())
{
if
(
roomId
==
undefined
&&
roomName
==
undefined
)
{
android
.
saveVisitRoomInfo
(
""
,
""
);
}
else
{
android
.
saveVisitRoomInfo
(
roomId
,
roomName
);
}
}
NativeBridgeDelegate
.
saveVisitRoomInfo
(
roomID
,
roomName
)
};
// #36170 画像パスが存在しない場合はデフォルトの画像を返す
...
...
public_new/js/collaboration.js
View file @
91c488ee
...
...
@@ -60,13 +60,8 @@ document.addEventListener("DOMContentLoaded", function () {
.
off
()
.
on
(
"click"
,
function
()
{
$
(
"#addUserInCollaboration"
).
modal
(
"hide"
);
if
(
typeof
android
!=
"undefined"
)
{
android
.
saveSelectedUserList
(
CHAT
.
globalSelectedUserList
.
join
(
","
));
}
else
{
webkit
.
messageHandlers
.
saveSelectedUserList
.
postMessage
(
CHAT
.
globalSelectedUserList
.
join
(
","
)
);
}
const
selectedUserList
=
CHAT
.
globalSelectedUserList
.
join
(
","
);
NativeBridgeDelegate
.
saveSelectedUserList
(
selectedUserList
);
CHAT_UI
.
confirmInviteUserListInCollaboration
();
});
});
...
...
public_new/js/common/common.js
View file @
91c488ee
...
...
@@ -31,11 +31,7 @@ $(".category").on("click", function () {
});
$
(
".home_btn"
).
on
(
"click"
,
function
()
{
if
(
CHAT_UTIL
.
isAndroid
())
{
android
.
goHome
();
}
else
if
(
CHAT_UTIL
.
isIOS
())
{
webkit
.
messageHandlers
.
goHome
.
postMessage
({});
}
NativeBridgeDelegate
.
goHome
();
});
document
.
addEventListener
(
"DOMContentLoaded"
,
function
()
{
...
...
public_new/js/common/native-bridge-datasource.js
0 → 100644
View file @
91c488ee
var
NativeBridgeDataSource
=
{};
// todo: peacekim:: it should be datasource
NativeBridgeDataSource
.
removeFavoriteGroup
=
function
(
groupID
)
{
if
(
CHAT_UTIL
.
isIOS
())
{
const
result
=
callNativeApp
(
NATIVE_KEY_IOS
.
removeFavoriteGroup
,
{
groupId
:
groupID
,
});
return
result
==
"true"
?
true
:
false
;
}
else
{
return
android
.
removeFavoriteGroup
(
groupID
);
}
};
NativeBridgeDataSource
.
addFavoriteGroup
=
function
(
groupID
)
{
if
(
typeof
android
!=
"undefined"
)
{
return
android
.
addFavoriteGroup
(
groupID
);
}
else
{
const
result
=
callNativeApp
(
NATIVE_KEY_IOS
.
addFavoriteGroup
,
{
groupId
:
groupId
,
});
if
(
result
==
"true"
)
{
return
true
;
}
else
{
return
false
;
}
}
};
NativeBridgeDataSource
.
getRoomType
=
function
()
{
if
(
typeof
android
!=
"undefined"
)
{
return
android
.
getRoomType
();
}
else
{
return
parseInt
(
callNativeApp
(
NATIVE_KEY_IOS
.
getRoomType
,
{}),
10
);
}
};
public_new/js/common/
NativeBridg
e.js
→
public_new/js/common/
native-bridge-delegat
e.js
View file @
91c488ee
This diff is collapsed.
Click to expand it.
public_new/js/share.js
View file @
91c488ee
This diff is collapsed.
Click to expand it.
public_new/js/sockets/chat-websocket-refresh-group-list.js
View file @
91c488ee
...
...
@@ -64,7 +64,7 @@ var setupBackButton = function () {
}
else
{
if
(
IS_ONLINE
==
"true"
)
{
// todo: peacekim:: needs to check it only needs for android or not.
NativeBridge
.
updateRoomList
();
NativeBridge
Delegate
.
updateRoomList
();
CHAT_UI
.
refreshRoomList
(
ChatRoomType
.
DM
);
CHAT_UI
.
dismissLoadingIndicator
();
}
...
...
public_new/js/sockets/chat-websocket.js
View file @
91c488ee
...
...
@@ -51,16 +51,11 @@ var bindOnConnect = function () {
$
(
".overlay"
).
removeClass
(
"active undismissable"
);
// loadingIndicatorを表示
CHAT_UI
.
showLoadingIndicator
();
requestLoginInfo
();
NativeBridgeDelegate
.
getLoginParameter
();
CHAT_UI
.
dismissLoadingIndicator
();
});
};
var
requestLoginInfo
=
function
()
{
// チャットルームに入場する際、sid, loginId, shopName, roomId, roomNameの情報を取得しNodeJsに渡す
NativeBridge
.
getLoginParameter
();
};
var
bindOnDisconnect
=
function
()
{
socket
.
on
(
SOCKET_KEY
.
DISCONNECT
,
function
()
{
//socketが切断されたら黒画面で画面を更新する
...
...
@@ -122,9 +117,8 @@ var bindOnShowServerError = function () {
var
bindOnRetryJoinProcess
=
function
()
{
socket
.
on
(
SOCKET_KEY
.
RETRY_JOIN_PROCESS
,
function
()
{
var
ua
=
window
.
navigator
.
userAgent
.
toLowerCase
();
if
(
CHAT_UTIL
.
isIOS
()
||
CHAT_UTIL
.
isAndroid
())
{
webkit
.
messageHandlers
.
loginInfoRequestMessageHandlerId
.
postMessage
({}
);
NativeBridgeDelegate
.
getLoginParameter
(
);
}
else
{
CHAT_UI
.
htmlElementTextInitialize
(
"ko"
);
// webでのsocket connect
...
...
public_new/modal_chat_menu.html
View file @
91c488ee
...
...
@@ -13,7 +13,7 @@
<li><a
id=
"room_name_change_button"
href=
"chat_change_room_name.html"
><img
src=
"icon/icon_change_room_name.png"
alt=
"ルーム名変更"
>
ルーム名変更
</a>
</li>
<li><a
id=
"add_user_button"
href=
"chat_add_user.html"
><img
src=
"icon/icon_add_user.png"
alt=
"ユーザー招待"
>
ユーザー招待
</a></li>
<li
><a
id=
"display_off_button"
href=
"javascript:return false;"
onclick=
"NativeBridge.roomDisplayOff();"
><img
src=
"icon/icon_display_off_chatroom.png"
alt=
"ユーザー招待"
>
部屋非表示
</a></li>
<li
><a
id=
"display_off_button"
href=
"javascript:return false;"
onclick=
"NativeBridge
Delegate
.roomDisplayOff();"
><img
src=
"icon/icon_display_off_chatroom.png"
alt=
"ユーザー招待"
>
部屋非表示
</a></li>
</ul>
</div>
</div>
...
...
public_new/template/template_open_collaboration_message.html
View file @
91c488ee
...
...
@@ -32,7 +32,7 @@
</div>
</div>
<div
class=
"collabo_btn"
>
<button
class=
"collaboation_join_button"
type=
"button"
name=
"button"
onclick=
"NativeBridge.joinCollaboration({{collaborationType}}, {{meetingId}})"
{{#
isEnded
}}
disabled
{{/
isEnded
}}
>
<button
class=
"collaboation_join_button"
type=
"button"
name=
"button"
onclick=
"NativeBridge
Delegate
.joinCollaboration({{collaborationType}}, {{meetingId}})"
{{#
isEnded
}}
disabled
{{/
isEnded
}}
>
<img
src=
"icon/icon_profile_phone.png"
alt=
"通話"
>
{{#isEnded}}
<span
class=
"collaboration_join_message"
>
終了しました
</span>
...
...
public_new/template/template_room_list.html
View file @
91c488ee
<ul
class=
"m-0"
>
<li
class=
"d-flex align-items-center"
>
<a
href=
"#"
class=
"w-100"
onclick=
"NativeBridge.joinRoom({{roomId}},'{{roomName}}');"
>
<a
href=
"#"
class=
"w-100"
onclick=
"NativeBridge
Delegate
.joinRoom({{roomId}},'{{roomName}}');"
>
<div
class=
"chat_item d-flex flex-row align-items-center"
>
<div
class=
"chat_item_l"
>
<div
class=
"thumbnail{{thumbnailCount}} thumbnail"
>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment