mirror of
https://github.com/imputnet/cobalt.git
synced 2025-06-28 09:28:29 +00:00
文件传输10-传输页面优化1
This commit is contained in:
parent
659cd2befa
commit
481f8d0e9c
@ -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];
|
||||||
|
@ -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];
|
||||||
|
@ -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"]) {
|
||||||
|
Loading…
Reference in New Issue
Block a user