123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326 |
- 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];
- },
- 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];
- },
- SET_UNHANDLE_FRIEND_APPLICATION_NUM(state, num) {
- state.unHandleFriendApplicationNum = num;
- },
- SET_UNHANDLE_GROUP_APPLICATION_NUM(state, num) {
- state.unHandleGroupApplicationNum = num;
- },
- };
- const actions = {
- async getFriendList({ commit }) {
- 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,
- });
- friendInfoList = [
- ...friendInfoList,
- ...data,
- ];
- offset += count;
- if (data.length < count) break;
- initialFetch = false;
- } catch (error) {
- console.error("getFriendListPage error");
- }
- }
- commit("SET_FRIEND_LIST", friendInfoList);
- },
- async getGrouplist({ commit }) {
- 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 }) {
- IMSDK.asyncApi(IMSDK.IMMethods.GetBlackList, uuidv4()).then(({ data }) => {
- commit("SET_BLACK_LIST", data);
- });
- },
- getRecvFriendApplications({ commit }) {
- IMSDK.asyncApi(
- IMSDK.IMMethods.GetFriendApplicationListAsRecipient,
- uuidv4(),
- ).then(({ data }) => {
- commit("SET_RECV_FRIEND_APPLICATIONS", data);
- });
- },
- getSentFriendApplications({ commit }) {
- IMSDK.asyncApi(
- IMSDK.IMMethods.GetFriendApplicationListAsApplicant,
- uuidv4(),
- ).then(({ data }) => {
- commit("SET_SENT_FRIEND_APPLICATIONS", data);
- });
- },
- getRecvGroupApplications({ commit }) {
- IMSDK.asyncApi(
- IMSDK.IMMethods.GetGroupApplicationListAsRecipient,
- uuidv4(),
- ).then(({ data }) => {
- commit("SET_RECV_GROUP_APPLICATIONS", data);
- });
- },
- getSentGroupApplications({ commit }) {
- 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,
- };
|