351 lines
8.5 KiB
JavaScript
351 lines
8.5 KiB
JavaScript
import {
|
|
v4 as uuidv4
|
|
} from "uuid";
|
|
import IMSDK from "openim-uniapp-polyfill";
|
|
|
|
const state = {
|
|
friendList: [],
|
|
blackList: [],
|
|
groupList: [],
|
|
recvFriendApplications: [],
|
|
sentFriendApplications: [],
|
|
recvGroupApplications: [],
|
|
sentGroupApplications: [],
|
|
unHandleFriendApplicationNum: 0,
|
|
unHandleGroupApplicationNum: 0,
|
|
};
|
|
|
|
const mutations = {
|
|
SET_FRIEND_LIST(state, list) {
|
|
state.friendList = [...list];
|
|
},
|
|
SET_BLACK_LIST(state, list) {
|
|
state.blackList = [...list];
|
|
},
|
|
SET_GROUP_LIST(state, list) {
|
|
state.groupList = [...list];
|
|
},
|
|
SET_RECV_FRIEND_APPLICATIONS(state, list) {
|
|
state.recvFriendApplications = [...list];
|
|
const count = list.filter((item) => item.handleResult === 0);
|
|
state.unHandleFriendApplicationNum = count.length;
|
|
if(state.unHandleFriendApplicationNum>0){
|
|
uni.setTabBarBadge({
|
|
index:1,
|
|
text:(state.unHandleFriendApplicationNum<100?state.unHandleFriendApplicationNum:'···')+'',
|
|
});
|
|
}else{
|
|
uni.hideTabBarRedDot({
|
|
index:1
|
|
})
|
|
}
|
|
},
|
|
SET_SENT_FRIEND_APPLICATIONS(state, list) {
|
|
state.sentFriendApplications = [...list];
|
|
},
|
|
SET_RECV_GROUP_APPLICATIONS(state, list) {
|
|
state.recvGroupApplications = [...list];
|
|
},
|
|
SET_SENT_GROUP_APPLICATIONS(state, list) {
|
|
state.sentGroupApplications = [...list];
|
|
},
|
|
};
|
|
|
|
const actions = {
|
|
async getFriendList({commit }) {
|
|
//#ifndef APP
|
|
return [];
|
|
//#endif
|
|
let offset = 0;
|
|
let friendInfoList = [];
|
|
let initialFetch = true;
|
|
while (true) {
|
|
try {
|
|
const count = initialFetch ? 10000 : 1000;
|
|
const {data} = await IMSDK.asyncApi("getFriendListPage", uuidv4(), {offset,count,filterBlack:true});
|
|
//console.log(data);
|
|
friendInfoList = [
|
|
...friendInfoList,
|
|
...data,
|
|
];
|
|
offset += count;
|
|
if (data.length < count) break;
|
|
initialFetch = false;
|
|
} catch (error) {
|
|
console.error("getFriendListPage error",error);
|
|
}
|
|
}
|
|
commit("SET_FRIEND_LIST", friendInfoList);
|
|
},
|
|
async getGrouplist({commit}) {
|
|
//#ifndef APP
|
|
return [];
|
|
//#endif
|
|
let offset = 0;
|
|
let groupList = [];
|
|
while (true) {
|
|
try {
|
|
const {
|
|
data
|
|
} = await IMSDK.asyncApi(
|
|
"getJoinedGroupListPage",
|
|
uuidv4(), {
|
|
offset,
|
|
count: 1000,
|
|
}
|
|
);
|
|
groupList = [...groupList, ...data];
|
|
offset += 1000;
|
|
if (data.length < 1000) break;
|
|
} catch (error) {
|
|
console.error("getGrouplist error");
|
|
}
|
|
}
|
|
commit("SET_GROUP_LIST", groupList);
|
|
},
|
|
getBlacklist({commit}) {
|
|
//#ifndef APP
|
|
return [];
|
|
//#endif
|
|
IMSDK.asyncApi(IMSDK.IMMethods.GetBlackList, uuidv4()).then(({
|
|
data
|
|
}) => {
|
|
commit("SET_BLACK_LIST", data);
|
|
});
|
|
},
|
|
getRecvFriendApplications({commit}) {
|
|
//#ifndef APP
|
|
return [];
|
|
//#endif
|
|
IMSDK.asyncApi(
|
|
IMSDK.IMMethods.GetFriendApplicationListAsRecipient,
|
|
uuidv4(),
|
|
).then(({
|
|
data
|
|
}) => {
|
|
commit("SET_RECV_FRIEND_APPLICATIONS", data);
|
|
});
|
|
},
|
|
getSentFriendApplications({ commit }) {
|
|
//#ifndef APP
|
|
return [];
|
|
//#endif
|
|
IMSDK.asyncApi(
|
|
IMSDK.IMMethods.GetFriendApplicationListAsApplicant,
|
|
uuidv4(),
|
|
).then(({
|
|
data
|
|
}) => {
|
|
commit("SET_SENT_FRIEND_APPLICATIONS", data);
|
|
});
|
|
},
|
|
getRecvGroupApplications({ commit }) {
|
|
//#ifndef APP
|
|
return [];
|
|
//#endif
|
|
IMSDK.asyncApi(
|
|
IMSDK.IMMethods.GetGroupApplicationListAsRecipient,
|
|
uuidv4(),
|
|
).then(({
|
|
data
|
|
}) => {
|
|
commit("SET_RECV_GROUP_APPLICATIONS", data);
|
|
});
|
|
},
|
|
getSentGroupApplications({ commit }) {
|
|
//#ifndef APP
|
|
return [];
|
|
//#endif
|
|
IMSDK.asyncApi(
|
|
IMSDK.IMMethods.GetGroupApplicationListAsApplicant,
|
|
uuidv4(),
|
|
).then(({
|
|
data
|
|
}) => {
|
|
commit("SET_SENT_GROUP_APPLICATIONS", data);
|
|
});
|
|
},
|
|
pushNewFriend({ commit, state}, friendInfo) {
|
|
const tmpList = [...state.friendList];
|
|
const idx = tmpList.findIndex((item) => item.userID === friendInfo.userID);
|
|
if (idx === -1) {
|
|
commit("SET_FRIEND_LIST", [...tmpList, friendInfo]);
|
|
}
|
|
},
|
|
updateFriendInfo({commit,state}, { friendInfo,isRemove = false}) {
|
|
const tmpList = [...state.friendList];
|
|
const idx = tmpList.findIndex((item) => item.userID === friendInfo.userID);
|
|
|
|
if (idx !== -1) {
|
|
if (isRemove) {
|
|
tmpList.splice(idx, 1);
|
|
} else {
|
|
tmpList[idx] = {
|
|
...friendInfo,
|
|
};
|
|
}
|
|
commit("SET_FRIEND_LIST", tmpList);
|
|
}
|
|
},
|
|
pushNewBlack({ commit, state}, blackInfo) {
|
|
const tmpList = [...state.blackList];
|
|
const idx = tmpList.findIndex((item) => item.userID === blackInfo.userID);
|
|
if (idx === -1) {
|
|
commit("SET_BLACK_LIST", [...tmpList, blackInfo]);
|
|
}
|
|
},
|
|
updateBlackInfo({commit,state}, {blackInfo,isRemove = false}) {
|
|
const tmpList = [...state.blackList];
|
|
const idx = tmpList.findIndex((item) => item.userID === blackInfo.userID);
|
|
|
|
if (idx !== -1) {
|
|
if (isRemove) {
|
|
tmpList.splice(idx, 1);
|
|
} else {
|
|
tmpList[idx] = {
|
|
...blackInfo,
|
|
};
|
|
}
|
|
commit("SET_BLACK_LIST", tmpList);
|
|
}
|
|
},
|
|
pushNewGroup({commit,state}, groupInfo) {
|
|
const tmpList = [...state.groupList];
|
|
const idx = tmpList.findIndex((item) => item.groupID === groupInfo.groupID);
|
|
if (idx === -1) {
|
|
commit("SET_GROUP_LIST", [...tmpList, groupInfo]);
|
|
}
|
|
},
|
|
updateGroupInfo({commit,state,rootState}, {groupInfo,isRemove = false}, ) {
|
|
const tmpList = [...state.groupList];
|
|
const idx = tmpList.findIndex((item) => item.groupID === groupInfo.groupID);
|
|
|
|
if (rootState.conversation.currentGroup.groupID === groupInfo.groupID) {
|
|
commit("conversation/SET_CURRENT_GROUP", groupInfo, {
|
|
root: true
|
|
});
|
|
}
|
|
|
|
if (idx !== -1) {
|
|
if (isRemove) {
|
|
tmpList.splice(idx, 1);
|
|
} else {
|
|
tmpList[idx] = {
|
|
...groupInfo,
|
|
};
|
|
}
|
|
commit("SET_GROUP_LIST", tmpList);
|
|
}
|
|
},
|
|
pushNewRecvFriendApplition({commit,state}, application) {
|
|
const tmpList = [...state.recvFriendApplications];
|
|
const idx = tmpList.findIndex(
|
|
(item) => item.fromUserID === application.fromUserID,
|
|
);
|
|
if (idx !== -1) {
|
|
tmpList.splice(idx, 1);
|
|
}
|
|
commit("SET_RECV_FRIEND_APPLICATIONS", [...tmpList, application]);
|
|
},
|
|
updateRecvFriendApplition({commit,state,rootState}, {application,isRemove = false}, ) {
|
|
const tmpList = [...state.recvFriendApplications];
|
|
const idx = tmpList.findIndex(
|
|
(item) => item.fromUserID === application.fromUserID,
|
|
);
|
|
|
|
if (idx !== -1) {
|
|
if (isRemove) {
|
|
tmpList.splice(idx, 1);
|
|
} else {
|
|
tmpList[idx] = {
|
|
...application,
|
|
};
|
|
}
|
|
commit("SET_RECV_FRIEND_APPLICATIONS", tmpList);
|
|
}
|
|
},
|
|
pushNewSentFriendApplition({commit,state}, application) {
|
|
const tmpList = [...state.sentFriendApplications];
|
|
const idx = tmpList.findIndex(
|
|
(item) => item.toUserID === application.toUserID,
|
|
);
|
|
if (idx !== -1) {
|
|
tmpList.splice(idx, 1);
|
|
}
|
|
commit("SET_SENT_FRIEND_APPLICATIONS", [...tmpList, application]);
|
|
},
|
|
updateSentFriendApplition({commit,state,rootState}, {application,isRemove = false}, ) {
|
|
const tmpList = [...state.sentFriendApplications];
|
|
const idx = tmpList.findIndex(
|
|
(item) => item.toUserID === application.toUserID,
|
|
);
|
|
|
|
if (idx !== -1) {
|
|
if (isRemove) {
|
|
tmpList.splice(idx, 1);
|
|
} else {
|
|
tmpList[idx] = {
|
|
...application,
|
|
};
|
|
}
|
|
commit("SET_SENT_FRIEND_APPLICATIONS", tmpList);
|
|
}
|
|
},
|
|
pushNewRecvGroupApplition({commit,state}, application) {
|
|
const tmpList = [...state.recvGroupApplications];
|
|
const idx = tmpList.findIndex((item) => item.userID === application.userID);
|
|
if (idx !== -1) {
|
|
tmpList.splice(idx, 1);
|
|
}
|
|
commit("SET_RECV_GROUP_APPLICATIONS", [...tmpList, application]);
|
|
},
|
|
updateRecvGroupApplition({commit,state,rootState}, {application,isRemove = false}, ) {
|
|
const tmpList = [...state.recvGroupApplications];
|
|
const idx = tmpList.findIndex((item) => item.userID === application.userID);
|
|
|
|
if (idx !== -1) {
|
|
if (isRemove) {
|
|
tmpList.splice(idx, 1);
|
|
} else {
|
|
tmpList[idx] = {
|
|
...application,
|
|
};
|
|
}
|
|
commit("SET_RECV_GROUP_APPLICATIONS", tmpList);
|
|
}
|
|
},
|
|
pushNewSentGroupApplition({commit,state}, application) {
|
|
const tmpList = [...state.sentGroupApplications];
|
|
const idx = tmpList.findIndex(
|
|
(item) => item.groupID === application.groupID,
|
|
);
|
|
if (idx !== -1) {
|
|
tmpList.splice(idx, 1);
|
|
}
|
|
commit("SET_SENT_GROUP_APPLICATIONS", [...tmpList, application]);
|
|
},
|
|
updateSentGroupApplition({commit,state,rootState}, {application,isRemove = false}, ) {
|
|
const tmpList = [...state.sentGroupApplications];
|
|
const idx = tmpList.findIndex(
|
|
(item) => item.groupID === application.groupID,
|
|
);
|
|
|
|
if (idx !== -1) {
|
|
if (isRemove) {
|
|
tmpList.splice(idx, 1);
|
|
} else {
|
|
tmpList[idx] = {
|
|
...application,
|
|
};
|
|
}
|
|
commit("SET_SENT_GROUP_APPLICATIONS", tmpList);
|
|
}
|
|
},
|
|
};
|
|
|
|
export default {
|
|
namespaced: true,
|
|
state,
|
|
mutations,
|
|
actions,
|
|
}; |