fix: channel aside visible while logout

This commit is contained in:
Tristan Yang
2023-04-06 12:21:54 +08:00
parent e2b560a76a
commit 1e9d123338
4 changed files with 28 additions and 13 deletions
+12
View File
@@ -2,6 +2,8 @@ import { createSlice, PayloadAction } from "@reduxjs/toolkit";
import { isNull, omitBy } from "lodash";
import BASE_URL from "../config";
import { Channel, UpdateChannelDTO, UpdatePinnedMessageDTO } from "../../types/channel";
import { resetAuthData } from "./auth.data";
// import { updateVoicingInfo } from "./voice";
type ChannelAside = "members" | "voice" | null;
interface StoredChannel extends Channel {
@@ -117,6 +119,16 @@ const channelsSlice = createSlice({
delete state.byId[gid];
}
}
},
extraReducers: (builder) => {
builder.addCase(resetAuthData, (state) => {
// 如果有aside是voice的,就把它关掉
Object.values(state.byId).forEach((ch) => {
if (ch.visibleAside === "voice") {
ch.visibleAside = null;
}
});
});
}
});
+14
View File
@@ -1,6 +1,7 @@
import { createSlice, PayloadAction } from "@reduxjs/toolkit";
import { KEY_UID } from "../config";
import { ConnectionState } from "agora-rtc-sdk-ng";
import { resetAuthData } from "./auth.data";
export type VoiceBasicInfo = {
context: "channel" | "dm"
@@ -139,6 +140,19 @@ const voiceSlice = createSlice({
}
}
},
extraReducers: (builder) => {
builder.addCase(resetAuthData, (state) => {
// reset voicing info
if (window.VOICE_CLIENT) {
window.VOICE_CLIENT.leave();
}
state.voicing = null;
state.voicingMembers = {
ids: [],
byId: {}
};
});
}
});
export const { updateConnectionState, addVoiceMember, removeVoiceMember, upsertVoiceList, updateVoicingInfo, updateVoicingNetworkQuality, updateMuteStatus, updateVoicingMember, updateDeafenStatus } = voiceSlice.actions;