From 481f8d0e9c642f8caf4e6d46c4dbe9773511ecb8 Mon Sep 17 00:00:00 2001 From: celebrateyang Date: Thu, 5 Jun 2025 19:01:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E4=BB=B6=E4=BC=A0=E8=BE=9310-?= =?UTF-8?q?=E4=BC=A0=E8=BE=93=E9=A1=B5=E9=9D=A2=E4=BC=98=E5=8C=961?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lib/clipboard/clipboard-manager-new.ts | 35 ++++++++++------- web/src/lib/clipboard/clipboard-manager.ts | 19 +++++++--- web/src/routes/+layout.svelte | 38 +++++++++++++++---- 3 files changed, 66 insertions(+), 26 deletions(-) diff --git a/web/src/lib/clipboard/clipboard-manager-new.ts b/web/src/lib/clipboard/clipboard-manager-new.ts index 5abc2bcd..04452fd1 100644 --- a/web/src/lib/clipboard/clipboard-manager-new.ts +++ b/web/src/lib/clipboard/clipboard-manager-new.ts @@ -584,16 +584,16 @@ export class ClipboardManager { private async handleDataChannelMessage(data: any): Promise { // Handle different types of data channel messages - switch (data.type) { - case 'text': + switch (data.type) { case 'text': // Convert array back to ArrayBuffer for decryption const encryptedBuffer = new Uint8Array(data.content).buffer; const decryptedText = await this.decryptData(encryptedBuffer); clipboardState.update(state => ({ ...state, - receivedText: decryptedText + receivedText: decryptedText, + activeTab: 'text' // 自动切换到文本分享标签 })); - console.log('Text received successfully'); + console.log('Text received successfully, switched to text tab'); break; case 'file_start': @@ -604,13 +604,13 @@ export class ClipboardManager { type: data.mimeType || data.type, chunks: [], receivedSize: 0 - }; - clipboardState.update(state => ({ + }; clipboardState.update(state => ({ ...state, receivingFiles: true, - transferProgress: 0 + transferProgress: 0, + activeTab: 'files' // 自动切换到文件传输标签 })); - console.log('Started receiving file:', data.name); + console.log('Started receiving file:', data.name, ', switched to files tab'); break; case 'file_chunk': @@ -672,8 +672,11 @@ export class ClipboardManager { console.error('Data channel not ready'); return; } - - try { + try { + // 自动切换到文本分享标签 + clipboardState.update(state => ({ ...state, activeTab: 'text' })); + console.log('Switched to text tab for sending'); + const encryptedText = await this.encryptData(text); // Convert ArrayBuffer to Array for JSON serialization const encryptedArray = Array.from(new Uint8Array(encryptedText)); @@ -705,9 +708,15 @@ export class ClipboardManager { console.log('No files to send'); return; } - - try { - clipboardState.update(state => ({ ...state, sendingFiles: true, transferProgress: 0 })); + try { + // 自动切换到文件传输标签 + clipboardState.update(state => ({ + ...state, + sendingFiles: true, + transferProgress: 0, + activeTab: 'files' + })); + console.log('Switched to files tab for sending'); for (let i = 0; i < currentFiles.length; i++) { const file = currentFiles[i]; diff --git a/web/src/lib/clipboard/clipboard-manager.ts b/web/src/lib/clipboard/clipboard-manager.ts index 9444065b..f4ac519d 100644 --- a/web/src/lib/clipboard/clipboard-manager.ts +++ b/web/src/lib/clipboard/clipboard-manager.ts @@ -670,8 +670,11 @@ export class ClipboardManager { if (!this.dataChannel || this.dataChannel.readyState !== 'open') { console.error('Data channel not ready'); return; - } - try { + } try { + // 自动切换到文本分享标签 + clipboardState.update(state => ({ ...state, activeTab: 'text' })); + console.log('Switched to text tab for sending'); + console.log('🔐 Encrypting text:', text.substring(0, 20) + '...'); const encryptedText = await this.encryptData(text); // Convert ArrayBuffer to Array for JSON serialization @@ -705,9 +708,15 @@ export class ClipboardManager { console.log('No files to send'); return; } - - try { - clipboardState.update(state => ({ ...state, sendingFiles: true, transferProgress: 0 })); + try { + // 自动切换到文件传输标签 + clipboardState.update(state => ({ + ...state, + sendingFiles: true, + transferProgress: 0, + activeTab: 'files' + })); + console.log('Switched to files tab for sending'); for (let i = 0; i < currentFiles.length; i++) { const file = currentFiles[i]; diff --git a/web/src/routes/+layout.svelte b/web/src/routes/+layout.svelte index 7ae1a130..ac02d778 100644 --- a/web/src/routes/+layout.svelte +++ b/web/src/routes/+layout.svelte @@ -162,14 +162,25 @@ var(--button-hover), var(--button), var(--button-hover) - ); - - --skeleton-gradient-elevated: linear-gradient( + ); --skeleton-gradient-elevated: linear-gradient( 90deg, var(--button-elevated), var(--button-elevated-shimmer), var(--button-elevated) - ); + ); /* Accent colors for light theme */ + --accent: #82b52d; + --accent-hover: #6fa525; + --accent-rgb: 130, 181, 45; + --accent-background: rgba(130, 181, 45, 0.1); + + /* Additional colors for components */ + --background: #ffffff; + --text: #282828; + --subtext: #75757e; + --orange: #ff9500; + --orange-background: rgba(255, 149, 0, 0.1); + --yellow: #ffcc02; + --yellow-background: rgba(255, 204, 2, 0.1); } :global([data-theme="dark"]) { @@ -219,14 +230,25 @@ var(--button), var(--button-hover), var(--button) - ); - - --skeleton-gradient-elevated: linear-gradient( + ); --skeleton-gradient-elevated: linear-gradient( 90deg, var(--button-elevated), var(--button-elevated-hover), var(--button-elevated) - ); + ); /* Accent colors for dark theme */ + --accent: #82b52d; + --accent-hover: #9bc53a; + --accent-rgb: 130, 181, 45; + --accent-background: rgba(130, 181, 45, 0.1); + + /* Additional colors for components */ + --background: #000000; + --text: #e1e1e1; + --subtext: #818181; + --orange: #ff9500; + --orange-background: rgba(255, 149, 0, 0.1); + --yellow: #ffcc02; + --yellow-background: rgba(255, 204, 2, 0.1); } :global([data-theme="light"] [data-reduce-transparency="true"]) {