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
2df13585
authored
Jan 13, 2022
by
杨铁龙
Browse files
Options
_('Browse Files')
Download
Plain Diff
Merge commit '
42b99d0f
'
parents
feab4c97
42b99d0f
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
52 additions
and
34 deletions
database/index.ts
model/index.ts
service/monitor.ts
store/index.ts
xim/index.ts
xim/xim.ts
database/index.ts
View file @
2df13585
...
...
@@ -63,17 +63,17 @@ class ChatCacheDatabaseController {
}
resolve
();
};
r
.
onsuccess
=
(
e
)
=>
{
r
.
onsuccess
=
e
=>
{
this
.
db
=
(
e
.
target
as
any
).
result
;
console
.
log
(
`index database init comepleted`
);
setupDb
();
};
r
.
onupgradeneeded
=
(
e
)
=>
{
r
.
onupgradeneeded
=
e
=>
{
this
.
db
=
(
e
.
target
as
any
).
result
;
console
.
log
(
`upgrade database comepleted`
);
setupDb
();
};
r
.
onerror
=
(
e
)
=>
{
r
.
onerror
=
e
=>
{
console
.
log
(
`index database init failed,
${
e
}
`
);
this
.
setupError
=
true
;
reject
();
...
...
@@ -88,7 +88,7 @@ class ChatCacheDatabaseController {
const
k
=
this
.
buildChatMessageKey
(
chat
);
const
t
=
this
.
messageDatabases
.
get
(
k
);
if
(
!
t
)
{
return
new
Promise
<
void
>
(
(
resolve
)
=>
{
return
new
Promise
<
void
>
(
resolve
=>
{
if
(
this
.
uid
&&
indexedDB
)
{
const
r
=
indexedDB
.
open
(
k
,
this
.
msgVersion
);
// eslint-disable-next-line @typescript-eslint/no-this-alias
...
...
@@ -102,17 +102,17 @@ class ChatCacheDatabaseController {
}
setTimeout
(()
=>
resolve
(),
200
);
};
r
.
onsuccess
=
function
(
e
)
{
r
.
onsuccess
=
function
(
e
)
{
const
db
=
(
e
.
target
as
any
).
result
;
that
.
messageDatabases
.
set
(
k
,
db
);
setupDb
();
};
r
.
onupgradeneeded
=
function
(
e
)
{
r
.
onupgradeneeded
=
function
(
e
)
{
const
db
=
(
e
.
target
as
any
).
result
;
that
.
messageDatabases
.
set
(
k
,
db
);
setupDb
();
};
r
.
onerror
=
function
(
e
)
{
r
.
onerror
=
function
(
e
)
{
console
.
log
(
`chat message index database init failed,
${
e
}
`
);
...
...
@@ -163,11 +163,11 @@ class ChatCacheDatabaseController {
}
public
updateChat
(
p
:
ChatStore
.
ChatUpdateParameter
)
{
return
new
Promise
<
void
>
(
(
resolve
)
=>
{
return
new
Promise
<
void
>
(
resolve
=>
{
if
(
this
.
db
)
{
const
store
=
this
.
buildStore
(
this
.
chatListKey
);
const
t
=
store
.
get
(
p
.
chat
);
t
.
onsuccess
=
(
r
)
=>
{
t
.
onsuccess
=
r
=>
{
const
chat
=
(
r
.
target
as
any
).
result
as
Chat
;
if
(
chat
)
{
chat
.
eid
=
p
.
eid
as
string
;
...
...
@@ -191,11 +191,11 @@ class ChatCacheDatabaseController {
}
public
updateChat4UnreadCount
(
chat
:
number
,
unread
:
number
)
{
return
new
Promise
<
void
>
(
(
resolve
)
=>
{
return
new
Promise
<
void
>
(
resolve
=>
{
if
(
this
.
db
)
{
const
store
=
this
.
buildStore
(
this
.
chatListKey
);
const
t
=
store
.
get
(
chat
);
t
.
onsuccess
=
(
r
)
=>
{
t
.
onsuccess
=
r
=>
{
const
chat
=
(
r
.
target
as
any
).
result
as
Chat
;
if
(
chat
)
{
chat
.
unread_msg_count
=
unread
;
...
...
@@ -214,11 +214,11 @@ class ChatCacheDatabaseController {
}
public
setRead
(
chat
:
number
)
{
return
new
Promise
<
void
>
(
(
resolve
)
=>
{
return
new
Promise
<
void
>
(
resolve
=>
{
if
(
this
.
db
)
{
const
store
=
this
.
buildStore
(
this
.
chatListKey
);
const
t
=
store
.
get
(
chat
);
t
.
onsuccess
=
(
r
)
=>
{
t
.
onsuccess
=
r
=>
{
const
chat
=
(
r
.
target
as
any
).
result
as
Chat
;
if
(
chat
)
{
chat
.
unread_msg_count
=
0
;
...
...
@@ -253,7 +253,7 @@ class ChatCacheDatabaseController {
allRead
?:
boolean
;
}
)
{
return
new
Promise
<
void
>
(
(
resolve
)
=>
{
return
new
Promise
<
void
>
(
resolve
=>
{
if
(
this
.
db
)
{
const
store
=
this
.
buildChatMessageStore
(
chat
);
if
(
option
.
end
&&
option
.
end
>
option
.
start
)
{
...
...
@@ -267,7 +267,7 @@ class ChatCacheDatabaseController {
};
for
(
let
i
=
option
.
start
;
i
<=
option
.
end
;
i
++
)
{
const
r
=
store
.
get
(
i
);
r
.
onsuccess
=
(
m
)
=>
{
r
.
onsuccess
=
m
=>
{
const
p
=
(
m
.
target
as
any
).
result
as
Message
;
if
(
p
)
{
if
(
option
.
allRead
)
{
...
...
@@ -284,7 +284,7 @@ class ChatCacheDatabaseController {
}
}
else
{
const
r
=
store
.
get
(
option
.
start
);
r
.
onsuccess
=
(
m
)
=>
{
r
.
onsuccess
=
m
=>
{
const
p
=
(
m
.
target
as
any
).
result
as
Message
;
if
(
p
)
{
if
(
option
.
allRead
)
{
...
...
@@ -306,7 +306,7 @@ class ChatCacheDatabaseController {
}
public
removeChatFromList
(
chat
:
number
)
{
return
new
Promise
<
void
>
(
(
resolve
)
=>
{
return
new
Promise
<
void
>
(
resolve
=>
{
if
(
this
.
db
)
{
const
store
=
this
.
buildStore
(
this
.
chatListKey
);
const
t
=
store
.
delete
(
chat
);
...
...
@@ -319,27 +319,27 @@ class ChatCacheDatabaseController {
}
public
getChatList
()
{
return
new
Promise
<
Chat
[]
>
(
(
resolve
)
=>
{
return
new
Promise
<
Chat
[]
>
(
resolve
=>
{
if
(
!
this
.
db
)
{
return
resolve
([]);
}
const
store
=
this
.
buildStore
(
this
.
chatListKey
);
const
r
=
store
.
getAll
();
r
.
onsuccess
=
(
o
)
=>
resolve
((
o
.
target
as
any
).
result
);
r
.
onsuccess
=
o
=>
resolve
((
o
.
target
as
any
).
result
);
r
.
onerror
=
()
=>
resolve
([]);
});
}
public
getChatByCode
(
code
:
string
)
{
return
new
Promise
<
Chat
|
null
>
(
(
resolve
)
=>
{
return
new
Promise
<
Chat
|
null
>
(
resolve
=>
{
if
(
!
this
.
db
)
{
return
resolve
(
null
);
}
const
store
=
this
.
buildStore
(
this
.
chatListKey
);
const
r
=
store
.
getAll
();
r
.
onsuccess
=
(
o
)
=>
{
r
.
onsuccess
=
o
=>
{
const
items
=
(
o
.
target
as
any
).
result
as
Chat
[];
resolve
(
items
.
find
(
(
i
)
=>
i
.
biz_type_code
===
code
)
as
Chat
);
resolve
(
items
.
find
(
i
=>
i
.
biz_type_code
===
code
)
as
Chat
);
};
r
.
onerror
=
()
=>
resolve
(
null
);
});
...
...
@@ -364,21 +364,21 @@ class ChatCacheDatabaseController {
}
public
getChatMessages
(
chat
:
number
)
{
return
new
Promise
<
Message
[]
>
(
(
resolve
)
=>
{
return
new
Promise
<
Message
[]
>
(
resolve
=>
{
if
(
!
this
.
db
)
{
return
resolve
([]);
}
this
.
setupChatMessageDatabase
(
chat
).
finally
(()
=>
{
const
store
=
this
.
buildChatMessageStore
(
chat
);
const
r
=
store
.
getAll
();
r
.
onsuccess
=
(
o
)
=>
resolve
((
o
.
target
as
any
).
result
);
r
.
onsuccess
=
o
=>
resolve
((
o
.
target
as
any
).
result
);
r
.
onerror
=
()
=>
resolve
([]);
});
});
}
public
appendMessages
(
chat
:
number
,
items
:
Message
[])
{
return
new
Promise
<
void
>
(
(
resolve
)
=>
{
return
new
Promise
<
void
>
(
resolve
=>
{
if
(
!
this
.
db
||
!
items
||
!
items
.
length
)
{
return
resolve
();
}
...
...
@@ -413,7 +413,7 @@ class ChatCacheDatabaseController {
public
mergeChatList
(
source1
:
Chat
[],
source2
:
Chat
[])
{
for
(
const
item
of
source2
)
{
const
t
=
source1
.
find
(
(
i
)
=>
i
.
id
===
item
.
id
);
const
t
=
source1
.
find
(
i
=>
i
.
id
===
item
.
id
);
if
(
t
)
{
item
.
unread_msg_count
=
Math
.
max
(
item
.
unread_msg_count
,
...
...
@@ -445,14 +445,14 @@ class ChatCacheDatabaseController {
msg
:
number
,
status
:
MessageHandled
)
{
return
new
Promise
<
void
>
(
(
resolve
)
=>
{
return
new
Promise
<
void
>
(
resolve
=>
{
if
(
!
this
.
db
)
{
return
resolve
();
}
this
.
setupChatMessageDatabase
(
chat
).
finally
(()
=>
{
const
store
=
this
.
buildChatMessageStore
(
chat
);
const
r
=
store
.
get
(
msg
);
r
.
onsuccess
=
(
o
)
=>
{
r
.
onsuccess
=
o
=>
{
const
p
=
(
o
.
target
as
any
).
result
as
Message
;
p
.
handled
=
status
;
const
u
=
store
.
put
(
p
);
...
...
model/index.ts
View file @
2df13585
...
...
@@ -82,6 +82,8 @@ export interface ChatOption {
message
?:
ChatMessageController
;
avatar
?:
string
;
disabledDbIndex
?:
boolean
;
}
export
interface
ChatMessageController
{
...
...
service/monitor.ts
View file @
2df13585
import
Axios
,
{
AxiosResponse
}
from
"axios"
;
import
Axios
,
{
AxiosResponse
,
AxiosAdapter
}
from
"axios"
;
import
{
UniplatSdk
}
from
"uniplat-sdk"
;
import
{
ImEnvironment
}
from
"../model"
;
...
...
@@ -26,6 +26,7 @@ export interface SdkMonitorOption {
userAgent
?:
boolean
;
envir
:
ImEnvironment
;
product
:
Product
;
call
?:
(
r
:
any
)
=>
void
;
}
class
WebMonitor
{
...
...
@@ -33,6 +34,7 @@ class WebMonitor {
private
envir
=
ImEnvironment
.
Dev
;
private
product
=
Product
.
Default
;
private
readonly
url
=
"https://pre-hrs-monitor.hrs100.com"
;
private
adapter
:
AxiosAdapter
|
undefined
;
public
updateKey
(
key
:
string
)
{
this
.
key
=
key
;
...
...
@@ -42,6 +44,7 @@ class WebMonitor {
private
buildHeaders
()
{
return
{
headers
:
{
authorization
:
"cdd0a34e-f537-4e5b-808e-2ba06af21845"
},
adapter
:
this
.
adapter
,
};
}
...
...
@@ -85,11 +88,17 @@ class WebMonitor {
);
}
public
useSdk
(
sdk
:
UniplatSdk
,
options
:
SdkMonitorOption
)
{
public
useSdk
(
sdk
:
UniplatSdk
,
options
:
SdkMonitorOption
,
adapter
?:
AxiosAdapter
)
{
this
.
envir
=
options
.
envir
;
this
.
product
=
options
.
product
;
this
.
adapter
=
adapter
;
sdk
.
events
.
addUniversalErrorResponseCallback
(
(
r
:
AxiosResponse
<
any
>
)
=>
{
options
.
call
&&
options
.
call
(
r
);
if
(
this
.
enable
())
{
const
msg
:
string
[]
=
[];
msg
.
push
(
...
...
@@ -111,12 +120,14 @@ class WebMonitor {
if
(
r
.
config
&&
r
.
config
.
data
)
{
const
form
=
r
.
config
.
data
as
FormData
;
if
(
form
.
getAll
)
{
const
p
=
form
.
getAll
(
'parameters'
);
const
p
=
form
.
getAll
(
"parameters"
);
for
(
const
item
of
p
)
{
msg
.
push
(
`Payload:
${
item
}
`
);
}
}
else
{
msg
.
push
(
`Payload:
${
JSON
.
stringify
(
r
.
config
.
data
)}
`
);
msg
.
push
(
`Payload:
${
JSON
.
stringify
(
r
.
config
.
data
)}
`
);
}
}
...
...
store/index.ts
View file @
2df13585
This diff is collapsed.
Click to expand it.
xim/index.ts
View file @
2df13585
...
...
@@ -58,7 +58,12 @@ class Chat {
option
.
message
&&
(
this
.
messageController
=
option
.
message
);
option
.
avatar
!==
undefined
&&
(
this
.
defaultAvatar
=
option
.
avatar
);
await
this
.
setupIndexDb
(
option
.
orgId
());
if
(
!
option
.
disabledDbIndex
){
await
this
.
setupIndexDb
(
option
.
orgId
()).
catch
(
err
=>
{
// 必须catch error不然小程序不会向后运行
console
.
error
(
"setupIndexDb Error"
)
});
}
this
.
token
=
async
()
=>
option
.
sdk
().
global
.
jwtToken
;
tokenManager
.
save
(
this
.
token
);
...
...
xim/xim.ts
View file @
2df13585
...
...
@@ -8,7 +8,7 @@ import { Message, NotifyMessage } from "./models/chat";
import
chat
from
"./index"
;
import
{
STATUS
}
from
"xchat-client/dist/xchat"
;
wampDebug
(
tru
e
);
wampDebug
(
fals
e
);
const
DefaultMsgPageSize
=
20
;
...
...
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