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