From bf9af11274f3599a36e83d413ca1c2a37f17e3e5 Mon Sep 17 00:00:00 2001 From: curo1305 Date: Thu, 18 Jun 2026 23:25:29 +0200 Subject: [PATCH] feat(12-03): connection-ID routing, rename, session folder memory, thin views MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Route /cloud/:connectionId/:folderId replaces /cloud/:provider/:folderId - api/cloud.js: getCloudFoldersByConnectionId + renameCloudConnection - cloudConnections store: rename, selectConnection, setBrowseState, defaultDisplayName, session storage helpers - CloudStorageView: thin — passes connectionRoots to StorageBrowser - CloudFolderView: thin — uses connectionId param, never provider slug - SettingsCloudTab: inline rename input for each active connection - 27 tests pass: store, view, settings --- frontend/src/api/cloud.js | 16 +++ .../components/settings/SettingsCloudTab.vue | 48 ++++++- .../__tests__/SettingsCloudTab.test.js | 45 +++++++ frontend/src/router/index.js | 2 +- .../stores/__tests__/cloudConnections.test.js | 103 +++++++++++++- frontend/src/stores/cloudConnections.js | 126 +++++++++++++++++- frontend/src/views/CloudFolderView.vue | 87 +++++++++--- frontend/src/views/CloudStorageView.vue | 103 +++++--------- .../views/__tests__/CloudFolderView.test.js | 100 ++++++++++++++ .../views/__tests__/CloudStorageView.test.js | 55 ++++++++ 10 files changed, 594 insertions(+), 91 deletions(-) create mode 100644 frontend/src/views/__tests__/CloudFolderView.test.js create mode 100644 frontend/src/views/__tests__/CloudStorageView.test.js diff --git a/frontend/src/api/cloud.js b/frontend/src/api/cloud.js index 7cf83d2..8582b31 100644 --- a/frontend/src/api/cloud.js +++ b/frontend/src/api/cloud.js @@ -29,10 +29,26 @@ export function updateDefaultStorage(backend) { return jsonRequest('/api/users/me/default-storage', 'PATCH', { backend }) } +/** + * Browse a cloud folder by connection UUID and folder path. + * connectionId is always a UUID; folderId is a path string (default 'root'). + */ +export function getCloudFoldersByConnectionId(connectionId, folderId) { + return request(`/api/cloud/connections/${connectionId}/folders/${folderId}`) +} + +/** @deprecated Use getCloudFoldersByConnectionId instead. */ export function getCloudFolders(provider, folderId) { return request(`/api/cloud/folders/${provider}/${folderId}`) } +/** + * Rename a cloud connection's display name. + */ +export function renameCloudConnection(id, displayName) { + return jsonRequest(`/api/cloud/connections/${id}`, 'PATCH', { display_name: displayName }) +} + /** * Initiate OAuth flow for Google Drive or OneDrive. * diff --git a/frontend/src/components/settings/SettingsCloudTab.vue b/frontend/src/components/settings/SettingsCloudTab.vue index 5fe3b31..46cb644 100644 --- a/frontend/src/components/settings/SettingsCloudTab.vue +++ b/frontend/src/components/settings/SettingsCloudTab.vue @@ -60,8 +60,33 @@