Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
foreign
/
customer-service
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
fe6e470e
authored
Dec 15, 2021
by
Sixong.Zhu
Browse files
Options
_('Browse Files')
Download
Plain Diff
Merge branch 'master' into pre
parents
89e76ac1
3e2c1309
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
45 additions
and
12 deletions
components/message.vue
hybrid-input/index.vue
store/index.ts
xim/index.ts
components/message.vue
View file @
fe6e470e
...
...
@@ -207,7 +207,7 @@
QuestionAnswerMessage
,
ActionMessage
,
PayMessage
,
NotifyMessage
NotifyMessage
,
},
})
export
default
class
Message
extends
Vue
{
...
...
@@ -326,8 +326,13 @@
return
true
;
}
const
senderEid
=
this
.
messageBody
.
eid
;
return
senderEid
!
.
toString
()
===
this
.
chatMyId
!
.
toString
();
const
senderEid
=
+
this
.
messageBody
.
eid
;
const
m1
=
senderEid
===
+
this
.
chatMyId
;
if
(
m1
&&
this
.
chatMembers
)
{
const
m2
=
_
.
find
(
this
.
chatMembers
,
(
i
)
=>
+
i
.
eid
===
senderEid
);
return
m2
&&
+
m2
.
oid
===
+
this
.
messageBody
.
oid
;
}
return
false
;
}
private
get
userName
()
{
...
...
hybrid-input/index.vue
View file @
fe6e470e
...
...
@@ -164,6 +164,7 @@
private
emoji
:
EmojiItem
[]
=
[];
private
percentage
=
0
;
private
reloadTimer
=
0
;
@
Watch
(
"chatId"
)
private
onChatIdChanged
(
v
:
number
,
old
:
number
)
{
...
...
@@ -344,7 +345,10 @@
if
(
this
.
chatId
)
{
chatCache
[
this
.
chatId
]
=
[];
}
setTimeout
(()
=>
this
.
getMyChatList
(),
120
);
if
(
this
.
reloadTimer
)
{
clearTimeout
(
this
.
reloadTimer
);
}
this
.
reloadTimer
=
setTimeout
(()
=>
this
.
getMyChatList
(),
120
);
}
/**
...
...
store/index.ts
View file @
fe6e470e
...
...
@@ -124,6 +124,16 @@ export function getLastMessageId(msgs: Message[] | any) {
return
0
;
}
let
loadingChatList
=
false
;
let
cachedLoadingChatListAction
:
((
value
:
ChatType
[])
=>
void
)[]
=
[];
function
clearAction
(
value
:
ChatType
[])
{
for
(
const
item
of
cachedLoadingChatListAction
)
{
item
(
value
);
}
cachedLoadingChatListAction
=
[];
return
value
;
}
export
default
{
namespaced
:
true
,
state
:
()
=>
({
...
...
@@ -222,10 +232,12 @@ export default {
[
ChatStore
.
MUTATION_SAVE_MYSELF_ID
](
state
)
{
if
(
!
state
[
ChatStore
.
STATE_CHAT_MY_ID
])
{
Chat
.
getToken
().
then
((
token
)
=>
{
if
(
token
)
{
const
eid
=
decodeJwt
<
{
user_id
:
string
;
sub
:
string
}
>
(
token
);
state
[
ChatStore
.
STATE_CHAT_MY_ID
]
=
String
(
eid
.
user_id
);
state
[
ChatStore
.
STATE_CHAT_MY_UID
]
=
eid
.
sub
;
}
});
}
},
...
...
@@ -410,6 +422,14 @@ export default {
async
[
ChatStore
.
ACTION_GET_MY_CHAT_LIST
]({
commit
,
state
})
{
commit
(
ChatStore
.
MUTATION_SAVE_MYSELF_ID
);
if
(
loadingChatList
)
{
return
new
Promise
<
ChatType
[]
>
((
resolve
)
=>
cachedLoadingChatListAction
.
push
(
resolve
)
);
}
loadingChatList
=
true
;
let
cache
=
await
dbController
.
getChatList
();
cache
.
sort
((
x
,
y
)
=>
(
x
.
last_msg_ts
<
y
.
last_msg_ts
?
1
:
-
1
));
...
...
@@ -465,9 +485,9 @@ export default {
resolve
(
buildUnreadMessage
(
cache
));
});
});
});
})
.
finally
(()
=>
(
loadingChatList
=
false
))
;
return
await
execute
().
then
((
d
)
=>
d
);
return
await
execute
().
then
((
d
)
=>
clearAction
(
d
)
);
}
const
execute
=
()
=>
...
...
@@ -488,9 +508,9 @@ export default {
resolve
(
buildUnreadMessage
(
items
));
});
});
});
})
.
finally
(()
=>
(
loadingChatList
=
false
))
;
return
await
execute
().
then
((
d
)
=>
d
);
return
await
execute
().
then
((
d
)
=>
clearAction
(
d
)
);
},
async
[
ChatStore
.
ACTION_FORCE_RELOAD_CHAT_LIST
]({
commit
})
{
return
new
Promise
<
ChatType
[]
>
((
resolve
)
=>
{
...
...
xim/index.ts
View file @
fe6e470e
...
...
@@ -56,8 +56,7 @@ class Chat {
this
.
eventHub
=
option
.
eventHub
||
null
;
option
.
message
&&
(
this
.
messageController
=
option
.
message
);
option
.
avatar
!==
undefined
&&
(
this
.
defaultAvatar
=
option
.
avatar
);
option
.
avatar
!==
undefined
&&
(
this
.
defaultAvatar
=
option
.
avatar
);
await
this
.
setupIndexDb
(
option
.
orgId
());
this
.
token
=
async
()
=>
option
.
sdk
().
global
.
jwtToken
;
...
...
@@ -73,7 +72,9 @@ class Chat {
// this.keywords = ["社保"];
const
path
=
socketMapping
.
get
(
option
.
connection
as
ImEnvironment
)
as
string
||
option
.
connection
as
string
;
const
path
=
(
socketMapping
.
get
(
option
.
connection
as
ImEnvironment
)
as
string
)
||
(
option
.
connection
as
string
);
return
this
.
initChatSdk
((
this
.
ws
=
path
)).
finally
(()
=>
{
this
.
connected
=
true
;
...
...
@@ -86,7 +87,7 @@ class Chat {
private
setupIndexDb
(
orgId
:
number
|
string
)
{
if
(
this
.
_sdk
)
{
const
s
=
this
.
_sdk
();
const
key
=
`
${
s
.
global
.
uid
}
-
${
orgId
||
0
}
`
const
key
=
`
${
s
.
global
.
uid
}
-
${
orgId
||
0
}
`
;
return
dbController
.
setup
(
key
);
}
return
Promise
.
reject
();
...
...
@@ -134,8 +135,11 @@ class Chat {
}
public
async
getToken
()
{
if
(
this
.
token
)
{
return
this
.
trimToken
(
await
this
.
token
());
}
return
Promise
.
resolve
(
""
);
}
private
async
initChatSdk
(
uri
:
string
)
{
if
(
xim
.
isConnected
())
{
...
...
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