优化完成

This commit is contained in:
2026-04-25 21:09:45 +08:00
parent bcd55f9dac
commit d48ce78c03
10 changed files with 707 additions and 569 deletions

View File

@@ -5,6 +5,9 @@
import { showNotification, generateId } from './utils.js';
import store from './store.js';
import { mockMessages } from './models.js';
const MAX_IMAGE_SIZE = 5 * 1024 * 1024; // 5MB
// 消息相关的状态管理方法
let messageState = {
messages: [...mockMessages],
@@ -19,7 +22,7 @@ let listeners = [];
* @param {Function} callback - 回调函数
* @returns {Function} 取消订阅的函数
*/
export function subscribe(callback) {
function subscribe(callback) {
listeners.push(callback);
return () => {
listeners = listeners.filter(cb => cb !== callback);
@@ -38,7 +41,7 @@ function notify(changes) {
* 添加消息
* @param {Object} message - 消息对象
*/
export function addMessage (message) {
function addMessage (message) {
messageState.messages.push(message);
// 如果侧边栏关闭且不是自己发的,增加未读
@@ -55,7 +58,7 @@ export function addMessage (message) {
* @param {Object} message - 消息对象
* @param {Object} renderstreaming - WebRTC连接管理实例
*/
export function sendChatMessage(message) {
function sendChatMessage(message) {
if (store.getRenderStreaming()) {
store.getRenderStreaming().sendMessage({
type: 'chat-message',
@@ -68,7 +71,7 @@ export function sendChatMessage(message) {
* 处理接收到的聊天消息
* @param {Object} data - 消息数据
*/
export function handleChatMessage(data) {
function handleChatMessage(data) {
console.log('处理聊天:', data);
addMessage(data);
@@ -85,7 +88,7 @@ export function handleChatMessage(data) {
* 切换侧边栏
* @returns {boolean} 切换后的状态
*/
export function toggleSidebar() {
function toggleSidebar() {
messageState.isSidebarOpen = !messageState.isSidebarOpen;
if (messageState.isSidebarOpen) {
messageState.unreadCount = 0;
@@ -98,14 +101,14 @@ export function toggleSidebar() {
* 获取消息状态
* @returns {Object} 消息状态
*/
export function getMessageState() {
function getMessageState() {
return messageState;
}
/**
* 发送消息
*/
export function sendMessage() {
function sendMessage() {
const chatInput = document.getElementById('chatInput');
const content = chatInput.value.trim();
@@ -138,7 +141,7 @@ export function sendMessage() {
* 处理聊天输入回车
* @param {KeyboardEvent} event - 键盘事件
*/
export function handleChatSubmit(event) {
function handleChatSubmit(event) {
if (event.key === 'Enter') {
sendMessage();
}
@@ -147,7 +150,7 @@ export function handleChatSubmit(event) {
/**
* 打开图片选择器
*/
export function openImagePicker() {
function openImagePicker() {
document.getElementById('imageInput').click();
}
@@ -155,7 +158,7 @@ export function openImagePicker() {
* 处理图片上传
* @param {Event} event - 事件对象
*/
export function handleImageUpload(event) {
function handleImageUpload(event) {
const file = event.target.files[0];
if (file) {
// 检查文件类型
@@ -165,7 +168,7 @@ export function handleImageUpload(event) {
}
// 检查文件大小限制为5MB
if (file.size > 5 * 1024 * 1024) {
if (file.size > MAX_IMAGE_SIZE) {
showNotification('图片文件不能超过5MB', 3000);
return;
}
@@ -188,7 +191,7 @@ export function handleImageUpload(event) {
* @param {string} imageUrl - 图片URL
* @param {string} fileName - 文件名
*/
export function sendImageMessage(imageUrl, fileName) {
function sendImageMessage(imageUrl, fileName) {
const state = store.getState();
const newMessage = {
id: generateId(),
@@ -214,7 +217,7 @@ export function sendImageMessage(imageUrl, fileName) {
/**
* 绑定消息相关的DOM事件
*/
export function bindMessageEvents() {
function bindMessageEvents() {
// 发送消息
window.sendMessage = sendMessage;