
state.ordering);
const user = useAuth((state) => state.user);
const [confirmDelete, setConfirmDelete] = useState(false);
- const rawUrl = `/api/files/${jId}/raw/`;
const query = useQuery({
queryKey: ["file", jId],
queryFn: () => api
(`/api/files/${jId}/`),
});
+ const rawUrl = query.data?.raw_url ?? `/api/files/${jId}/raw/`;
+ const downloadUrl = rawUrl.includes("?")
+ ? `${rawUrl}&download=1`
+ : `${rawUrl}?download=1`;
+
const neighborsQuery = useQuery({
queryKey: ["neighbors", jId, ordering],
queryFn: () =>
@@ -335,7 +339,7 @@ export function LibraryDetail({ jId }: { jId: string }) {
if (isTypingTarget(event.target)) return;
if (event.key === "d" || event.key === "D") {
event.preventDefault();
- window.location.href = `${rawUrl}?download=1`;
+ window.location.href = downloadUrl;
return;
}
const neighbors = neighborsQuery.data;
@@ -347,7 +351,7 @@ export function LibraryDetail({ jId }: { jId: string }) {
}
window.addEventListener("keydown", handleKeyDown);
return () => window.removeEventListener("keydown", handleKeyDown);
- }, [neighborsQuery.data, navigate, rawUrl]);
+ }, [neighborsQuery.data, navigate, downloadUrl]);
if (query.isPending) {
return (
@@ -400,7 +404,7 @@ export function LibraryDetail({ jId }: { jId: string }) {
}
actions={
-
+
Download
{canDelete ? (
diff --git a/frontend/src/features/upload/UploadPage.tsx b/frontend/src/features/upload/UploadPage.tsx
index 8f31973..13a1b82 100644
--- a/frontend/src/features/upload/UploadPage.tsx
+++ b/frontend/src/features/upload/UploadPage.tsx
@@ -385,7 +385,10 @@ function MetadataModal({
className="flex items-center gap-3 rounded-md border border-ctp-surface0 bg-ctp-surface0/40 p-2"
>
