diff --git a/frontend/composables/useSftp.ts b/frontend/composables/useSftp.ts index 0d2f038..8597d1f 100644 --- a/frontend/composables/useSftp.ts +++ b/frontend/composables/useSftp.ts @@ -9,10 +9,19 @@ export function useSftp(sessionId: Ref) { const fileContent = ref<{ path: string; content: string } | null>(null) const transfers = ref([]) + let pendingList: string | null = null + function connect() { const wsUrl = `${location.protocol === 'https:' ? 'wss' : 'ws'}://${location.host}/api/ws/sftp?token=${auth.token}` ws = new WebSocket(wsUrl) + ws.onopen = () => { + if (pendingList !== null) { + send({ type: 'list', path: pendingList }) + pendingList = null + } + } + ws.onmessage = (event) => { const msg = JSON.parse(event.data) switch (msg.type) { @@ -48,7 +57,13 @@ export function useSftp(sessionId: Ref) { } } - function list(path: string) { send({ type: 'list', path }) } + function list(path: string) { + if (ws && ws.readyState === WebSocket.OPEN) { + send({ type: 'list', path }) + } else { + pendingList = path + } + } function readFile(path: string) { send({ type: 'read', path }) } function writeFile(path: string, data: string) { send({ type: 'write', path, data }) } function mkdir(path: string) { send({ type: 'mkdir', path }) }