feat: 更新依赖项和配置,添加新通知类型

- 在 package.json 中添加了 @types/md5 和 @vueuse/integrations 依赖。
- 更新了 tsconfig.json 中的模块解析方式为 bundler。
- 在组件声明中移除了不再使用的 Naive UI 组件。
- 在弹幕窗口和设置中添加了启用动画的选项,并更新了相关样式。
- 实现了私信发送失败的通知功能,增强了用户体验。
This commit is contained in:
2025-04-19 22:29:09 +08:00
parent 521cd1eddf
commit 630fe45b47
51 changed files with 5067 additions and 1690 deletions

View File

@@ -47,11 +47,15 @@ export const useDanmakuClient = defineStore('DanmakuClient', () => {
console.warn("[DanmakuClient] 尝试在客户端初始化之前调用 'onEvent'。");
return;
}
if (eventName === 'all') {
// 对于 'all' 事件, 直接使用 AllEventListener 类型
danmakuClient.value.eventsAsModel[eventName].push(listener as AllEventListener);
} else {
danmakuClient.value.eventsAsModel[eventName].push(listener);
try {
if (eventName === 'all') {
// 对于 'all' 事件, 直接使用 AllEventListener 类型
danmakuClient.value.eventsAsModel[eventName].push(listener as AllEventListener);
} else {
danmakuClient.value.eventsAsModel[eventName].push(listener);
}
} catch (error) {
console.error(`[DanmakuClient] 注册事件监听器: ${eventName} 失败: ${error}`);
}
}
@@ -185,8 +189,14 @@ export const useDanmakuClient = defineStore('DanmakuClient', () => {
console.log('[DanmakuClient] 开始初始化...');
const oldEventsAsModel = danmakuClient.value?.eventsAsModel;
const oldEventsRaw = danmakuClient.value?.eventsRaw;
let oldEventsAsModel = danmakuClient.value?.eventsAsModel;
let oldEventsRaw = danmakuClient.value?.eventsRaw;
if (!oldEventsAsModel || Object.keys(oldEventsAsModel).length === 0) {
oldEventsAsModel = client.createEmptyEventModelListeners();
}
if (!oldEventsRaw || Object.keys(oldEventsRaw).length === 0) {
oldEventsRaw = client.createEmptyRawEventlisteners();
}
// 先停止并清理旧客户端 (如果存在)
if (danmakuClient.value) {
@@ -194,14 +204,13 @@ export const useDanmakuClient = defineStore('DanmakuClient', () => {
if (danmakuClient.value.state === 'connected') {
await disposeClientInstance(danmakuClient.value);
}
danmakuClient.value = undefined; // 显式清除旧实例引用
}
// 设置新的客户端实例
danmakuClient.value = client;
// 确保新客户端有空的监听器容器 (BaseDanmakuClient 应负责初始化)
danmakuClient.value.eventsAsModel = oldEventsAsModel || client.createEmptyEventModelListeners();
danmakuClient.value.eventsRaw = oldEventsRaw || client.createEmptyRawEventlisteners();
danmakuClient.value.eventsAsModel = oldEventsAsModel;
danmakuClient.value.eventsRaw = oldEventsRaw;
// 通常在 client 实例化或 Start 时处理,或者在 attachListenersToClient 中确保存在