merge: ui/j-download-dialog
Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01Cxwgnn2pbzQ7rXv3rq7fei
This commit is contained in:
commit
1360120e75
14 files changed
+1272
-123
No files matched your search
@@ -1,7 +1,9 @@
|
||||
import type { SearchRelease } from "@umt/contracts";
|
||||
import { usePlanFromSearch } from "~/api/search.ts";
|
||||
import { openAgentDrawer } from "~/components/agent/agent-store.ts";
|
||||
import { ManualDownloadDialog } from "~/components/downloads/manual-download-dialog.tsx";
|
||||
import { ManualDownloadDialog, type ManualDownloadResource } from "~/components/downloads/manual-download-dialog.tsx";
|
||||
import { kindHintOf } from "~/components/downloads/manual-download-model.ts";
|
||||
import { promoLabel } from "./search-labels.ts";
|
||||
|
||||
export function delegateToAgent(release: SearchRelease) {
|
||||
openAgentDrawer({
|
||||
@@ -13,6 +15,27 @@ export function delegateToAgent(release: SearchRelease) {
|
||||
});
|
||||
}
|
||||
|
||||
/** 搜索结果 → 下载对话框的资源摘要;别名命中(未确认)按未识别处理 */
|
||||
export function searchResource(release: SearchRelease): ManualDownloadResource {
|
||||
const resolved = release.entityMatch === "resolved" ? release.entity : null;
|
||||
const promo = promoLabel(release.promotion.type);
|
||||
return {
|
||||
title: release.title,
|
||||
subtitle: release.subtitle,
|
||||
sizeBytes: release.sizeBytes,
|
||||
entityId: resolved?.id,
|
||||
entity: resolved,
|
||||
siteId: release.siteId,
|
||||
siteName: release.siteName,
|
||||
seeders: release.seeders,
|
||||
leechers: release.leechers,
|
||||
promotion: promo ? { label: promo, free: release.free } : null,
|
||||
hr: release.hr === "unknown" ? "unknown" : release.hr ? "yes" : "no",
|
||||
publishedAt: release.uploadedAt,
|
||||
kindHint: kindHintOf(release.parsed),
|
||||
};
|
||||
}
|
||||
|
||||
export function SearchDownloadDialog({
|
||||
release,
|
||||
open,
|
||||
@@ -28,11 +51,7 @@ export function SearchDownloadDialog({
|
||||
key={`${release.siteId}:${release.siteReleaseId}`}
|
||||
open={open}
|
||||
onOpenChange={onOpenChange}
|
||||
resource={{
|
||||
title: release.title,
|
||||
sizeBytes: release.sizeBytes,
|
||||
entityId: release.entityMatch === "resolved" ? release.entity?.id : undefined,
|
||||
}}
|
||||
resource={searchResource(release)}
|
||||
onDelegate={() => delegateToAgent(release)}
|
||||
submit={(options) =>
|
||||
submit.mutateAsync({ ...options, siteId: release.siteId, siteReleaseId: release.siteReleaseId })
|
||||
|
||||
Reference in new issue
Block a user