refactor(window): 优化悬浮列表窗口的创建和关闭逻辑
- 简化 close_float_list_window 命令的返回值处理 - 清理 create_float_list_window_impl 中的多余空行 - 修复悬浮列表组件中全员静音状态的变量引用 - 移除样式文件中的多余空行 - 更新教师端会议页面中组件卸载生命周期为 onBeforeUnmount - 在会议结束时确保关闭悬浮列表窗口 - 简化 Vite 配置中 VueDevTools 的配置选项
This commit is contained in:
@ -15,8 +15,7 @@ pub async fn create_float_list_window(app: AppHandle, is_teacher_muted: bool) ->
|
||||
/// 关闭悬浮列表窗口
|
||||
#[tauri::command]
|
||||
pub fn close_float_list_window(app: AppHandle) -> Result<String, String> {
|
||||
close_float_list_window_impl(std::sync::Arc::new(app))
|
||||
.map(|_| "success".to_string())
|
||||
close_float_list_window_impl(std::sync::Arc::new(app)).map(|_| "success".to_string())
|
||||
}
|
||||
|
||||
/// 创建弹出框窗口
|
||||
|
||||
@ -7,7 +7,7 @@
|
||||
<!-- 会议控制按钮 -->
|
||||
<div class="menu-item" @click="muteAllStudents()">
|
||||
<div class="icon-wrapper">
|
||||
<icon-mdi-volume-high v-if="!isMuted" class="menu-icon"></icon-mdi-volume-high>
|
||||
<icon-mdi-volume-high v-if="!isAllMuted" class="menu-icon"></icon-mdi-volume-high>
|
||||
<icon-mdi-volume-off v-else class="menu-icon muted"></icon-mdi-volume-off>
|
||||
</div>
|
||||
<span class="menu-text" :class="{ 'text-muted': isAllMuted }">全员静音</span>
|
||||
|
||||
@ -69,8 +69,6 @@ button:disabled {
|
||||
opacity: 0.6;
|
||||
}
|
||||
|
||||
|
||||
|
||||
fieldset {
|
||||
padding: 0.35em 0.75em 0.625em;
|
||||
}
|
||||
|
||||
@ -181,7 +181,7 @@
|
||||
import IconMdiVolumeHigh from '~icons/mdi/volume-high';
|
||||
import IconMdiVolumeOff from '~icons/mdi/volume-off';
|
||||
import { ElIcon, ElMessageBox, ElMessage as Toast } from 'element-plus';
|
||||
import { computed, onMounted, onUnmounted, ref, watchEffect } from 'vue';
|
||||
import { computed, onBeforeUnmount, onMounted, ref, watchEffect } from 'vue';
|
||||
import { useRoute, useRouter } from 'vue-router';
|
||||
import { useStreamType } from './useStreamType';
|
||||
import { usePermissions } from './usePermissions';
|
||||
@ -1001,6 +1001,7 @@
|
||||
role.value = String(route.query.role) === 'student' ? 'student' : 'teacher';
|
||||
|
||||
try {
|
||||
await closeFloatListWindow();
|
||||
// 使用 Hook 加入 WebSocket 房间获取房间数据
|
||||
const roomData = await meetingSocket.joinRoom(socket);
|
||||
// 设置房间 ID(用于权限管理中的控制消息发送)
|
||||
@ -1041,10 +1042,7 @@
|
||||
/**
|
||||
* 组件卸载生命周期钩子
|
||||
*/
|
||||
onUnmounted(async () => {
|
||||
if (isLeaving) {
|
||||
return;
|
||||
}
|
||||
onBeforeUnmount(async () => {
|
||||
socket.off('message', onSocketMessage);
|
||||
// 关闭悬浮窗
|
||||
await closeFloatListWindow();
|
||||
|
||||
@ -37,9 +37,7 @@ export default defineConfig(async ({ command }: ConfigEnv): Promise<UserConfig>
|
||||
base: './', // 基础路径
|
||||
|
||||
plugins: [
|
||||
VueDevTools({
|
||||
appendTo: 'index.html',
|
||||
}),
|
||||
VueDevTools({}),
|
||||
|
||||
Vue({}),
|
||||
// 自动导入API
|
||||
|
||||
Reference in New Issue
Block a user