friends.js
3.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
/*
* 用户关系及好友关系托管
*/
import store from '../'
import { formatUserInfo } from './userInfo'
// 好友关系,回调
export function onFriends (friends) {
friends = friends.map(item => {
if (typeof item.isFriend !== 'boolean') {
item.isFriend = true
}
return item
})
store.commit('updateFriends', friends)
// 更新好友信息字典,诸如昵称
store.commit('updateUserInfo', friends)
}
// 更新好友资料,添加好友成功
export function onUpdateFriend(error, friends) {
if (error) {
alert(error)
return
}
if (!Array.isArray(friends)) {
friends = [friends]
}
friends = friends.map(item => {
if (typeof item.isFriend !== 'boolean') {
item.isFriend = true
}
return item
})
// 补充好友资料
store.dispatch('searchUsers', {
accounts: friends.map(item => {
return item.account
}),
done: (users) => {
const nim = store.state.nim
friends = nim.mergeFriends(friends, users).map(formatUserInfo)
// 更新好友列表
store.commit('updateFriends', friends)
// 更新好友资料
store.commit('updateUserInfo', friends)
}
})
}
// 删除好友,这里使用标记删除
export function onDeleteFriend(error, friends) {
if (error) {
alert(error)
return
}
if (!Array.isArray(friends)) {
friends = [friends]
}
friends = friends.map(item => {
item.isFriend = false
return item
})
// 更新好友列表
store.commit('updateFriends', [], friends)
// 更新好友资料
store.commit('updateUserInfo', friends)
}
export function onSyncFriendAction(obj) {
switch (obj.type) {
case 'addFriend':
// alert('你在其它端直接加了一个好友' + obj.account + ', 附言' + obj.ps);
onUpdateFriend(null, obj.friend);
break;
case 'applyFriend':
// alert('你在其它端申请加了一个好友' + obj.account + ', 附言' + obj.ps);
break;
case 'passFriendApply':
alert('你在其它端通过了一个好友申请' + obj.account + ', 附言' + obj.ps);
onUpdateFriend(null, obj.friend);
break;
case 'rejectFriendApply':
// alert('你在其它端拒绝了一个好友申请' + obj.account + ', 附言' + obj.ps);
break;
case 'deleteFriend':
// alert('你在其它端删了一个好友' + obj.account);
onDeleteFriend(null, {
account: obj.account
});
break;
case 'updateFriend':
// alert('你在其它端更新了一个好友', obj.friend);
onUpdateFriend(null, obj.friend);
break;
}
}
// 更新好友昵称
export function updateFriend ({state, commit}, friend) {
const nim = state.nim
nim.updateFriend({
account: friend.account,
alias: friend.alias,
done: onUpdateFriend
})
}
export function addFriend ({state, commit}, account) {
const nim = state.nim
nim.addFriend({
account,
ps: '',
done: onUpdateFriend
})
}
export function deleteFriend ({state, commit}, account) {
const nim = state.nim
nim.deleteFriend({
account,
done: onDeleteFriend
})
}