Correct local file path resolution for ZXDB/WoS mirrors
- Remove optional path prefix and prepend the required local string. - Avoid hardcoded 'SC' or 'WoS' subdirectories in path mapping. - Maintain binary state: show local link only if env var is set and file exists. Signed-off: junie@McFiver.local
This commit is contained in:
@@ -103,6 +103,7 @@ export type EntryDetailData = {
|
||||
case: { id: string | null; name: string | null };
|
||||
year: number | null;
|
||||
releaseSeq: number;
|
||||
localLink?: string | null;
|
||||
}[];
|
||||
releases?: {
|
||||
releaseSeq: number;
|
||||
@@ -125,6 +126,7 @@ export type EntryDetailData = {
|
||||
source: { id: string | null; name: string | null };
|
||||
case: { id: string | null; name: string | null };
|
||||
year: number | null;
|
||||
localLink?: string | null;
|
||||
}[];
|
||||
}[];
|
||||
// Additional relationships
|
||||
@@ -392,11 +394,18 @@ export default function EntryDetailClient({ data }: { data: EntryDetailData | nu
|
||||
<tr key={d.id}>
|
||||
<td><span className="badge text-bg-secondary">{d.type.name}</span></td>
|
||||
<td>
|
||||
{isHttp ? (
|
||||
<a href={d.link} target="_blank" rel="noopener noreferrer">{d.link}</a>
|
||||
) : (
|
||||
<span>{d.link}</span>
|
||||
)}
|
||||
<div className="d-flex flex-column gap-1">
|
||||
{isHttp ? (
|
||||
<a href={d.link} target="_blank" rel="noopener noreferrer" className="text-break small">{d.link}</a>
|
||||
) : (
|
||||
<span className="text-break small">{d.link}</span>
|
||||
)}
|
||||
{d.localLink && (
|
||||
<a href={d.localLink} className="btn btn-xs btn-success py-0 px-1" style={{ fontSize: "0.7rem", width: "fit-content" }}>
|
||||
Local Mirror
|
||||
</a>
|
||||
)}
|
||||
</div>
|
||||
</td>
|
||||
<td className="text-end">{typeof d.size === "number" ? d.size.toLocaleString() : "-"}</td>
|
||||
<td><code>{d.md5 ?? "-"}</code></td>
|
||||
|
||||
@@ -43,6 +43,7 @@ type ReleaseDetailData = {
|
||||
source: { id: string | null; name: string | null };
|
||||
case: { id: string | null; name: string | null };
|
||||
year: number | null;
|
||||
localLink?: string | null;
|
||||
}>;
|
||||
scraps: Array<{
|
||||
id: number;
|
||||
@@ -58,6 +59,7 @@ type ReleaseDetailData = {
|
||||
source: { id: string | null; name: string | null };
|
||||
case: { id: string | null; name: string | null };
|
||||
year: number | null;
|
||||
localLink?: string | null;
|
||||
}>;
|
||||
files: Array<{
|
||||
id: number;
|
||||
@@ -376,11 +378,18 @@ export default function ReleaseDetailClient({ data }: { data: ReleaseDetailData
|
||||
<tr key={d.id}>
|
||||
<td><span className="badge text-bg-secondary">{d.type.name}</span></td>
|
||||
<td>
|
||||
{isHttp ? (
|
||||
<a href={d.link} target="_blank" rel="noopener noreferrer">{d.link}</a>
|
||||
) : (
|
||||
<span>{d.link}</span>
|
||||
)}
|
||||
<div className="d-flex flex-column gap-1">
|
||||
{isHttp ? (
|
||||
<a href={d.link} target="_blank" rel="noopener noreferrer" className="text-break small">{d.link}</a>
|
||||
) : (
|
||||
<span className="text-break small">{d.link}</span>
|
||||
)}
|
||||
{d.localLink && (
|
||||
<a href={d.localLink} className="btn btn-xs btn-success py-0 px-1" style={{ fontSize: "0.7rem", width: "fit-content" }}>
|
||||
Local Mirror
|
||||
</a>
|
||||
)}
|
||||
</div>
|
||||
</td>
|
||||
<td className="text-end">{typeof d.size === "number" ? d.size.toLocaleString() : "-"}</td>
|
||||
<td><code>{d.md5 ?? "-"}</code></td>
|
||||
@@ -438,15 +447,22 @@ export default function ReleaseDetailClient({ data }: { data: ReleaseDetailData
|
||||
<tr key={s.id}>
|
||||
<td><span className="badge text-bg-secondary">{s.type.name}</span></td>
|
||||
<td>
|
||||
{s.link ? (
|
||||
isHttp ? (
|
||||
<a href={s.link} target="_blank" rel="noopener noreferrer">{s.link}</a>
|
||||
<div className="d-flex flex-column gap-1">
|
||||
{s.link ? (
|
||||
isHttp ? (
|
||||
<a href={s.link} target="_blank" rel="noopener noreferrer" className="text-break small">{s.link}</a>
|
||||
) : (
|
||||
<span className="text-break small">{s.link}</span>
|
||||
)
|
||||
) : (
|
||||
<span>{s.link}</span>
|
||||
)
|
||||
) : (
|
||||
<span className="text-secondary">-</span>
|
||||
)}
|
||||
<span className="text-secondary">-</span>
|
||||
)}
|
||||
{s.localLink && (
|
||||
<a href={s.localLink} className="btn btn-xs btn-success py-0 px-1" style={{ fontSize: "0.7rem", width: "fit-content" }}>
|
||||
Local Mirror
|
||||
</a>
|
||||
)}
|
||||
</div>
|
||||
</td>
|
||||
<td className="text-end">{typeof s.size === "number" ? s.size.toLocaleString() : "-"}</td>
|
||||
<td>
|
||||
|
||||
Reference in New Issue
Block a user