jiuyiUniapp/jiuyi/node_modules/@tencentcloud/chat-uikit-uniapp/components/TUIContact/contact-info/contact-info-config.ts

202 lines
5.6 KiB
TypeScript
Raw Normal View History

2024-12-18 15:46:27 +08:00
import { TUIStore, StoreName } from '@tencentcloud/chat-uikit-engine';
import {
CONTACT_INFO_LABEL_POSITION,
CONTACT_INFO_MORE_EDIT_TYPE,
CONTACT_INFO_BUTTON_TYPE,
} from '../../../constant';
import {
updateFriendRemark,
deleteFriend,
enterConversation,
quitGroup,
dismissGroup,
joinGroup,
addFriend,
acceptFriendApplication,
refuseFriendApplication,
addToBlacklist,
removeFromBlacklist,
} from '../utils/index';
export const contactMoreInfoConfig = {
// set friends' remark
setRemark: {
key: 'setRemark',
label: '备注名',
data: '',
labelPosition: CONTACT_INFO_LABEL_POSITION.LEFT,
editable: true,
editType: CONTACT_INFO_MORE_EDIT_TYPE.INPUT,
editing: false,
editSubmitHandler: (props: {
item: any;
contactInfoData: any;
[propsName: string]: any;
}) => {
if (props?.isBothFriend) {
const newRemarkValue = props?.item?.data;
updateFriendRemark(props?.contactInfoData?.userID, newRemarkValue);
props?.item?.editing && (props.item.editing = false);
props?.item?.data && (props.item.data = props?.contactInfoData?.remark);
} else {
props?.item?.editing && (props.item.editing = false);
}
},
},
// blocked list
blackList: {
key: 'blackList',
label: '加入黑名单',
data: false,
labelPosition: CONTACT_INFO_LABEL_POSITION.LEFT,
editable: true,
editType: CONTACT_INFO_MORE_EDIT_TYPE.SWITCH,
editing: true,
editSubmitHandler: (props: {
item: any;
contactInfoData: any;
[propsName: string]: any;
}) => {
if (props?.isInBlackList) {
removeFromBlacklist(props?.contactInfoData?.userID);
} else {
addToBlacklist(props?.contactInfoData?.userID);
TUIStore.update(StoreName.CUSTOM, 'currentContactListKey', 'blackList');
}
},
},
// Fill in verification words (applicant)
setWords: {
key: 'setWords',
label: '请填写验证信息',
data: '',
labelPosition: CONTACT_INFO_LABEL_POSITION.TOP,
editable: true,
editType: CONTACT_INFO_MORE_EDIT_TYPE.TEXTAREA,
editing: true,
},
// Display verification words (application recipient)
displayWords: {
key: 'displayWords',
label: '验证信息',
data: '',
labelPosition: CONTACT_INFO_LABEL_POSITION.LEFT,
editable: false,
},
};
export const contactButtonConfig = {
// ---------------------
// group command config
// ---------------------
dismissGroup: {
key: 'dismissGroup',
label: '解散群聊',
type: CONTACT_INFO_BUTTON_TYPE.CANCEL,
onClick: (props: { contactInfoData: any; [propsName: string]: any }) => {
dismissGroup(props?.contactInfoData?.groupID);
},
},
quitGroup: {
key: 'quitGroup',
label: '退出群聊',
type: CONTACT_INFO_BUTTON_TYPE.CANCEL,
onClick: (props: { contactInfoData: any; [propsName: string]: any }) => {
quitGroup(props?.contactInfoData?.groupID);
},
},
joinGroup: {
key: 'joinGroup',
label: '发送申请',
type: CONTACT_INFO_BUTTON_TYPE.SUBMIT,
onClick: (props: {
contactInfoData: any;
contactInfoMoreList: any;
[propsName: string]: any;
}) => {
joinGroup(
props?.contactInfoData?.groupID,
props?.contactInfoMoreList[0]?.data,
);
},
},
joinAVChatGroup: {
key: 'joinAVChatGroup',
label: '加入直播群',
type: CONTACT_INFO_BUTTON_TYPE.SUBMIT,
onClick: (props: {
contactInfoData: any;
contactInfoMoreList: any;
[propsName: string]: any;
}) => {
joinGroup(props?.contactInfoData?.groupID);
},
},
enterGroupConversation: {
key: 'enterGroupConversation',
label: '进入群聊',
type: CONTACT_INFO_BUTTON_TYPE.SUBMIT,
onClick: (props: { contactInfoData: any; [propsName: string]: any }) => {
enterConversation(props?.contactInfoData);
},
},
// ---------------------
// friend command config
// ---------------------
addFriend: {
key: 'addFriend',
label: '发送申请',
type: CONTACT_INFO_BUTTON_TYPE.SUBMIT,
onClick: (props: {
contactInfoData: any;
contactInfoMoreList: any;
[propsName: string]: any;
}) => {
addFriend({
to: props?.contactInfoData?.userID,
source: 'AddSource_Type_Web',
remark: props?.contactInfoMoreList[1]?.data,
wording: props?.contactInfoMoreList[0]?.data,
});
},
},
deleteFriend: {
key: 'deleteFriend',
label: '删除好友',
type: CONTACT_INFO_BUTTON_TYPE.CANCEL,
onClick: (props: { contactInfoData: any; [propsName: string]: any }) => {
deleteFriend(props?.contactInfoData?.userID);
},
},
enterC2CConversation: {
key: 'enterC2CConversation',
label: '发送消息',
type: CONTACT_INFO_BUTTON_TYPE.SUBMIT,
onClick: (props: { contactInfoData: any; [propsName: string]: any }) => {
enterConversation(props?.contactInfoData);
},
},
// ---------------------
// friend application command config
// ---------------------
acceptFriendApplication: {
key: 'acceptFriendApplication',
label: '同意',
type: CONTACT_INFO_BUTTON_TYPE.SUBMIT,
onClick: (props: { contactInfoData: any; [propsName: string]: any }) => {
acceptFriendApplication(props?.contactInfoData?.userID);
TUIStore.update(StoreName.CUSTOM, 'currentContactListKey', 'friendList');
},
},
refuseFriendApplication: {
key: 'refuseFriendApplication',
label: '拒绝',
type: CONTACT_INFO_BUTTON_TYPE.CANCEL,
onClick: (props: { contactInfoData: any; [propsName: string]: any }) => {
refuseFriendApplication(props?.contactInfoData?.userID);
},
},
};