Release Notes
Announcements
GroupSettingState is a powerful group chat status management center, specialized in managing group chat settings, member information, and permission control. It provides comprehensive feature support for group chat information management, member operations, access verification, and group chat settings, making it a core tool for building a group chat management interface.Field | Type | Description |
groupID | string | undefined | GroupId |
groupType | GroupType | undefined | Group Type |
groupName | string | undefined | group name |
avatar | string | undefined | Group Avatar URL |
notification | string | undefined | group notice |
isMuted | boolean | undefined | Do not disturb |
isPinned | boolean | undefined | Pin to top |
groupOwner | GroupMember | undefined | group owner info |
adminMembers | GroupMember[] | administrator list |
allMembers | GroupMember[] | undefined | member list |
memberCount | number | undefined | member count |
maxMemberCount | number | undefined | maximum number of members |
currentUserID | string | undefined | Current user ID |
currentUserRole | GroupMemberRole | undefined | User Role |
isMuteAllMembers | boolean | undefined | Whether to mute all members |
isInGroup | boolean | undefined | Whether the current user is in the group |
inviteOption | GroupInviteType | undefined | Invitation method to join group |
Methodology | Type | Description |
hasPermission | (permission: GroupPermission, role?: GroupMemberRole, groupType?: GroupType) => boolean | Check whether specific permission is required |
Methodology | Type | Description |
getGroupMemberList | (params?: GetGroupMemberListParams) => Promise<IGroupMember[]> | Get group member list |
updateGroupProfile | (params: UpdateGroupProfileParams) => Promise<void> | Update group profile |
addGroupMember | (params: AddGroupMemberParams) => Promise<IAddGroupMemberResult> | Add group member |
deleteGroupMember | (params: DeleteGroupMemberParams) => Promise<void> | Delete group member |
changeGroupOwner | (params: ChangeGroupOwnerParams) => Promise<void> | transfer group ownership |
setGroupMemberRole | (params: SetGroupMemberRoleParams) => Promise<void> | Set member role |
setChatPinned | (value: boolean) => Promise<void> | Pin group chat to top [Beta] |
setChatMuted | (value: boolean) => Promise<void> | Mute group chat notifications [Beta] |
setGroupMemberMuteTime | (params: SetGroupMemberMuteTimeParams) => Promise<void> | Set member mute duration |
dismissGroup | (groupID?: string) => Promise<void> | Disband group chat |
quitGroup | (groupID?: string) => Promise<void> | Quit group chat |
string | undefinedGroupType | undefinedenum GroupType {WORK,PUBLIC,MEETING,AVCHATROOM,COMMUNITY,}
string | undefinedupdateGroupProfile method (corresponding permissions required). If it is undefined, it means that currently none is active.string | undefinedupdateGroupProfile method (corresponding permissions required). If it is undefined, it means that currently none is active.string | undefinedupdateGroupProfile method (corresponding permissions required). If it is undefined, it means that currently none is active.boolean | undefinedboolean | undefinedGroupMember | undefinedinterface GroupMember {userID: string; // userIDnick: string; // user nicknameavatar: string; // user Avatar URLrole: GroupMemberRole; // user rolejoinTime: number; // join timemuteUntil: string; // mute period expire timememberCustomField: string; // member custom field}enum GroupMemberRole {OWNER = 'Owner', // group ownerADMIN = 'Admin', // group adminCOMMON = 'Member', // group member}
GroupMember[]GroupMember[] | undefinedgetGroupMemberList method.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 nameEDIT_GROUP_PROFILE_AVATAR = 'EDIT_GROUP_PROFILE_AVATAR', // Edit group avatarEDIT_GROUP_PROFILE_NOTIFICATION = 'EDIT_GROUP_PROFILE_NOTIFICATION', // Edit group noticeREMOVE_MEMBER = 'REMOVE_MEMBER', // Remove memberSET_MEMBER_ROLE = 'SET_MEMBER_ROLE', // Set member roleMUTE_MEMBER = 'MUTE_MEMBER', // Mute memberMUTE_ALL_MEMBERS = 'MUTE_ALL_MEMBERS', // Room-wide muteTRANSFER_OWNERSHIP = 'TRANSFER_OWNERSHIP', // Transfer group ownershipDISMISS_GROUP = 'DISMISS_GROUP', // Disband group chatQUIT_GROUP = 'QUIT_GROUP' // Quit group chat}
(params?: GetGroupMemberListParams) => Promise<GroupMember[]>interface GetGroupMemberListParams {count?: number; // Number to get, maximum 100, default 100groupID?: string; // Group ID, optionalrole?: string; // Role filter, optionaloffset?: number; // Offset, default 0}
(params: UpdateGroupProfileParams) => Promise<void>interface UpdateGroupProfileParams {groupID?: string; // Group ID, optionalname?: string; // Group name, optionalavatar?: string; // Group Avatar URL, optionalintroduction?: string; // Group introduction, optionalnotification?: string; // Group notice, optional}
(params: AddGroupMemberParams) => Promise<AddGroupMemberResult>interface AddGroupMemberParams {groupID?: string; // Group ID, optionaluserIDList: string[]; // List of user IDs to add}
(params: DeleteGroupMemberParams) => Promise<void>interface DeleteGroupMemberParams {groupID?: string; // Group ID, optionaluserIDList: string[]; // List of user IDs to be deleted}
(params: ChangeGroupOwnerParams) => Promise<void>interface ChangeGroupOwnerParams {groupID?: string; // Group ID, optionalnewOwnerID: string; // New group owner user ID}
(params: SetGroupMemberRoleParams) => Promise<void>interface SetGroupMemberRoleParams {groupID?: string; // Group ID, optionaluserID: string; // userIdrole: GroupMemberRole; // new role [GroupMemberRole.ADMIN, GroupMemberRole.COMMON]}
(value: boolean) => Promise<void>(value: boolean) => Promise<void>(params: SetGroupMemberMuteTimeParams) => Promise<void>interface SetGroupMemberMuteTimeParams {groupID?: string; // Group ID, optionaluserID: string; // uidtime: number; // mute duration (seconds)}
(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('update failed:', error);}};if (!groupID) return <div>Select group</div>;return (<div className="group-setting">{/* Group chat info */}<div className="group-info"><img src={avatar} alt="group avatar" 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>{/* chat settings */}<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>{/* action button */}<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>);};

// Basic Group Chat Settings Component Style.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 Management Component style.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 method to control UI displayWas this page helpful?
You can also Contact sales or Submit a Ticket for help.
Help us improve! Rate your documentation experience in 5 mins.
Feedback