|
@@ -21,15 +21,32 @@ export class ActionsService {
|
|
|
this.roomService._userInfo.Role === 'leader'
|
|
|
);
|
|
|
};
|
|
|
+ const isAssistant = async () => {
|
|
|
+ const roomId = socket.data.user?.RoomId;
|
|
|
+ const UserId = socket.data.user?.UserId;
|
|
|
+ if (roomId && UserId) {
|
|
|
+ const user = await this.userService.getUsersBy(roomId, UserId);
|
|
|
+ if (user?.IsAssistant) {
|
|
|
+ return Promise.resolve(true);
|
|
|
+ } else {
|
|
|
+ return Promise.resolve(false);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ return Promise.resolve(false);
|
|
|
+ }
|
|
|
+ };
|
|
|
let roomId = socket.data.user?.RoomId;
|
|
|
+ const assistant = await isAssistant();
|
|
|
+
|
|
|
if (!roomId) {
|
|
|
roomId = this.roomService._userInfo.RoomId;
|
|
|
this.roomService.logger.error(
|
|
|
`当前-socket丟失参数-action::${roomId}`,
|
|
|
'handleAllAction',
|
|
|
);
|
|
|
+ return;
|
|
|
}
|
|
|
-
|
|
|
+ this.roomService.logger.warn(`当前-socket-是否助手::${assistant}`);
|
|
|
this.roomService.logger.warn(
|
|
|
`当前--broadcast:${roomId}, data:${JSON.stringify(data)}action:${data.type
|
|
|
} ,isLeader:${isSocketLeader()}`,
|
|
@@ -48,24 +65,34 @@ export class ActionsService {
|
|
|
case 'users-muted':
|
|
|
const mutedParams = data as any as MutedStateType;
|
|
|
mutedParams.roomId = roomId;
|
|
|
- isSocketLeader() && (await this.handleMutedState(mutedParams));
|
|
|
+
|
|
|
+ if (isSocketLeader() || assistant) {
|
|
|
+ await this.handleMutedState(mutedParams);
|
|
|
+ }
|
|
|
+
|
|
|
await this.roomService.handleRoomStatusAction(socket);
|
|
|
break;
|
|
|
case 'users-words':
|
|
|
const typingParams = data as any as TypingStateType;
|
|
|
typingParams.roomId = roomId;
|
|
|
- isSocketLeader() && (await this.handleTypingState(typingParams));
|
|
|
+
|
|
|
+ if (isSocketLeader() || assistant) {
|
|
|
+ await this.handleTypingState(typingParams);
|
|
|
+ }
|
|
|
this.roomService.handleRoomStatusAction(socket);
|
|
|
await this.roomService.handleRoomStatusAction(socket);
|
|
|
break;
|
|
|
case 'users-kicked':
|
|
|
const kickParams = data as any as KickStateType;
|
|
|
- isSocketLeader() && (await this.handleKickState(socket, kickParams));
|
|
|
+ if (isSocketLeader() || assistant) {
|
|
|
+ await this.handleKickState(socket, kickParams);
|
|
|
+ }
|
|
|
break;
|
|
|
case 'set-assistant':
|
|
|
const assistantParams = data as any as SetAssistantType;
|
|
|
- isSocketLeader() &&
|
|
|
- (await this.handleSetAssitant(socket, assistantParams));
|
|
|
+ if (isSocketLeader() || assistant) {
|
|
|
+ await this.handleSetAssitant(socket, assistantParams);
|
|
|
+ }
|
|
|
break;
|
|
|
default:
|
|
|
break;
|