diff --git a/app/api/webdav/[...path]/route.ts b/app/api/webdav/[...path]/route.ts index f64a9ef1354..3dd9ca3cda8 100644 --- a/app/api/webdav/[...path]/route.ts +++ b/app/api/webdav/[...path]/route.ts @@ -42,7 +42,7 @@ async function handle( } const endpointPath = params.path.join("/"); - const targetPath = `${endpoint}/${endpointPath}`; + const targetPath = `${endpoint}${endpointPath}`; // only allow MKCOL, GET, PUT if (req.method !== "MKCOL" && req.method !== "GET" && req.method !== "PUT") { @@ -96,7 +96,7 @@ async function handle( ); } - const targetUrl = `${endpoint}/${endpointPath}`; + const targetUrl = targetPath; const method = req.method; const shouldNotHaveBody = ["get", "head"].includes( @@ -114,12 +114,23 @@ async function handle( duplex: "half", }; - const fetchResult = await fetch(targetUrl, fetchOptions); + let fetchResult; - console.log("[Any Proxy]", targetUrl, { - status: fetchResult.status, - statusText: fetchResult.statusText, - }); + try { + fetchResult = await fetch(targetUrl, fetchOptions); + } finally { + console.log( + "[Any Proxy]", + targetUrl, + { + method: req.method, + }, + { + status: fetchResult?.status, + statusText: fetchResult?.statusText, + }, + ); + } return fetchResult; } diff --git a/app/store/sync.ts b/app/store/sync.ts index 674ff674420..8ee6c1819f4 100644 --- a/app/store/sync.ts +++ b/app/store/sync.ts @@ -104,6 +104,7 @@ export const useSyncStore = createPersistStore( setLocalAppState(localState); } catch (e) { console.log("[Sync] failed to get remote state", e); + throw e; } await client.set(config.username, JSON.stringify(localState)); diff --git a/app/utils/cloud/webdav.ts b/app/utils/cloud/webdav.ts index e01c193fea2..f7d48dd0393 100644 --- a/app/utils/cloud/webdav.ts +++ b/app/utils/cloud/webdav.ts @@ -63,9 +63,9 @@ export function createWebDavClient(store: SyncStore) { }; }, path(path: string, proxyUrl: string = "") { - if (!path.endsWith("/")) { - path += "/"; - } + // if (!path.endsWith("/")) { + // path += "/"; + // } if (path.startsWith("/")) { path = path.slice(1); } @@ -76,7 +76,7 @@ export function createWebDavClient(store: SyncStore) { let url; if (proxyUrl.length > 0 || proxyUrl === "/") { - let u = new URL(proxyUrl + "/api/webdav/" + path); + let u = new URL(proxyUrl + "api/webdav/" + path); // add query params u.searchParams.append("endpoint", config.endpoint); url = u.toString();