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
5a7a2574
authored
Nov 05, 2021
by
zhousil
Browse files
Options
_('Browse Files')
Download
Plain Diff
merge
parents
960a9dc8
e00f7a65
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
126 additions
and
7 deletions
components/controller/index.ts
components/message-item/action-message.vue
components/message-item/audio-message.vue
components/message-item/file-controller.ts
components/message-item/index.ts
components/message.vue
hybrid-input/index.vue
model/index.ts
store/index.ts
xim/models/chat.ts
components/controller/index.ts
View file @
5a7a2574
...
@@ -7,9 +7,19 @@ export function parserMessage(type: string, rawMsg: string) {
...
@@ -7,9 +7,19 @@ export function parserMessage(type: string, rawMsg: string) {
const
msg
=
JSON
.
parse
(
rawMsg
);
const
msg
=
JSON
.
parse
(
rawMsg
);
return
msg
.
text
;
return
msg
.
text
;
}
}
if
(
type
===
MessageType
.
Action
)
{
const
msg
=
JSON
.
parse
(
rawMsg
);
return
msg
.
text
;
}
if
(
type
===
MessageType
.
Image
)
{
if
(
type
===
MessageType
.
Image
)
{
return
`[图片]`
;
return
`[图片]`
;
}
}
if
(
type
===
MessageType
.
Video
)
{
return
`[视频]`
;
}
if
(
type
===
MessageType
.
Voice
)
{
return
`[语音]`
;
}
if
(
type
===
MessageType
.
File
)
{
if
(
type
===
MessageType
.
File
)
{
return
`[文件]`
;
return
`[文件]`
;
}
}
...
...
components/message-item/action-message.vue
0 → 100644
View file @
5a7a2574
<
template
>
<div
class=
"msg-detail inline-text"
v-html=
"format2Link(messageBody.msg.text || emptyText)"
></div>
</
template
>
<
script
lang=
"ts"
>
import
{
replaceText2Link
}
from
"@/customer-service/utils"
;
import
xim
from
"@/customer-service/xim"
;
import
{
Component
}
from
"vue-property-decorator"
;
import
BaseMessage
from
"./index"
;
@
Component
({
components
:
{}
})
export
default
class
Index
extends
BaseMessage
{
protected
readonly
emptyText
=
" "
;
protected
format2Link
(
text
:
string
)
{
let
t
=
replaceText2Link
(
text
);
const
keywords
=
xim
.
getMatchedTextKeywords
();
for
(
const
item
of
keywords
)
{
const
r
=
new
RegExp
(
item
,
"g"
);
t
=
t
.
replace
(
r
,
`<span class="highlight">
${
item
}
</span>`
);
}
return
t
;
}
}
</
script
>
<
style
lang=
"less"
scoped
>
.inline-text
{
display
:
inline-block
;
white-space
:
pre-wrap
;
text-align
:
left
;
color
:
#409eff
;
/deep/
.highlight
{
color
:
#e87005
;
}
}
</
style
>
\ No newline at end of file
components/message-item/audio-message.vue
View file @
5a7a2574
...
@@ -2,7 +2,6 @@
...
@@ -2,7 +2,6 @@
<div
<div
class=
"msg-detail voice-message d-flex align-items-center"
class=
"msg-detail voice-message d-flex align-items-center"
:class=
"
{ playing: playing, 'can-play': messageRealUrl }"
:class=
"
{ playing: playing, 'can-play': messageRealUrl }"
v-if="messageType === 'voice'"
@click.stop="play"
@click.stop="play"
:style="{ width: getVoiceMessageWidth + 'px' }"
:style="{ width: getVoiceMessageWidth + 'px' }"
>
>
...
...
components/message-item/file-controller.ts
View file @
5a7a2574
import
{
MessageType
}
from
"@/customer-service/model"
;
const
SVG_AUDIO
=
`<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1595484227561" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6614" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M132.267 0h518.4l288 288v689.067A46.933 46.933 0 0 1 891.733 1024H132.267a46.933 46.933 0 0 1-46.934-46.933V46.933A46.933 46.933 0 0 1 132.267 0z" fill="#E54C94" p-id="6615"></path><path d="M607.744 434.39c-31.488 19.86-73.472-1.43-73.472-1.43s40.47 178.795 37.483 193.003c0 0 0-1.43 0 0 0 42.56-37.483 78.037-83.968 78.037-46.464 0-82.454-35.477-82.454-78.037 0-42.582 37.483-78.059 82.454-78.059 16.49 0 34.496 5.675 43.477 15.616l-38.976-143.317s-16.49-65.28 41.984-56.768c41.984 7.082 29.995 34.048 104.96 11.349 1.493-1.408 4.48 36.907-31.488 59.605zM650.667 0v241.067A46.933 46.933 0 0 0 697.6 288h241.067l-288-288z" fill="#FFFFFF" p-id="6616"></path></svg>`
;
const
SVG_AUDIO
=
`<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1595484227561" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6614" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M132.267 0h518.4l288 288v689.067A46.933 46.933 0 0 1 891.733 1024H132.267a46.933 46.933 0 0 1-46.934-46.933V46.933A46.933 46.933 0 0 1 132.267 0z" fill="#E54C94" p-id="6615"></path><path d="M607.744 434.39c-31.488 19.86-73.472-1.43-73.472-1.43s40.47 178.795 37.483 193.003c0 0 0-1.43 0 0 0 42.56-37.483 78.037-83.968 78.037-46.464 0-82.454-35.477-82.454-78.037 0-42.582 37.483-78.059 82.454-78.059 16.49 0 34.496 5.675 43.477 15.616l-38.976-143.317s-16.49-65.28 41.984-56.768c41.984 7.082 29.995 34.048 104.96 11.349 1.493-1.408 4.48 36.907-31.488 59.605zM650.667 0v241.067A46.933 46.933 0 0 0 697.6 288h241.067l-288-288z" fill="#FFFFFF" p-id="6616"></path></svg>`
;
const
SVG_EXCEL
=
`<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1595484180583" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5396" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M132.267 0h518.4l288 288v689.067A46.933 46.933 0 0 1 891.733 1024H132.267a46.933 46.933 0 0 1-46.934-46.933V46.933A46.933 46.933 0 0 1 132.267 0z" fill="#3AC877" p-id="5397"></path><path d="M369.707 704L474.09 544.64l-94.592-146.048h72.085l61.248 98.133 60.01-98.133h71.467l-95.018 148.33L653.675 704h-74.39l-67.712-105.621L443.67 704zM650.667 0v241.067A46.933 46.933 0 0 0 697.6 288h241.067l-288-288z" fill="#FFFFFF" p-id="5398"></path></svg>`
;
const
SVG_EXCEL
=
`<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1595484180583" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5396" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M132.267 0h518.4l288 288v689.067A46.933 46.933 0 0 1 891.733 1024H132.267a46.933 46.933 0 0 1-46.934-46.933V46.933A46.933 46.933 0 0 1 132.267 0z" fill="#3AC877" p-id="5397"></path><path d="M369.707 704L474.09 544.64l-94.592-146.048h72.085l61.248 98.133 60.01-98.133h71.467l-95.018 148.33L653.675 704h-74.39l-67.712-105.621L443.67 704zM650.667 0v241.067A46.933 46.933 0 0 0 697.6 288h241.067l-288-288z" fill="#FFFFFF" p-id="5398"></path></svg>`
;
const
SVG_IMAGE
=
`<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1595484188280" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5531" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M132.267 0h518.4l288 288v689.067A46.933 46.933 0 0 1 891.733 1024H132.267a46.933 46.933 0 0 1-46.934-46.933V46.933A46.933 46.933 0 0 1 132.267 0z" fill="#F6AD00" p-id="5532"></path><path d="M294.485 684.95l78.379-115.2a12.181 12.181 0 0 1 18.624-1.835l51.797 50.752 113.643-178.134a12.181 12.181 0 0 1 20.843 0.47l141.205 244.714A12.181 12.181 0 0 1 708.416 704h-403.84a12.181 12.181 0 0 1-10.09-19.05z" fill="#FFF7F7" p-id="5533"></path><path d="M443.307 423.616c0 32.512-29.014 60.95-62.187 60.95-33.152 0-62.165-28.438-62.165-60.95-2.07-32.512 26.944-60.95 62.165-60.95 33.152 0 62.165 28.438 62.165 60.95zM650.667 0v241.067A46.933 46.933 0 0 0 697.6 288h241.067l-288-288z" fill="#FFFFFF" p-id="5534"></path></svg>`
;
const
SVG_IMAGE
=
`<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1595484188280" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5531" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M132.267 0h518.4l288 288v689.067A46.933 46.933 0 0 1 891.733 1024H132.267a46.933 46.933 0 0 1-46.934-46.933V46.933A46.933 46.933 0 0 1 132.267 0z" fill="#F6AD00" p-id="5532"></path><path d="M294.485 684.95l78.379-115.2a12.181 12.181 0 0 1 18.624-1.835l51.797 50.752 113.643-178.134a12.181 12.181 0 0 1 20.843 0.47l141.205 244.714A12.181 12.181 0 0 1 708.416 704h-403.84a12.181 12.181 0 0 1-10.09-19.05z" fill="#FFF7F7" p-id="5533"></path><path d="M443.307 423.616c0 32.512-29.014 60.95-62.187 60.95-33.152 0-62.165-28.438-62.165-60.95-2.07-32.512 26.944-60.95 62.165-60.95 33.152 0 62.165 28.438 62.165 60.95zM650.667 0v241.067A46.933 46.933 0 0 0 697.6 288h241.067l-288-288z" fill="#FFFFFF" p-id="5534"></path></svg>`
;
...
@@ -189,6 +191,22 @@ export function isImage(name: string) {
...
@@ -189,6 +191,22 @@ export function isImage(name: string) {
return
name
&&
FILE_EXTENSION_IMAGE
.
some
((
i
)
=>
name
.
endsWith
(
i
));
return
name
&&
FILE_EXTENSION_IMAGE
.
some
((
i
)
=>
name
.
endsWith
(
i
));
}
}
export
function
getMessageType
(
name
:
string
)
{
if
(
name
)
{
if
(
isImage
(
name
))
{
return
MessageType
.
Image
;
}
if
(
isAudio
(
name
))
{
return
MessageType
.
Voice
;
}
if
(
isVideo
(
name
))
{
return
MessageType
.
Video
;
}
return
MessageType
.
File
;
}
return
MessageType
.
Text
;
}
/**
/**
* 最大图片文件大小
* 最大图片文件大小
*/
*/
...
...
components/message-item/index.ts
View file @
5a7a2574
...
@@ -17,7 +17,10 @@ export default class BaseMessage extends Vue {
...
@@ -17,7 +17,10 @@ export default class BaseMessage extends Vue {
protected
get
messageBody
():
{
eid
?:
string
;
oid
?:
string
;
msg
:
any
}
{
protected
get
messageBody
():
{
eid
?:
string
;
oid
?:
string
;
msg
:
any
}
{
if
(
this
.
value
)
{
if
(
this
.
value
)
{
try
{
try
{
if
(
this
.
value
.
msg
.
startsWith
(
"{"
))
{
return
{
...
this
.
value
,
msg
:
JSON
.
parse
(
this
.
value
.
msg
)
};
return
{
...
this
.
value
,
msg
:
JSON
.
parse
(
this
.
value
.
msg
)
};
}
return
{
...
this
.
value
,
msg
:
this
.
value
.
msg
};
}
catch
{
}
catch
{
return
{
return
{
...
this
.
value
,
...
this
.
value
,
...
...
components/message.vue
View file @
5a7a2574
...
@@ -138,6 +138,7 @@
...
@@ -138,6 +138,7 @@
import
AudioMessage
from
"./message-item/audio-message.vue"
;
import
AudioMessage
from
"./message-item/audio-message.vue"
;
import
VideoMessage
from
"./message-item/video-message.vue"
;
import
VideoMessage
from
"./message-item/video-message.vue"
;
import
TextMessage
from
"./message-item/text-message.vue"
;
import
TextMessage
from
"./message-item/text-message.vue"
;
import
ActionMessage
from
"./message-item/action-message.vue"
;
import
WithdrawMessage
from
"./message-item/withdraw-message.vue"
;
import
WithdrawMessage
from
"./message-item/withdraw-message.vue"
;
import
PurchasePlanMessage
from
"./message-item/purchase-plan-message.vue"
;
import
PurchasePlanMessage
from
"./message-item/purchase-plan-message.vue"
;
import
MyWelfareMessage
from
"./message-item/my-welfare-message.vue"
;
import
MyWelfareMessage
from
"./message-item/my-welfare-message.vue"
;
...
@@ -158,6 +159,7 @@
...
@@ -158,6 +159,7 @@
[
dto
.
MessageType
.
MyPurchasePlan
,
"purchase-plan-message"
],
[
dto
.
MessageType
.
MyPurchasePlan
,
"purchase-plan-message"
],
[
dto
.
MessageType
.
MyWelfare
,
"my-welfare-message"
],
[
dto
.
MessageType
.
MyWelfare
,
"my-welfare-message"
],
[
dto
.
MessageType
.
QuestionAnswer
,
"question-answer-message"
],
[
dto
.
MessageType
.
QuestionAnswer
,
"question-answer-message"
],
[
dto
.
MessageType
.
Action
,
"action-message"
],
]);
]);
@
Component
({
@
Component
({
...
@@ -173,6 +175,7 @@
...
@@ -173,6 +175,7 @@
PurchasePlanMessage
,
PurchasePlanMessage
,
MyWelfareMessage
,
MyWelfareMessage
,
QuestionAnswerMessage
,
QuestionAnswerMessage
,
ActionMessage
,
},
},
})
})
export
default
class
Message
extends
Vue
{
export
default
class
Message
extends
Vue
{
...
...
hybrid-input/index.vue
View file @
5a7a2574
...
@@ -139,7 +139,8 @@
...
@@ -139,7 +139,8 @@
private
tip4Image
=
`发送图片(最大
${
MAX_IMAGE_SIZE_STRING
}
)`
;
private
tip4Image
=
`发送图片(最大
${
MAX_IMAGE_SIZE_STRING
}
)`
;
private
tip4File
=
`发送文件(最大
${
MAX_FILE_SIZE_STRING
}
)`
;
private
tip4File
=
`发送文件(最大
${
MAX_FILE_SIZE_STRING
}
)`
;
private
enableFileSelection
=
false
;
private
readonly
enableFileSelection
=
window
.
location
.
host
.
includes
(
"localhost"
);
private
emoji
:
EmojiItem
[]
=
[];
private
emoji
:
EmojiItem
[]
=
[];
...
@@ -619,6 +620,11 @@
...
@@ -619,6 +620,11 @@
.file-size
{
.file-size
{
margin-top
:
10px
;
margin-top
:
10px
;
}
}
svg
{
max-width
:
70px
;
max-height
:
50px
;
}
}
}
}
}
}
}
...
...
model/index.ts
View file @
5a7a2574
...
@@ -100,7 +100,8 @@ export const enum MessageType {
...
@@ -100,7 +100,8 @@ export const enum MessageType {
Withdraw
=
"withdraw"
,
Withdraw
=
"withdraw"
,
MyPurchasePlan
=
"my_purchase_plan"
,
MyPurchasePlan
=
"my_purchase_plan"
,
MyWelfare
=
"my_welfare"
,
MyWelfare
=
"my_welfare"
,
QuestionAnswer
=
"question_answer"
QuestionAnswer
=
"question_answer"
,
Action
=
"action"
,
}
}
export
const
enum
MessageHandled
{
export
const
enum
MessageHandled
{
...
@@ -130,6 +131,7 @@ export interface Message {
...
@@ -130,6 +131,7 @@ export interface Message {
update_time
:
number
;
update_time
:
number
;
url
:
string
;
url
:
string
;
handled
?:
MessageHandled
;
handled
?:
MessageHandled
;
modelData
?:
any
;
}
}
export
type
MessageRequestResult
=
readonly
Message
[];
export
type
MessageRequestResult
=
readonly
Message
[];
...
@@ -137,6 +139,7 @@ export type MessageRequestResult = readonly Message[];
...
@@ -137,6 +139,7 @@ export type MessageRequestResult = readonly Message[];
export
interface
BaseChatItemBusinessData
{
export
interface
BaseChatItemBusinessData
{
model_name
:
string
;
model_name
:
string
;
obj_id
:
string
;
obj_id
:
string
;
detail_name
?:
string
;
}
}
export
interface
BaseChatItem
extends
BaseChatItemBusinessData
{
export
interface
BaseChatItem
extends
BaseChatItemBusinessData
{
...
...
store/index.ts
View file @
5a7a2574
...
@@ -83,11 +83,18 @@ async function preCacheImgs(msgs?: any[]) {
...
@@ -83,11 +83,18 @@ async function preCacheImgs(msgs?: any[]) {
}
}
function
buildChatItem
(
chat
:
RawChatItem
)
{
function
buildChatItem
(
chat
:
RawChatItem
)
{
if
(
!
chat
.
model_name
&&
chat
.
business_data
)
{
if
(
chat
.
business_data
)
{
const
b
=
JSON
.
parse
(
chat
.
business_data
)
as
BaseChatItemBusinessData
;
const
b
=
JSON
.
parse
(
chat
.
business_data
)
as
BaseChatItemBusinessData
;
if
(
!
chat
.
model_name
)
{
chat
.
model_name
=
b
.
model_name
;
chat
.
model_name
=
b
.
model_name
;
b
.
obj_id
&&
(
chat
.
obj_id
=
b
.
obj_id
);
b
.
obj_id
&&
(
chat
.
obj_id
=
b
.
obj_id
);
}
}
b
.
detail_name
&&
!
chat
.
detail_name
&&
(
chat
.
detail_name
=
b
.
detail_name
);
}
return
{
...
chat
,
chat_id
:
chat
.
id
}
as
ChatType
;
return
{
...
chat
,
chat_id
:
chat
.
id
}
as
ChatType
;
}
}
...
@@ -386,6 +393,25 @@ export default {
...
@@ -386,6 +393,25 @@ export default {
async
[
ChatStore
.
ACTION_GET_MY_CHAT_LIST
]({
commit
,
state
})
{
async
[
ChatStore
.
ACTION_GET_MY_CHAT_LIST
]({
commit
,
state
})
{
let
cache
=
await
dbController
.
getChatList
();
let
cache
=
await
dbController
.
getChatList
();
for
(
const
item
of
cache
)
{
if
(
item
.
business_data
&&
!
item
.
detail_name
)
{
const
d
=
JSON
.
parse
(
item
.
business_data
)
as
BaseChatItemBusinessData
;
if
(
d
)
{
if
(
d
.
detail_name
)
{
item
.
detail_name
=
d
.
detail_name
;
}
if
(
!
item
.
obj_id
&&
d
.
obj_id
)
{
item
.
obj_id
=
d
.
obj_id
;
}
if
(
!
item
.
model_name
&&
d
.
model_name
)
{
item
.
model_name
=
d
.
model_name
;
}
}
}
}
const
buildUnreadMessage
=
(
items
:
ChatType
[])
=>
{
const
buildUnreadMessage
=
(
items
:
ChatType
[])
=>
{
let
sum
=
0
;
let
sum
=
0
;
items
.
forEach
((
i
)
=>
(
sum
+=
i
.
unread_msg_count
));
items
.
forEach
((
i
)
=>
(
sum
+=
i
.
unread_msg_count
));
...
@@ -734,7 +760,8 @@ export default {
...
@@ -734,7 +760,8 @@ export default {
await
getChatModelInfo
(
await
getChatModelInfo
(
wantedChatRoom
.
model_name
,
wantedChatRoom
.
model_name
,
wantedChatRoom
.
obj_id
wantedChatRoom
.
obj_id
,
wantedChatRoom
.
detail_name
)
)
.
then
((
info
)
=>
{
.
then
((
info
)
=>
{
commit
(
commit
(
...
@@ -832,7 +859,11 @@ export default {
...
@@ -832,7 +859,11 @@ export default {
await
dispatch
(
ChatStore
.
ACTION_GET_MY_CHAT_LIST
);
await
dispatch
(
ChatStore
.
ACTION_GET_MY_CHAT_LIST
);
const
firstChat
=
state
[
ChatStore
.
STATE_MY_CHAT_ROOM_LIST
]?.
list
[
0
];
const
firstChat
=
state
[
ChatStore
.
STATE_MY_CHAT_ROOM_LIST
]?.
list
[
0
];
if
(
firstChat
==
null
)
return
;
if
(
firstChat
==
null
)
return
;
await
getChatModelInfo
(
firstChat
.
model_name
,
firstChat
.
obj_id
);
await
getChatModelInfo
(
firstChat
.
model_name
,
firstChat
.
obj_id
,
firstChat
.
detail_name
);
await
dispatch
(
await
dispatch
(
ChatStore
.
ACTION_SAVE_CURRENT_CHAT_ID_VERSION
,
ChatStore
.
ACTION_SAVE_CURRENT_CHAT_ID_VERSION
,
firstChat
.
chat_id
firstChat
.
chat_id
...
@@ -923,7 +954,10 @@ export default {
...
@@ -923,7 +954,10 @@ export default {
return
await
Chat
.
getSdk
()
return
await
Chat
.
getSdk
()
.
model
(
currentChat
.
model_name
)
.
model
(
currentChat
.
model_name
)
.
chat
(
currentChat
.
obj_id
,
orgId
())
.
chat
(
currentChat
.
obj_id
,
orgId
())
.
addMember
(
uids
.
map
((
id
)
=>
+
id
),
-
30
)
.
addMember
(
uids
.
map
((
id
)
=>
+
id
),
-
30
)
.
finally
(()
=>
dispatch
(
ChatStore
.
ACTION_GET_CHAT_MEMBERS
));
.
finally
(()
=>
dispatch
(
ChatStore
.
ACTION_GET_CHAT_MEMBERS
));
},
},
async
[
ChatStore
.
ACTION_CHAT_REMOVE_MEMBER
](
async
[
ChatStore
.
ACTION_CHAT_REMOVE_MEMBER
](
...
...
xim/models/chat.ts
View file @
5a7a2574
...
@@ -47,6 +47,8 @@ export interface Chat {
...
@@ -47,6 +47,8 @@ export interface Chat {
chat_id
:
number
;
chat_id
:
number
;
catalog
:
string
;
catalog
:
string
;
biz_type_id
:
number
;
biz_type_id
:
number
;
business_data
?:
string
;
detail_name
?:
string
;
}
}
export
interface
Message
{
export
interface
Message
{
...
...
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