diff --git a/components/CacheImage/index.vue b/components/CacheImage/index.vue index 01fe16f..8c9f6a9 100644 --- a/components/CacheImage/index.vue +++ b/components/CacheImage/index.vue @@ -45,6 +45,11 @@ created() { this.init(this.src); }, + watch: { + src(newVal) { + this.init(newVal); + }, + }, methods: { init(nv){ const _this = this; diff --git a/pages/conversation/chating/index.vue b/pages/conversation/chating/index.vue index 8af1f5a..fa09e2a 100644 --- a/pages/conversation/chating/index.vue +++ b/pages/conversation/chating/index.vue @@ -361,7 +361,7 @@ if (_this.storeCurrentUserID == data.sendID && diff < 120000) { menu.push('撤回') } - if(_this.isAdmin | _this.isOwner){ + if(_this.isAdmin || _this.isOwner){ menu.push('撤回(管理员功能)') } uni.showActionSheet({ diff --git a/pages/conversation/groupAlbum/groupAlbum.vue b/pages/conversation/groupAlbum/groupAlbum.vue index 820f798..0b35191 100644 --- a/pages/conversation/groupAlbum/groupAlbum.vue +++ b/pages/conversation/groupAlbum/groupAlbum.vue @@ -93,7 +93,7 @@ load_status:"loadmore", param: { groupID: "", - offset: 0, + offset: 999999999999, limit: 10, trace: 1, } @@ -120,9 +120,11 @@ this.getList(true); }, getList(isFirstPage = false) { + this.param.offset = 21; if (isFirstPage === true) { this.list = []; - this.param.offset = 0; + this.param.offset = 20; + this.param.offset = 999999999999; } this.load_status = 'loading'; uni.$u.http.post('/group/album_list', this.param).then(res => { @@ -258,7 +260,8 @@ } }); - if(data.code == 0){ + console.log(result); + if(result.code == 0){ _this.fileList[i].status = 1; _this.list.unshift(result.data); }else{ diff --git a/util/imCommon.js b/util/imCommon.js index 807ba75..ae066c5 100644 --- a/util/imCommon.js +++ b/util/imCommon.js @@ -120,6 +120,11 @@ export const parseMessageByType = (pmsg) => { switch (pmsg.contentType) { case MessageType.TextMessage: return pmsg.textElem.content; + case MessageType.AtTextMessage: + return pmsg.AtElem.text; + //atUsersInfo + //isAtSelf + //isAtAll case MessageType.PictureMessage: return `[图片]`; case MessageType.VoiceMessage: @@ -144,100 +149,40 @@ export const parseMessageByType = (pmsg) => { return `[FaceMessage]`; case MessageType.MarkdownMessage: return `[MarkdownMessage]`; - case MessageType.FriendAdded: - return "你们已经是好友了,开始聊天吧~"; - case MessageType.MemberEnter: - const enterDetails = JSON.parse(pmsg.notificationElem.detail); - const enterUser = enterDetails.entrantUser; - return `${getName(enterUser)}进入了群聊`; - case MessageType.OANotification: - return `[OANotification]`; - case MessageType.GroupCreated: - const groupCreatedDetail = JSON.parse(pmsg.notificationElem.detail); - const groupCreatedUser = groupCreatedDetail.opUser; - return `${getName(groupCreatedUser)}创建了群聊`; - case MessageType.MemberInvited: - const inviteDetails = JSON.parse(pmsg.notificationElem.detail); - const inviteOpUser = inviteDetails.opUser; - const invitedUserList = inviteDetails.invitedUserList ?? []; - let inviteStr = ""; - invitedUserList.find( - (user, idx) => (inviteStr += getName(user) + "、") && idx > 3, - ); - inviteStr = inviteStr.slice(0, -1); - return `${getName(inviteOpUser)}邀请了${inviteStr}${invitedUserList.length > 3 ? "..." : ""}进入群聊`; - - case MessageType.MemberKicked: - const kickDetails = JSON.parse(pmsg.notificationElem.detail); - const kickOpUser = kickDetails.opUser; - const kickdUserList = kickDetails.kickedUserList ?? []; - let kickStr = ""; - kickdUserList.find( - (user, idx) => (kickStr += getName(user) + "、") && idx > 3, - ); - kickStr = kickStr.slice(0, -1); - return `${getName(kickOpUser)}踢出了${kickStr}${kickdUserList.length > 3 ? "..." : ""}`; - case MessageType.GroupMemberMuted: - //群成员禁言通知 - const groupMemberMutedDetail = JSON.parse(pmsg.notificationElem.detail); - return `${getName(groupMemberMutedDetail.opUser)}禁言了${getName(groupMemberMutedDetail.mutedUser)}`; - - case MessageType.GroupMemberCancelMuted: - //取消群成员禁言通知 - const groupMemberCancelMutedDetail = JSON.parse(pmsg.notificationElem.detail); - return `${getName(groupMemberCancelMutedDetail.opUser)}取消了${getName(groupMemberCancelMutedDetail.mutedUser)}的禁言`; - case MessageType.GroupMuted: - //群禁言通知 - const groupGroupMutedDetail = JSON.parse(pmsg.notificationElem.detail); - return `${getName(groupGroupMutedDetail.opUser)}设置了全员禁言`; - case MessageType.GroupCancelMuted: - //取消群禁言通知 - const groupGroupCancelMutedDetail = JSON.parse(pmsg.notificationElem.detail); - return `${getName(groupGroupCancelMutedDetail.opUser)}取消了全员禁言`; - case MessageType.MemberQuit: - const quitDetails = JSON.parse(pmsg.notificationElem.detail); - const quitUser = quitDetails.quitUser; - return `${getName(quitUser)}退出了群聊`; - case MessageType.GroupInfoUpdated: - const groupUpdateDetail = JSON.parse(pmsg.notificationElem.detail); - const groupUpdateUser = groupUpdateDetail.opUser; - return `${getName(groupUpdateUser)}修改了群信息`; - case MessageType.GroupOwnerTransferred: - const transferDetails = JSON.parse(pmsg.notificationElem.detail); - const transferOpUser = transferDetails.opUser; - const newOwner = transferDetails.newGroupOwner; - return `${getName(transferOpUser)}将群主转让给${getName(newOwner)}`; - case MessageType.GroupDismissed: - const dismissDetails = JSON.parse(pmsg.notificationElem.detail); - const dismissUser = dismissDetails.opUser; - return `${getName(dismissUser)}解散了群聊`; - case MessageType.GroupNameUpdated: - const groupNameUpdateDetail = JSON.parse(pmsg.notificationElem.detail); - const groupNameUpdateUser = groupNameUpdateDetail.opUser; - return `${getName(groupNameUpdateUser)}修改了群名称为${groupNameUpdateDetail.group.groupName}`; - case MessageType.GroupAnnouncementUpdated: - //群公告更新 - const groupAnnouncementUpdatedDetail = JSON.parse(pmsg.notificationElem.detail); - return `${getName(groupAnnouncementUpdatedDetail.opUser)}更新了群公告`; - case MessageType.BurnMessageChange: - //阅后即焚开启或关闭通知 - //console.log(pmsg); - return `[BurnMessageChange]`; - case MessageType.RevokeMessage: - let notificationElem = JSON.parse(pmsg.notificationElem.detail); - return `${notificationElem.revokerNickname}撤回了一条消息`; case MessageType.MsgPinned: //消息置顶 return `[MsgPinned]`; + case MessageType.BurnMessageChange: + //阅后即焚开启或关闭通知 + //console.log(pmsg); + return `阅后即焚已经开启`; + case MessageType.OANotification: + return `[OANotification]`; + case MessageType.FriendAdded: + case MessageType.GroupCreated: + case MessageType.GroupInfoUpdated: + case MessageType.MemberQuit: + case MessageType.GroupOwnerTransferred: + case MessageType.MemberKicked: + case MessageType.MemberInvited: + case MessageType.MemberEnter: + case MessageType.GroupMemberMuted: + case MessageType.GroupMemberCancelMuted: + case MessageType.GroupMuted: + case MessageType.GroupCancelMuted: + case MessageType.GroupDismissed: + case MessageType.GroupAnnouncementUpdated: + case MessageType.GroupNameUpdated: + case MessageType.RevokeMessage: case 2001: - const body = JSON.parse(pmsg.notificationElem.detail); - body.data = JSON.parse(body.data); - return parseMessageByType(body.data); + return tipMessaggeFormat(pmsg,store.getters.storeCurrentUserID); default: + //console.log(pmsg); return "[暂未支持的消息类型]"; } }; + export const formatConversionTime = (timestemp) => { const fromNowStr = dayjs(timestemp).fromNow(); @@ -273,62 +218,73 @@ export const bytesToSize = (bytes) => { return (bytes / Math.pow(k, i)).toPrecision(3) + " " + sizes[i]; }; export const tipMessaggeFormat = (msg, currentUserID) => { - const getName = (user) => user.userID === currentUserID ? "你" : user.nickname; + let notificationDetail = {}; + if(msg?.notificationElem?.detail){ + notificationDetail = JSON.parse(msg.notificationElem.detail); + } switch (msg.contentType) { case MessageType.FriendAdded: return `你们已经是好友了~`; case MessageType.GroupCreated: - const groupCreatedDetail = JSON.parse(msg.notificationElem.detail); - const groupCreatedUser = groupCreatedDetail.opUser; - return `${getName(groupCreatedUser)}创建了群聊`; + return `${getName(notificationDetail.opUser)}创建了群聊`; case MessageType.GroupInfoUpdated: - const groupUpdateDetail = JSON.parse(msg.notificationElem.detail); - const groupUpdateUser = groupUpdateDetail.opUser; - return `${getName(groupUpdateUser)}修改了群信息`; - case MessageType.GroupOwnerTransferred: - const transferDetails = JSON.parse(msg.notificationElem.detail); - const transferOpUser = transferDetails.opUser; - const newOwner = transferDetails.newGroupOwner; - return `${getName(transferOpUser)}转让群主给${getName(newOwner)}`; + return `${getName(notificationDetail.opUser)}修改了群信息`; case MessageType.MemberQuit: - const quitDetails = JSON.parse(msg.notificationElem.detail); - const quitUser = quitDetails.quitUser; + const quitUser = notificationDetail.quitUser; return `${getName(quitUser)}退出了群组`; - case MessageType.MemberInvited: - const inviteDetails = JSON.parse(msg.notificationElem.detail); - const inviteOpUser = inviteDetails.opUser; - const invitedUserList = inviteDetails.invitedUserList ?? []; - let inviteStr = ""; - invitedUserList.find( - (user, idx) => (inviteStr += getName(user) + "、") && idx > 3, - ); - inviteStr = inviteStr.slice(0, -1); - return `${getName(inviteOpUser)} 邀请了${inviteStr}${invitedUserList.length > 3 ? "..." : ""}加入群聊`; case MessageType.MemberKicked: - const kickDetails = JSON.parse(msg.notificationElem.detail); - const kickOpUser = kickDetails.opUser; - const kickdUserList = kickDetails.kickedUserList ?? []; + case MessageType.GroupOwnerTransferred: + const transferOpUser = notificationDetail.opUser; + const newOwner = notificationDetail.newGroupOwner; + return `${getName(transferOpUser)}转让群主给${getName(newOwner)}`; + case MessageType.MemberKicked: + const kickOpUser = notificationDetail.opUser; + const kickdUserList = notificationDetail.kickedUserList ?? []; let kickStr = ""; kickdUserList.find( (user, idx) => (kickStr += getName(user) + "、") && idx > 3, ); kickStr = kickStr.slice(0, -1); return `${getName(kickOpUser)} 踢出了${kickStr}${kickdUserList.length > 3 ? "..." : ""}`; + case MessageType.MemberInvited: + const inviteOpUser = notificationDetail.opUser; + const invitedUserList = notificationDetail.invitedUserList ?? []; + let inviteStr = ""; + invitedUserList.find( + (user, idx) => (inviteStr += getName(user) + "、") && idx > 3, + ); + inviteStr = inviteStr.slice(0, -1); + return `${getName(inviteOpUser)} 邀请了${inviteStr}${invitedUserList.length > 3 ? "..." : ""}加入群聊`; case MessageType.MemberEnter: - const enterDetails = JSON.parse(msg.notificationElem.detail); - const enterUser = enterDetails.entrantUser; - return `${getName(enterUser)}加入了群聊`; + return `${getName(notificationDetail.entrantUser)}加入了群聊`; case MessageType.GroupDismissed: - const dismissDetails = JSON.parse(msg.notificationElem.detail); - const dismissUser = dismissDetails.opUser; - return `${getName(dismissUser)}解散了群聊`; + return `${getName(notificationDetail.opUser)}解散了群聊`; + case MessageType.GroupMemberMuted: + return `${getName(notificationDetail.opUser)}禁言了${getName(notificationDetail.mutedUser)}`; + case MessageType.GroupMemberCancelMuted: + return `${getName(notificationDetail.opUser)}取消了${getName(notificationDetail.mutedUser)}的禁言`; + case MessageType.GroupMuted: + return `${getName(notificationDetail.opUser)}设置了全员禁言`; + case MessageType.GroupCancelMuted: + return `${getName(notificationDetail.opUser)}取消了全员禁言`; + case MessageType.GroupAnnouncementUpdated: + return `${getName(notificationDetail.opUser)}更新了群公告`; + case MessageType.GroupNameUpdated: + return `${getName(notificationDetail.opUser)}修改了群名称为${notificationDetail.group.groupName}`; + case MessageType.RevokeMessage: + return `${notificationDetail.revokerNickname}撤回了一条消息`; + case 2001: + let data = JSON.parse(notificationDetail.data); + return parseMessageByType(data); default: - return ""; + console.log(msg.contentType,notificationDetail); + return `[不支持的消息类型: ${msg.contentType}]`; } }; + export const markConversationAsRead = (conversation, fromChating = false) => { if (conversation.unreadCount !== 0) { IMSDK.asyncApi(