Update useDockerManager.ts

This commit is contained in:
Baobhan Sith
2025-05-12 20:44:19 +08:00
parent 5e3fde1e80
commit b3a945cf3f
@@ -79,7 +79,6 @@ export function createDockerManager(sessionId: string, wsDeps: DockerManagerDepe
// Clear existing WebSocket listeners // Clear existing WebSocket listeners
const clearWsListeners = () => { const clearWsListeners = () => {
if (wsUnsubscribeHooks.length > 0) { if (wsUnsubscribeHooks.length > 0) {
console.log(`[DockerManager ${sessionId}] Clearing ${wsUnsubscribeHooks.length} WebSocket listeners.`);
wsUnsubscribeHooks.forEach(unsub => unsub()); wsUnsubscribeHooks.forEach(unsub => unsub());
wsUnsubscribeHooks = []; wsUnsubscribeHooks = [];
} }
@@ -88,7 +87,6 @@ export function createDockerManager(sessionId: string, wsDeps: DockerManagerDepe
// Request Docker status via WebSocket // Request Docker status via WebSocket
const requestDockerStatus = () => { const requestDockerStatus = () => {
if (!isConnected.value) { if (!isConnected.value) {
console.log(`[DockerManager ${sessionId}] WebSocket not connected, skipping Docker status request.`);
// Reset state if disconnected? Or rely on watch(isConnected)? // Reset state if disconnected? Or rely on watch(isConnected)?
// Let's reset here for immediate feedback if called manually while disconnected. // Let's reset here for immediate feedback if called manually while disconnected.
containers.value = []; containers.value = [];
@@ -102,7 +100,6 @@ export function createDockerManager(sessionId: string, wsDeps: DockerManagerDepe
return; return;
} }
console.log(`[DockerManager ${sessionId}] Requesting Docker status.`);
isLoading.value = true; isLoading.value = true;
error.value = null; // Clear previous error error.value = null; // Clear previous error
sendMessage({ type: 'docker:get_status', sessionId }); // Ensure sessionId is included if needed by backend routing sendMessage({ type: 'docker:get_status', sessionId }); // Ensure sessionId is included if needed by backend routing
@@ -115,11 +112,9 @@ export function createDockerManager(sessionId: string, wsDeps: DockerManagerDepe
console.warn(`[DockerManager ${sessionId}] Cannot setup listeners, WebSocket not connected.`); console.warn(`[DockerManager ${sessionId}] Cannot setup listeners, WebSocket not connected.`);
return; return;
} }
console.log(`[DockerManager ${sessionId}] Setting up WebSocket listeners.`);
const unsubStatus = onMessage('docker:status:update', (payload, message) => { const unsubStatus = onMessage('docker:status:update', (payload, message) => {
if (message?.sessionId && message.sessionId !== sessionId) return; // Ignore messages for other sessions if (message?.sessionId && message.sessionId !== sessionId) return; // Ignore messages for other sessions
console.log(`[DockerManager ${sessionId}] Received docker:status:update`, payload);
isLoading.value = false; isLoading.value = false;
if (payload && typeof payload.available === 'boolean') { if (payload && typeof payload.available === 'boolean') {
@@ -138,7 +133,6 @@ export function createDockerManager(sessionId: string, wsDeps: DockerManagerDepe
// Handle default expand on initial load // Handle default expand on initial load
if (!initialLoadDone.value && dockerDefaultExpandBoolean.value) { if (!initialLoadDone.value && dockerDefaultExpandBoolean.value) {
console.log(`[DockerManager ${sessionId}] Applying default expand setting.`);
containers.value.forEach(container => { containers.value.forEach(container => {
if (!expandedContainerIds.value.has(container.id)) { if (!expandedContainerIds.value.has(container.id)) {
expandedContainerIds.value.add(container.id); expandedContainerIds.value.add(container.id);
@@ -153,7 +147,6 @@ export function createDockerManager(sessionId: string, wsDeps: DockerManagerDepe
if (refreshInterval && !payload.available) { if (refreshInterval && !payload.available) {
clearInterval(refreshInterval); clearInterval(refreshInterval);
refreshInterval = null; refreshInterval = null;
console.log(`[DockerManager ${sessionId}] Stopped refresh interval due to remote Docker unavailability.`);
} }
} }
} else { } else {
@@ -189,7 +182,6 @@ export function createDockerManager(sessionId: string, wsDeps: DockerManagerDepe
const unsubRequestUpdate = onMessage('request_docker_status_update', (payload, message) => { const unsubRequestUpdate = onMessage('request_docker_status_update', (payload, message) => {
if (message?.sessionId && message.sessionId !== sessionId) return; if (message?.sessionId && message.sessionId !== sessionId) return;
console.log(`[DockerManager ${sessionId}] Received request_docker_status_update from backend.`);
requestDockerStatus(); // Trigger a status refresh immediately requestDockerStatus(); // Trigger a status refresh immediately
}); });
@@ -209,7 +201,6 @@ export function createDockerManager(sessionId: string, wsDeps: DockerManagerDepe
return; return;
} }
console.log(`[DockerManager ${sessionId}] Sending command '${command}' for container ${containerId}`);
sendMessage({ sendMessage({
type: 'docker:command', type: 'docker:command',
sessionId, // Include sessionId if needed by backend routing sessionId, // Include sessionId if needed by backend routing
@@ -223,10 +214,8 @@ export function createDockerManager(sessionId: string, wsDeps: DockerManagerDepe
const toggleExpand = (containerId: string) => { const toggleExpand = (containerId: string) => {
if (expandedContainerIds.value.has(containerId)) { if (expandedContainerIds.value.has(containerId)) {
expandedContainerIds.value.delete(containerId); expandedContainerIds.value.delete(containerId);
console.log(`[DockerManager ${sessionId}] Collapsed container ${containerId}.`);
} else { } else {
expandedContainerIds.value.add(containerId); expandedContainerIds.value.add(containerId);
console.log(`[DockerManager ${sessionId}] Expanded container ${containerId}.`);
} }
}; };
@@ -234,7 +223,6 @@ export function createDockerManager(sessionId: string, wsDeps: DockerManagerDepe
// Reset state function // Reset state function
const resetStateAndInterval = () => { const resetStateAndInterval = () => {
console.log(`[DockerManager ${sessionId}] Resetting state and clearing interval.`);
containers.value = []; containers.value = [];
isLoading.value = false; isLoading.value = false;
error.value = null; error.value = null;
@@ -245,14 +233,12 @@ export function createDockerManager(sessionId: string, wsDeps: DockerManagerDepe
if (refreshInterval) { if (refreshInterval) {
clearInterval(refreshInterval); clearInterval(refreshInterval);
refreshInterval = null; refreshInterval = null;
console.log(`[DockerManager ${sessionId}] Cleared main refresh interval.`);
} }
clearWsListeners(); clearWsListeners();
}; };
// Watch for connection changes to manage listeners and interval // Watch for connection changes to manage listeners and interval
watch(isConnected, (newIsConnected, oldIsConnected) => { watch(isConnected, (newIsConnected, oldIsConnected) => {
console.log(`[DockerManager ${sessionId}] Connection status changed: ${oldIsConnected} -> ${newIsConnected}`);
if (newIsConnected) { if (newIsConnected) {
// 只有当Docker管理器在布局中时才设置监听器和定时器 // 只有当Docker管理器在布局中时才设置监听器和定时器
const layoutStore = useLayoutStore(); const layoutStore = useLayoutStore();
@@ -265,10 +251,8 @@ export function createDockerManager(sessionId: string, wsDeps: DockerManagerDepe
if (!refreshInterval) { if (!refreshInterval) {
// Keep a safety interval // Keep a safety interval
refreshInterval = setInterval(requestDockerStatus, 15000); // Check every 15s refreshInterval = setInterval(requestDockerStatus, 15000); // Check every 15s
console.log(`[DockerManager ${sessionId}] Main refresh interval started (15s).`);
} }
} else { } else {
console.log(`[DockerManager ${sessionId}] Docker管理器不在布局中,跳过设置监听器和定时器。`);
} }
} else { } else {
// Connection lost // Connection lost
@@ -281,7 +265,6 @@ export function createDockerManager(sessionId: string, wsDeps: DockerManagerDepe
// Cleanup function to be called when the session ends // Cleanup function to be called when the session ends
const cleanup = () => { const cleanup = () => {
console.log(`[DockerManager ${sessionId}] Cleaning up.`);
resetStateAndInterval(); // Clears listeners and interval resetStateAndInterval(); // Clears listeners and interval
}; };
@@ -289,7 +272,6 @@ export function createDockerManager(sessionId: string, wsDeps: DockerManagerDepe
// If already connected when this manager is created, set up listeners and fetch data. // If already connected when this manager is created, set up listeners and fetch data.
// This handles cases where the manager is created after the WS connection is live. // This handles cases where the manager is created after the WS connection is live.
if (isConnected.value) { if (isConnected.value) {
console.log(`[DockerManager ${sessionId}] Initial setup: Already connected.`);
// 只有当Docker管理器在布局中时才设置监听器和定时器 // 只有当Docker管理器在布局中时才设置监听器和定时器
const layoutStore = useLayoutStore(); const layoutStore = useLayoutStore();
if (layoutStore.usedPanes.has('dockerManager')) { if (layoutStore.usedPanes.has('dockerManager')) {
@@ -297,13 +279,10 @@ export function createDockerManager(sessionId: string, wsDeps: DockerManagerDepe
requestDockerStatus(); requestDockerStatus();
if (!refreshInterval) { if (!refreshInterval) {
refreshInterval = setInterval(requestDockerStatus, 15000); refreshInterval = setInterval(requestDockerStatus, 15000);
console.log(`[DockerManager ${sessionId}] Initial setup: Main refresh interval started (15s).`);
} }
} else { } else {
console.log(`[DockerManager ${sessionId}] Docker管理器不在布局中,跳过初始设置。`);
} }
} else { } else {
console.log(`[DockerManager ${sessionId}] Initial setup: Not connected yet.`);
// Set initial state for disconnected status // Set initial state for disconnected status
error.value = t('dockerManager.error.sshDisconnected'); error.value = t('dockerManager.error.sshDisconnected');
isDockerAvailable.value = false; isDockerAvailable.value = false;