产品动态
公告
GroupSettingState 是一个功能强大的群聊状态管理中心,专门用于管理群聊的各种设置、成员信息和权限控制。它提供了群聊信息管理、成员操作、权限验证、群聊设置等全方位的功能支持,是构建群聊管理界面的核心工具。字段 | 类型 | 描述 |
groupID | string | undefined | 群组 ID |
groupType | GroupType | undefined | 群组类型 |
groupName | string | undefined | 群组名称 |
avatar | string | undefined | 群组头像 URL |
notification | string | undefined | 群组公告 |
isMuted | boolean | undefined | 是否免打扰 |
isPinned | boolean | undefined | 是否置顶 |
groupOwner | GroupMember | undefined | 群主信息 |
adminMembers | GroupMember[] | 管理员列表 |
allMembers | GroupMember[] | undefined | 所有成员列表 |
memberCount | number | undefined | 当前成员数量 |
maxMemberCount | number | undefined | 最大成员数量 |
currentUserID | string | undefined | 当前用户 ID |
currentUserRole | GroupMemberRole | undefined | 当前用户角色 |
isMuteAllMembers | boolean | undefined | 是否全员禁言 |
isInGroup | boolean | undefined | 当前用户是否在群内 |
inviteOption | GroupInviteType | undefined | 邀请加群方式 |
方法 | 类型 | 描述 |
hasPermission | (permission: GroupPermission, role?: GroupMemberRole, groupType?: GroupType) => boolean | 检查是否具有特定权限 |
方法 | 类型 | 描述 |
getGroupMemberList | (params?: GetGroupMemberListParams) => Promise<IGroupMember[]> | 获取群成员列表 |
updateGroupProfile | (params: UpdateGroupProfileParams) => Promise<void> | 更新群组资料 |
addGroupMember | (params: AddGroupMemberParams) => Promise<IAddGroupMemberResult> | 添加群成员 |
deleteGroupMember | (params: DeleteGroupMemberParams) => Promise<void> | 删除群成员 |
changeGroupOwner | (params: ChangeGroupOwnerParams) => Promise<void> | 转让群主 |
setGroupMemberRole | (params: SetGroupMemberRoleParams) => Promise<void> | 设置成员角色 |
setChatPinned | (value: boolean) => Promise<void> | 设置群聊置顶【Beta】 |
setChatMuted | (value: boolean) => Promise<void> | 设置群聊免打扰【Beta】 |
setGroupMemberMuteTime | (params: SetGroupMemberMuteTimeParams) => Promise<void> | 设置成员禁言时间 |
dismissGroup | (groupID?: string) => Promise<void> | 解散群聊 |
quitGroup | (groupID?: string) => Promise<void> | 退出群聊 |
string | undefinedGroupType | undefinedenum GroupType {WORK,PUBLIC,MEETING,AVCHATROOM,COMMUNITY,}
string | undefinedupdateGroupProfile 方法修改(需要相应权限)。如果为 undefined,则表示当前没有激活的群聊。string | undefinedupdateGroupProfile 方法修改(需要相应权限)。如果为 undefined,则表示当前没有激活的群聊。string | undefinedupdateGroupProfile 方法修改(需要相应权限)。如果为 undefined,则表示当前没有激活的群聊。boolean | undefinedboolean | undefinedGroupMember | undefinedinterface GroupMember {userID: string; // 用户IDnick: string; // 用户昵称avatar: string; // 用户头像URLrole: GroupMemberRole; // 用户角色joinTime: number; // 加入时间戳muteUntil: string; // 禁言截止时间memberCustomField: string; // 成员自定义字段}enum GroupMemberRole {OWNER = 'Owner', // 群主ADMIN = 'Admin', // 群管理COMMON = 'Member', // 群成员}
GroupMember[]GroupMember[] | undefinedgetGroupMemberList 方法获取和更新。number | undefinednumber | undefinedstring | undefinedGroupMemberRole | undefinedenum GroupMemberRole {OWNER = 'OWNER',ADMIN = 'ADMIN',COMMON = 'COMMON'}
boolean | undefinedboolean | undefinedGroupInviteType | undefinedenum GroupInviteType {FREE_ACCESS = 'FREE_ACCESS',NEED_PERMISSION = 'NEED_PERMISSION',DISABLE_APPLY = 'DISABLE_APPLY'}
(permission: GroupPermission, role?: GroupMemberRole, groupType?: GroupType) => booleanenum GroupPermission {EDIT_GROUP_PROFILE_NAME = 'EDIT_GROUP_PROFILE_NAME', // 编辑群名称EDIT_GROUP_PROFILE_AVATAR = 'EDIT_GROUP_PROFILE_AVATAR', // 编辑群头像EDIT_GROUP_PROFILE_NOTIFICATION = 'EDIT_GROUP_PROFILE_NOTIFICATION', // 编辑群公告REMOVE_MEMBER = 'REMOVE_MEMBER', // 移除成员SET_MEMBER_ROLE = 'SET_MEMBER_ROLE', // 设置成员角色MUTE_MEMBER = 'MUTE_MEMBER', // 禁言成员MUTE_ALL_MEMBERS = 'MUTE_ALL_MEMBERS', // 全员禁言TRANSFER_OWNERSHIP = 'TRANSFER_OWNERSHIP', // 转让群主DISMISS_GROUP = 'DISMISS_GROUP', // 解散群聊QUIT_GROUP = 'QUIT_GROUP' // 退出群聊}
(params?: GetGroupMemberListParams) => Promise<GroupMember[]>interface GetGroupMemberListParams {count?: number; // 获取数量,最大100,默认100groupID?: string; // 群组ID,可选role?: string; // 角色筛选,可选offset?: number; // 偏移量,默认0}
(params: UpdateGroupProfileParams) => Promise<void>interface UpdateGroupProfileParams {groupID?: string; // 群组ID,可选name?: string; // 群名称,可选avatar?: string; // 群头像URL,可选introduction?: string; // 群简介,可选notification?: string; // 群公告,可选}
(params: AddGroupMemberParams) => Promise<AddGroupMemberResult>interface AddGroupMemberParams {groupID?: string; // 群组ID,可选userIDList: string[]; // 要添加的用户ID列表}
(params: DeleteGroupMemberParams) => Promise<void>interface DeleteGroupMemberParams {groupID?: string; // 群组ID,可选userIDList: string[]; // 要删除的用户ID列表}
(params: ChangeGroupOwnerParams) => Promise<void>interface ChangeGroupOwnerParams {groupID?: string; // 群组ID,可选newOwnerID: string; // 新群主用户ID}
(params: SetGroupMemberRoleParams) => Promise<void>interface SetGroupMemberRoleParams {groupID?: string; // 群组ID,可选userID: string; // 用户IDrole: GroupMemberRole; // 新角色 [GroupMemberRole.ADMIN, GroupMemberRole.COMMON]}
(value: boolean) => Promise<void>(value: boolean) => Promise<void>(params: SetGroupMemberMuteTimeParams) => Promise<void>interface SetGroupMemberMuteTimeParams {groupID?: string; // 群组ID,可选userID: string; // 用户IDtime: number; // 禁言时间(秒)}
(groupID?: string) => Promise<void>(groupID?: string) => Promise<void>import React, { useState } from 'react';import { useGroupSettingState, GroupPermission } from '@tencentcloud/chat-uikit-react';const GroupSettingPanel = () => {const {groupID,groupName,avatar,memberCount,maxMemberCount,isMuted,isPinned,hasPermission,setChatPinned,setChatMuted,updateGroupProfile,quitGroup,} = useGroupSettingState();const [isEditing, setIsEditing] = useState(false);const [newName, setNewName] = useState(groupName || '');const handleUpdateName = async () => {try {await updateGroupProfile({ name: newName });setIsEditing(false);} catch (error) {console.error('更新失败:', error);}};if (!groupID) return <div>请选择群聊</div>;return (<div className="group-setting">{/* 群聊信息 */}<div className="group-info"><img src={avatar} alt="群头像" className="group-avatar" />{isEditing ? (<div className="edit-form"><inputvalue={newName}onChange={e => setNewName(e.target.value)}className="name-input"/><button onClick={handleUpdateName}>save</button><button onClick={() => setIsEditing(false)}>cancel</button></div>) : (<div className="group-details"><h3>{groupName}</h3><span>member: {memberCount}/{maxMemberCount}</span>{hasPermission(GroupPermission.UPDATE_GROUP_INFO) && (<button onClick={() => setIsEditing(true)}>Edit</button>)}</div>)}</div>{/* 聊天设置 */}<div className="chat-settings"><div className="setting-item"><span>pin conversation</span><inputtype="checkbox"checked={isPinned || false}onChange={e => setChatPinned(e.target.checked)}/></div><div className="setting-item"><span>mute</span><inputtype="checkbox"checked={isMuted || false}onChange={e => setChatMuted(e.target.checked)}/></div></div>{/* 操作按钮 */}<div className="actions"><button onClick={quitGroup} className="danger-btn">Quit Group</button></div></div>);};

import React, { useEffect } from 'react';import { useGroupSettingState, GroupMemberRole, GroupPermission } from '@tencentcloud/chat-uikit-react';const GroupMemberList: React.FC = () => {const {allMembers,hasPermission,getGroupMemberList,setGroupMemberRole,deleteGroupMember,} = useGroupSettingState();useEffect(() => {getGroupMemberList({ count: 50 });}, []);const handlePromote = (userID: string) => {setGroupMemberRole({ userID, role: GroupMemberRole.ADMIN });};const handleRemove = (userID: string) => {deleteGroupMember({ userIDList: [userID] });};return (<div className="member-list">{allMembers?.map(member => (<div key={member.userID} className="member-item"><img src={member.avatar} alt="" className="member-avatar" /><span className="member-name">{member.nick}</span><span className="member-role">{member.role}</span>{hasPermission(GroupPermission.SET_MEMBER_ROLE) && (<div className="member-actions">{member.role === GroupMemberRole.COMMON && (<button onClick={() => handlePromote(member.userID)}>Promote to Admin</button>)}<button onClick={() => handleRemove(member.userID)}>Remove</button></div>)}</div>))}</div>);};

// 基础群聊设置组件样式.group-setting {padding: 20px;background: white;border-radius: 8px;.group-info {display: flex;align-items: center;gap: 15px;margin-bottom: 20px;.group-avatar {width: 60px;height: 60px;border-radius: 50%;object-fit: cover;}.group-details {flex: 1;h3 {margin: 0 0 5px 0;font-size: 18px;}span {color: #666;font-size: 14px;}button {margin-top: 8px;padding: 4px 8px;background: #f0f0f0;border: none;border-radius: 4px;cursor: pointer;}}.edit-form {display: flex;flex-direction: column;gap: 10px;.name-input {padding: 8px;border: 1px solid #ddd;border-radius: 4px;}button {padding: 6px 12px;border: none;border-radius: 4px;cursor: pointer;&:first-child {background: #1890ff;color: white;}&:last-child {background: #f0f0f0;}}}}.chat-settings {margin-bottom: 20px;.setting-item {display: flex;justify-content: space-between;align-items: center;padding: 12px 0;border-bottom: 1px solid #f0f0f0;span {font-size: 14px;}input[type="checkbox"] {width: 20px;height: 20px;}}}.actions {.danger-btn {padding: 10px 20px;background: #ff4d4f;color: white;border: none;border-radius: 4px;cursor: pointer;&:hover {background: #ff7875;}}}}// 成员管理组件样式.member-list {.member-item {display: flex;align-items: center;gap: 12px;padding: 12px;border-bottom: 1px solid #f0f0f0;.member-avatar {width: 40px;height: 40px;border-radius: 50%;object-fit: cover;}.member-name {flex: 1;font-size: 14px;}.member-role {color: #666;font-size: 12px;margin-right: 10px;}.member-actions {display: flex;gap: 8px;button {padding: 4px 8px;font-size: 12px;border: 1px solid #ddd;border-radius: 4px;background: white;cursor: pointer;&:hover {border-color: #1890ff;color: #1890ff;}}}}}
hasPermission 方法控制 UI 显示文档反馈