Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
M
Madara
Project
Project
Details
Activity
Releases
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
viitto
Madara
Commits
665ae7bc
Commit
665ae7bc
authored
Sep 30, 2019
by
罗超
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修复BUG
parent
c5a1a5e2
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
525 additions
and
467 deletions
+525
-467
index.js
src/configs/index.js
+2
-2
index.js
src/main/index.js
+4
-3
chat.vue
src/renderer/components/msssage/chat.vue
+14
-11
chateditor.vue
src/renderer/components/msssage/chateditor.vue
+1
-0
index.vue
src/renderer/components/msssage/index.vue
+26
-3
initNimSDK.js
src/store/actions/initNimSDK.js
+128
-120
msgs.js
src/store/actions/msgs.js
+4
-0
index.js
src/utils/index.js
+346
-328
No files found.
src/configs/index.js
View file @
665ae7bc
...
...
@@ -20,8 +20,8 @@ let config = {
// 我的手机图标
myPhoneIcon
:
'http://yx-web.nos.netease.com/webdoc/h5/im/my-phone.png'
,
// 本地消息显示数量,会影响性能
localMsglimit
:
36
,
useDb
:
fals
e
localMsglimit
:
10
,
useDb
:
tru
e
}
const
env
=
'online'
...
...
src/main/index.js
View file @
665ae7bc
...
...
@@ -299,7 +299,7 @@ ipc.on('reconnect', function(event) {
ipc.on('
loginSuccess
', function(event, userInfo) {
initNIM(userInfo.ImAccount, userInfo.ImToken)
registScrollerHotKey()
getScrollerhotWindows()
//
getScrollerhotWindows()
global.LOGINUSER = userInfo
getNewMsgWindows()
getMainWinodw(0)
...
...
@@ -454,7 +454,7 @@ ipc.on('openSystemNotice', function(event, sessionid) {
show: false,
width: 320,
height: 190,
alwaysOnTop:
tru
e,
alwaysOnTop:
fals
e,
focusable: false,
icon: windowIcon
})
...
...
@@ -715,7 +715,7 @@ ipc.on('send-file', function(event, obj) {
}
})
})
ipc.on('
read
-
clip
', function
(event) {
ipc.on('
read
-
clip
', function(event) {
const rawFilePath = clipboard.readBuffer('
FileNameW
').toString('
ucs2
');
let filePath = rawFilePath.replace(new RegExp(String.fromCharCode(0), '
g
'), '');
if (filePath && filePath.length > 0) {
...
...
@@ -950,6 +950,7 @@ let getNoticeWindows = function() {
})
}
noticeWindows
.
loadURL
(
noticeUrl
)
mainWindow
.
setFocusable
(
true
)
noticeWindows
.
setMenu
(
null
)
noticeWindows
.
once
(
'ready-to-show'
,
()
=>
{
noticeWindows
.
show
()
...
...
src/renderer/components/msssage/chat.vue
View file @
665ae7bc
...
...
@@ -331,12 +331,13 @@ export default {
}
else
if
(
/^team-/
.
test
(
sessionId
))
{
var
teamMembers
=
this
.
$store
.
state
.
teamMembers
[
this
.
to
];
if
(
this
.
teamInfo
)
{
if
(
teamMembers
===
undefined
||
teamMembers
.
length
<
this
.
teamInfo
.
memberNum
)
{
this
.
$store
.
dispatch
(
"getTeamMembers"
,
this
.
to
);
}
// if (
// teamMembers === undefined ||
// teamMembers.length
<
this
.
teamInfo
.
memberNum
// ) {
// console.log('...............')
// this.$store.dispatch("getTeamMembers", this.to);
// }
if
(
this
.
teamInfo
)
{
// teamInfo中的人数为初始获取的值,在人员增减后不会及时更新,而teamMembers在人员增减后同步维护的人员信息
var
members
=
...
...
@@ -395,15 +396,16 @@ export default {
}
else
{
this
.
lstShowData
.
lastMsgShow
=
""
;
}
//
}
if
(
msgs
.
length
>
0
)
this
.
lstTimer
=
msgs
[
msgs
.
length
-
1
].
time
if
(
this
.
scene
==
'team'
){
msgs
=
msgs
.
filter
(
x
=>
{
if
(
x
.
type
!=
'notification'
||
(
x
.
type
==
'notification'
&&
!
x
.
attach
.
team
.
custom
))
return
x
return
;
})
//
msgs=msgs.filter(x=>{
//
if(x.type!='notification' ||(x.type=='notification' && !x.attach.team.custom))
//
return x
//
return;
//
})
}
// console.log(msgs)
return
msgs
;
...
...
@@ -885,6 +887,7 @@ export default {
height
:
46px
;
line-height
:
46px
;
padding-left
:
20px
;
padding-right
:
50px
;
border-bottom
:
1px
solid
#ddd
;
position
:
relative
;
}
...
...
src/renderer/components/msssage/chateditor.vue
View file @
665ae7bc
...
...
@@ -408,6 +408,7 @@ export default {
callbackTeam
:
this
.
callBackTeam
});
}
else
{
console
.
log
(
'in start...........'
,
new
Date
())
this
.
$store
.
dispatch
(
"sendMsg"
,
{
type
:
"text"
,
scene
:
this
.
scene
,
...
...
src/renderer/components/msssage/index.vue
View file @
665ae7bc
...
...
@@ -340,7 +340,26 @@ export default {
this
.
atIds
=
session
.
atId
session
.
atId
=
null
}
if
(
session
.
scene
===
"team"
)
{
var
teamMembers
=
this
.
$store
.
state
.
teamMembers
[
session
.
to
];
let
teamInfo
=
this
.
$store
.
state
.
teamlist
.
find
(
team
=>
{
return
team
.
teamId
===
this
.
currentSession
.
to
;
});
if
(
teamInfo
)
{
if
(
teamMembers
===
undefined
||
teamMembers
.
length
<
teamInfo
.
memberNum
)
{
this
.
$store
.
dispatch
(
"getTeamMembers"
,
session
.
to
);
}
}
}
this
.
$store
.
dispatch
(
"setCurrSession"
,
session
.
id
)
this
.
$store
.
dispatch
(
"getHistoryMsgs"
,
{
scene
:
session
.
scene
,
to
:
session
.
to
});
}
},
clearAtMe
(){
...
...
@@ -687,10 +706,14 @@ export default {
}
else
{
this
.
$electron
.
ipcRenderer
.
send
(
"newMessage"
,
[]);
}
if
(
!
this
.
$electron
.
remote
.
getCurrentWindow
().
isFocused
())
{
if
(
this
.
calcUnRead
(
this
.
newMsgList
,
unreadList
))
{
this
.
$electron
.
remote
.
getCurrentWindow
().
flashFrame
(
true
);
try
{
if
(
!
this
.
$electron
.
remote
.
getCurrentWindow
().
isFocused
())
{
if
(
this
.
calcUnRead
(
this
.
newMsgList
,
unreadList
))
{
this
.
$electron
.
remote
.
getCurrentWindow
().
flashFrame
(
true
);
}
}
}
catch
(
error
)
{
}
...
...
src/store/actions/initNimSDK.js
View file @
665ae7bc
...
...
@@ -6,130 +6,138 @@ import config from '../../configs/index'
import
pageUtil
from
'../../utils/page'
import
util
from
'../../utils/index'
import
store
from
'../'
import
{
onFriends
,
onSyncFriendAction
}
from
'./friends'
import
{
onRobots
}
from
'./robots'
import
{
onBlacklist
,
onMarkInBlacklist
}
from
'./blacks'
import
{
onMyInfo
,
onUserInfo
}
from
'./userInfo'
import
{
onSessions
,
onUpdateSession
}
from
'./session'
import
{
onRoamingMsgs
,
onOfflineMsgs
,
onMsg
,
onMutelist
,
onMarkInMutelist
}
from
'./msgs'
import
{
onSysMsgs
,
onSysMsg
,
onSysMsgUnread
,
onCustomSysMsgs
}
from
'./sysMsgs'
import
{
onTeams
,
onSynCreateTeam
,
onCreateTeam
,
onUpdateTeam
,
onTeamMembers
,
onUpdateTeamMember
,
onAddTeamMembers
,
onRemoveTeamMembers
,
onUpdateTeamManagers
,
onDismissTeam
,
onUpdateTeamMembersMute
,
onTeamMsgReceipt
}
from
'./team'
import
{
onFriends
,
onSyncFriendAction
}
from
'./friends'
import
{
onRobots
}
from
'./robots'
import
{
onBlacklist
,
onMarkInBlacklist
}
from
'./blacks'
import
{
onMyInfo
,
onUserInfo
}
from
'./userInfo'
import
{
onSessions
,
onUpdateSession
}
from
'./session'
import
{
onRoamingMsgs
,
onOfflineMsgs
,
onMsg
,
onMutelist
,
onMarkInMutelist
}
from
'./msgs'
import
{
onSysMsgs
,
onSysMsg
,
onSysMsgUnread
,
onCustomSysMsgs
}
from
'./sysMsgs'
import
{
onTeams
,
onSynCreateTeam
,
onCreateTeam
,
onUpdateTeam
,
onTeamMembers
,
onUpdateTeamMember
,
onAddTeamMembers
,
onRemoveTeamMembers
,
onUpdateTeamManagers
,
onDismissTeam
,
onUpdateTeamMembersMute
,
onTeamMsgReceipt
}
from
'./team'
const
SDK
=
require
(
'../../sdk/NIM_Web_SDK_v6.1.0'
)
// 重新初始化 NIM SDK
export
function
initNimSDK
({
state
,
commit
,
dispatch
},
loginInfo
)
{
if
(
state
.
nim
)
{
state
.
nim
.
disconnect
()
}
dispatch
(
'showLoading'
)
// 初始化SDK
window
.
nim
=
state
.
nim
=
SDK
.
NIM
.
getInstance
({
debug
:
false
,
appKey
:
config
.
appkey
,
account
:
loginInfo
.
uid
,
token
:
loginInfo
.
sdktoken
,
db
:
config
.
useDb
,
// logFunc: new SDK.NIM.LoggerPlugin({
// url: '/webdemo/h5/getlogger',
// level: 'info'
// }),
syncSessionUnread
:
true
,
syncRobots
:
true
,
autoMarkRead
:
true
,
// 默认为true
onconnect
:
function
onConnect
(
event
)
{
if
(
loginInfo
)
{
// 连接上以后更新uid
commit
(
'updateUserUID'
,
loginInfo
)
commit
(
'updateNetError'
,
false
)
console
.
log
(
'链接完成......'
)
}
},
onerror
:
function
onError
(
event
)
{
commit
(
'updateNetError'
,
true
)
},
onwillreconnect
:
function
onWillReconnect
()
{
commit
(
'updateNetError'
,
true
)
console
.
log
(
'尝试中.........'
)
},
ondisconnect
:
function
onDisconnect
(
error
)
{
switch
(
error
.
code
)
{
// 账号或者密码错误, 请跳转到登录页面并提示错误
case
302
:
pageUtil
.
turnPage
(
'帐号或密码错误'
,
'login'
)
break
// 被踢, 请提示错误后跳转到登录页面
case
'kicked'
:
let
map
=
{
PC
:
'电脑版'
,
Web
:
'网页版'
,
Android
:
'手机版'
,
iOS
:
'手机版'
,
WindowsPhone
:
'手机版'
}
let
str
=
error
.
from
let
errorMsg
=
`你的帐号于
${
util
.
formatDate
(
new
Date
())}
被
${(
map
[
str
]
||
'其他端'
)}
踢出下线,请确定帐号信息安全!`
pageUtil
.
turnPage
(
errorMsg
,
'login'
)
break
default
:
break
}
},
// // 多端登录
// onloginportschange: onLoginPortsChange,
// 用户关系及好友关系
onblacklist
:
onBlacklist
,
onsyncmarkinblacklist
:
onMarkInBlacklist
,
onmutelist
:
onMutelist
,
onsyncmarkinmutelist
:
onMarkInMutelist
,
onfriends
:
onFriends
,
onsyncfriendaction
:
onSyncFriendAction
,
// 机器人
onrobots
:
onRobots
,
// 用户名片 - actions/userInfo
onmyinfo
:
onMyInfo
,
onupdatemyinfo
:
onMyInfo
,
onusers
:
onUserInfo
,
onupdateuser
:
onUserInfo
,
// // 群组
onteams
:
onTeams
,
onsynccreateteam
:
onSynCreateTeam
,
syncTeams
:
true
,
onteammembers
:
onTeamMembers
,
onCreateTeam
:
onCreateTeam
,
onDismissTeam
:
onDismissTeam
,
onUpdateTeam
:
onUpdateTeam
,
onAddTeamMembers
:
onAddTeamMembers
,
onRemoveTeamMembers
:
onRemoveTeamMembers
,
onUpdateTeamManagers
:
onUpdateTeamManagers
,
onupdateteammember
:
onUpdateTeamMember
,
onUpdateTeamMembersMute
:
onUpdateTeamMembersMute
,
onTeamMsgReceipt
:
onTeamMsgReceipt
,
// // 会话
onsessions
:
onSessions
,
onupdatesession
:
onUpdateSession
,
// // 消息
onroamingmsgs
:
onRoamingMsgs
,
onofflinemsgs
:
onOfflineMsgs
,
onmsg
:
onMsg
,
// // 系统通知
onsysmsg
:
onSysMsg
,
onofflinesysmsgs
:
onSysMsgs
,
onupdatesysmsg
:
onSysMsg
,
// 通过、拒绝好友申请会收到此回调
if
(
state
.
nim
)
{
state
.
nim
.
disconnect
()
}
dispatch
(
'showLoading'
)
// 初始化SDK
window
.
nim
=
state
.
nim
=
SDK
.
NIM
.
getInstance
({
debug
:
false
,
appKey
:
config
.
appkey
,
account
:
loginInfo
.
uid
,
token
:
loginInfo
.
sdktoken
,
db
:
config
.
useDb
,
// logFunc: new SDK.NIM.LoggerPlugin({
// url: '/webdemo/h5/getlogger',
// level: 'info'
// }),
syncSessionUnread
:
true
,
syncRobots
:
true
,
autoMarkRead
:
true
,
// 默认为true
onconnect
:
function
onConnect
(
event
)
{
if
(
loginInfo
)
{
// 连接上以后更新uid
commit
(
'updateUserUID'
,
loginInfo
)
commit
(
'updateNetError'
,
false
)
console
.
log
(
'链接完成......'
)
}
},
onerror
:
function
onError
(
event
)
{
commit
(
'updateNetError'
,
true
)
},
onwillreconnect
:
function
onWillReconnect
()
{
commit
(
'updateNetError'
,
true
)
console
.
log
(
'尝试中.........'
)
},
ondisconnect
:
function
onDisconnect
(
error
)
{
switch
(
error
.
code
)
{
// 账号或者密码错误, 请跳转到登录页面并提示错误
case
302
:
pageUtil
.
turnPage
(
'帐号或密码错误'
,
'login'
)
break
// 被踢, 请提示错误后跳转到登录页面
case
'kicked'
:
let
map
=
{
PC
:
'电脑版'
,
Web
:
'网页版'
,
Android
:
'手机版'
,
iOS
:
'手机版'
,
WindowsPhone
:
'手机版'
}
let
str
=
error
.
from
let
errorMsg
=
`你的帐号于
${
util
.
formatDate
(
new
Date
())}
被
${(
map
[
str
]
||
'其他端'
)}
踢出下线,请确定帐号信息安全!`
pageUtil
.
turnPage
(
errorMsg
,
'login'
)
break
default
:
break
}
},
// // 多端登录
// onloginportschange: onLoginPortsChange,
// 用户关系及好友关系
onblacklist
:
onBlacklist
,
onsyncmarkinblacklist
:
onMarkInBlacklist
,
onmutelist
:
onMutelist
,
onsyncmarkinmutelist
:
onMarkInMutelist
,
onfriends
:
onFriends
,
onsyncfriendaction
:
onSyncFriendAction
,
// 机器人
onrobots
:
onRobots
,
// 用户名片 - actions/userInfo
onmyinfo
:
onMyInfo
,
onupdatemyinfo
:
onMyInfo
,
onusers
:
onUserInfo
,
onupdateuser
:
onUserInfo
,
// // 群组
onteams
:
onTeams
,
onsynccreateteam
:
onSynCreateTeam
,
syncTeams
:
true
,
onteammembers
:
onTeamMembers
,
onCreateTeam
:
onCreateTeam
,
onDismissTeam
:
onDismissTeam
,
onUpdateTeam
:
onUpdateTeam
,
onAddTeamMembers
:
onAddTeamMembers
,
onRemoveTeamMembers
:
onRemoveTeamMembers
,
onUpdateTeamManagers
:
onUpdateTeamManagers
,
onupdateteammember
:
onUpdateTeamMember
,
onUpdateTeamMembersMute
:
onUpdateTeamMembersMute
,
onTeamMsgReceipt
:
onTeamMsgReceipt
,
// // 会话
onsessions
:
onSessions
,
onupdatesession
:
onUpdateSession
,
// // 消息
onroamingmsgs
:
onRoamingMsgs
,
onofflinemsgs
:
onOfflineMsgs
,
onmsg
:
onMsg
,
// // 系统通知
onsysmsg
:
onSysMsg
,
onofflinesysmsgs
:
onSysMsgs
,
onupdatesysmsg
:
onSysMsg
,
// 通过、拒绝好友申请会收到此回调
onsysmsgunread
:
onSysMsgUnread
,
onupdatesysmsgunread
:
onSysMsgUnread
,
onsysmsgunread
:
onSysMsgUnread
,
onupdatesysmsgunread
:
onSysMsgUnread
,
onofflinecustomsysmsgs
:
onCustomSysMsgs
,
oncustomsysmsg
:
onCustomSysMsgs
,
// // 同步完成
onsyncdone
:
function
onSyncDone
()
{
dispatch
(
'hideLoading'
)
// 说明在聊天列表页
if
(
store
.
state
.
currSessionId
)
{
dispatch
(
'setCurrSession'
,
store
.
state
.
currSessionId
)
}
}
})
window
.
nim
.
useDb
=
config
.
useDb
}
onofflinecustomsysmsgs
:
onCustomSysMsgs
,
oncustomsysmsg
:
onCustomSysMsgs
,
// // 同步完成
onsyncdone
:
function
onSyncDone
()
{
dispatch
(
'hideLoading'
)
// 说明在聊天列表页
if
(
store
.
state
.
currSessionId
)
{
dispatch
(
'setCurrSession'
,
store
.
state
.
currSessionId
)
}
},
shouldIgnoreNotification
:
function
(
msg
)
{
let
team
=
msg
.
attach
.
team
if
(
team
[
'name'
]
||
team
[
'intro'
]
||
team
[
'joinMode'
]
||
team
[
'inviteMode'
]
||
team
[
'updateTeamMode'
]
||
team
[
'beInviteMode'
])
{
return
false
}
else
{
return
true
}
}
})
window
.
nim
.
useDb
=
config
.
useDb
}
\ No newline at end of file
src/store/actions/msgs.js
View file @
665ae7bc
...
...
@@ -137,6 +137,8 @@ function onSendMsgDone(error, msg) {
}
})
}
console
.
log
(
'end sdk.........'
)
util
.
getDate
()
onMsg
(
msg
)
}
...
...
@@ -231,6 +233,8 @@ export function sendMsg({ state, commit }, obj) {
done
:
onSendMsgDone
,
needMsgReceipt
:
obj
.
needMsgReceipt
||
false
})
console
.
log
(
'start sdk.........'
)
util
.
getDate
()
break
case
'at'
:
nim
.
sendText
({
...
...
src/utils/index.js
View file @
665ae7bc
This diff is collapsed.
Click to expand it.
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