(url: string)
| 594 | }); |
| 595 | |
| 596 | const loadURLAsync = async (url: string) => { |
| 597 | const fetchValidScript = async () => { |
| 598 | const result = await fetchScriptBody(url, { |
| 599 | onProgress: (info: { receivedLength: number }) => { |
| 600 | setFetchingState((prev) => ({ |
| 601 | ...prev, |
| 602 | loadingStatus: t("downloading_status_text", { bytes: formatBytes(info.receivedLength) }), |
| 603 | })); |
| 604 | }, |
| 605 | }); |
| 606 | if (result.code && result.metadata) { |
| 607 | return { result, url } as const; |
| 608 | } |
| 609 | throw new Error(t("install_page_load_failed")); |
| 610 | }; |
| 611 | |
| 612 | try { |
| 613 | const { result, url } = await fetchValidScript(); |
| 614 | const { code, metadata } = result; |
| 615 | const isSkillScript = EnableAgent && "skillScript" in result && result.skillScript === true; |
| 616 | |
| 617 | const uuid = uuidv4(); |
| 618 | const scriptData = await createTempCodeEntry(false, uuid, code, url, "user", metadata, {}); |
| 619 | const info = scriptData[1]; |
| 620 | if (isSkillScript) { |
| 621 | info.skillScript = true; |
| 622 | } |
| 623 | await new TempStorageDAO().save({ |
| 624 | key: uuid, |
| 625 | value: scriptData, |
| 626 | savedAt: Date.now(), |
| 627 | type: TempStorageItemType.tempCode, |
| 628 | }); |
| 629 | |
| 630 | setSearchParams(new URLSearchParams(`?uuid=${uuid}`), { replace: true }); |
| 631 | } catch (err: any) { |
| 632 | setFetchingState((prev) => ({ |
| 633 | ...prev, |
| 634 | loadingStatus: "", |
| 635 | errorStatus: `${err?.message || err}`, |
| 636 | })); |
| 637 | } |
| 638 | }; |
| 639 | |
| 640 | // 从 URL 加载 Skill(.cat.md) |
| 641 | const loadSkillFromUrl = async (url: string) => { |
no test coverage detected