114 lines
3.8 KiB
JavaScript
114 lines
3.8 KiB
JavaScript
import im from "@/utils/im/index.js"
|
|
|
|
export default {
|
|
state: {
|
|
friends: {},
|
|
sender: {},
|
|
},
|
|
getters: {
|
|
friends(state) {
|
|
return state.friends
|
|
},
|
|
userInfo: (state) => (targetId) => {
|
|
if (state.friends[targetId]) {
|
|
return state.friends[targetId]
|
|
} else {
|
|
console.log('没找到,死循环了,得处理 todo', targetId);
|
|
// im.syncUserInfo(targetId)
|
|
return {
|
|
name: '',
|
|
address: '',
|
|
hash: '',
|
|
portraitUrl: ''
|
|
}
|
|
}
|
|
},
|
|
hasUser: (state) => (targetId) => {
|
|
return Boolean(state.friends[targetId])
|
|
},
|
|
sender(state) {
|
|
return state.sender
|
|
}
|
|
},
|
|
mutations: {
|
|
updateFriends(state, userInfo) {
|
|
Vue.set(state.friends, userInfo.userId, userInfo)
|
|
},
|
|
SET_state_sender(state, userInfo) {
|
|
state.sender = userInfo
|
|
}
|
|
},
|
|
actions: {
|
|
setSenderInfo({
|
|
commit
|
|
}, userInfo) {
|
|
commit('SET_state_sender', userInfo)
|
|
},
|
|
updateFriends({
|
|
commit
|
|
}, userInfo) {
|
|
commit('updateFriends', userInfo)
|
|
const model = uni.model.friendModel
|
|
model.find('userId=' + userInfo.userId, (err, user) => {
|
|
if (!err && user.length == 0) {
|
|
saveAvatar(userInfo, (savedFilePath) => {
|
|
model.insert({
|
|
userId: userInfo.userId,
|
|
name: userInfo.name,
|
|
hash: userInfo.hash,
|
|
address: userInfo.address,
|
|
portraitUrl: savedFilePath,
|
|
}, (err, result) => {})
|
|
userInfo.portraitUrl = savedFilePath
|
|
commit('updateFriends', userInfo)
|
|
})
|
|
} else if (!err && user[0].hash != userInfo.hash) {
|
|
saveAvatar(userInfo, (savedFilePath) => {
|
|
model.update('userId=' + userInfo.userId, {
|
|
name: userInfo.name,
|
|
hash: userInfo.hash,
|
|
portraitUrl: savedFilePath,
|
|
}, (err, result) => {})
|
|
userInfo.portraitUrl = savedFilePath
|
|
commit('updateFriends', userInfo)
|
|
})
|
|
} else if (!err && user[0].portraitUrl.length > 50) {
|
|
saveAvatar(userInfo, (savedFilePath) => {
|
|
model.update('userId=' + userInfo.userId, {
|
|
name: userInfo.name,
|
|
hash: userInfo.hash,
|
|
portraitUrl: savedFilePath,
|
|
}, (err, result) => {})
|
|
|
|
userInfo.portraitUrl = savedFilePath
|
|
commit('updateFriends', userInfo)
|
|
})
|
|
} else {
|
|
console.log('不用操作', user[0]);
|
|
}
|
|
})
|
|
}
|
|
}
|
|
}
|
|
|
|
const saveAvatar = (userInfo, callback) => {
|
|
uni.downloadFile({
|
|
url: userInfo.portraitUrl,
|
|
success: ({
|
|
tempFilePath
|
|
}) => {
|
|
uni.saveFile({
|
|
tempFilePath: tempFilePath,
|
|
success: ({
|
|
savedFilePath
|
|
}) => {
|
|
callback(savedFilePath)
|
|
}
|
|
})
|
|
},
|
|
fail: (err) => {
|
|
console.log('头像保存失败', err);
|
|
}
|
|
})
|
|
}
|