文件传输10-传输页面优化1

This commit is contained in:
celebrateyang 2025-06-05 19:01:49 +08:00
parent 659cd2befa
commit 481f8d0e9c
3 changed files with 66 additions and 26 deletions

View File

@ -584,16 +584,16 @@ export class ClipboardManager {
private async handleDataChannelMessage(data: any): Promise<void> { private async handleDataChannelMessage(data: any): Promise<void> {
// Handle different types of data channel messages // Handle different types of data channel messages
switch (data.type) { switch (data.type) { case 'text':
case 'text':
// Convert array back to ArrayBuffer for decryption // Convert array back to ArrayBuffer for decryption
const encryptedBuffer = new Uint8Array(data.content).buffer; const encryptedBuffer = new Uint8Array(data.content).buffer;
const decryptedText = await this.decryptData(encryptedBuffer); const decryptedText = await this.decryptData(encryptedBuffer);
clipboardState.update(state => ({ clipboardState.update(state => ({
...state, ...state,
receivedText: decryptedText receivedText: decryptedText,
activeTab: 'text' // 自动切换到文本分享标签
})); }));
console.log('Text received successfully'); console.log('Text received successfully, switched to text tab');
break; break;
case 'file_start': case 'file_start':
@ -604,13 +604,13 @@ export class ClipboardManager {
type: data.mimeType || data.type, type: data.mimeType || data.type,
chunks: [], chunks: [],
receivedSize: 0 receivedSize: 0
}; }; clipboardState.update(state => ({
clipboardState.update(state => ({
...state, ...state,
receivingFiles: true, 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; break;
case 'file_chunk': case 'file_chunk':
@ -672,8 +672,11 @@ export class ClipboardManager {
console.error('Data channel not ready'); console.error('Data channel not ready');
return; return;
} }
try { try {
// 自动切换到文本分享标签
clipboardState.update(state => ({ ...state, activeTab: 'text' }));
console.log('Switched to text tab for sending');
const encryptedText = await this.encryptData(text); const encryptedText = await this.encryptData(text);
// Convert ArrayBuffer to Array for JSON serialization // Convert ArrayBuffer to Array for JSON serialization
const encryptedArray = Array.from(new Uint8Array(encryptedText)); const encryptedArray = Array.from(new Uint8Array(encryptedText));
@ -705,9 +708,15 @@ export class ClipboardManager {
console.log('No files to send'); console.log('No files to send');
return; return;
} }
try { try {
clipboardState.update(state => ({ ...state, sendingFiles: true, transferProgress: 0 })); // 自动切换到文件传输标签
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++) { for (let i = 0; i < currentFiles.length; i++) {
const file = currentFiles[i]; const file = currentFiles[i];

View File

@ -670,8 +670,11 @@ export class ClipboardManager {
if (!this.dataChannel || this.dataChannel.readyState !== 'open') { if (!this.dataChannel || this.dataChannel.readyState !== 'open') {
console.error('Data channel not ready'); console.error('Data channel not ready');
return; 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) + '...'); console.log('🔐 Encrypting text:', text.substring(0, 20) + '...');
const encryptedText = await this.encryptData(text); const encryptedText = await this.encryptData(text);
// Convert ArrayBuffer to Array for JSON serialization // Convert ArrayBuffer to Array for JSON serialization
@ -705,9 +708,15 @@ export class ClipboardManager {
console.log('No files to send'); console.log('No files to send');
return; return;
} }
try { try {
clipboardState.update(state => ({ ...state, sendingFiles: true, transferProgress: 0 })); // 自动切换到文件传输标签
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++) { for (let i = 0; i < currentFiles.length; i++) {
const file = currentFiles[i]; const file = currentFiles[i];

View File

@ -162,14 +162,25 @@
var(--button-hover), var(--button-hover),
var(--button), var(--button),
var(--button-hover) var(--button-hover)
); ); --skeleton-gradient-elevated: linear-gradient(
--skeleton-gradient-elevated: linear-gradient(
90deg, 90deg,
var(--button-elevated), var(--button-elevated),
var(--button-elevated-shimmer), var(--button-elevated-shimmer),
var(--button-elevated) 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"]) { :global([data-theme="dark"]) {
@ -219,14 +230,25 @@
var(--button), var(--button),
var(--button-hover), var(--button-hover),
var(--button) var(--button)
); ); --skeleton-gradient-elevated: linear-gradient(
--skeleton-gradient-elevated: linear-gradient(
90deg, 90deg,
var(--button-elevated), var(--button-elevated),
var(--button-elevated-hover), var(--button-elevated-hover),
var(--button-elevated) 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"]) { :global([data-theme="light"] [data-reduce-transparency="true"]) {