()
| 86 | const { t } = useTranslation(); // 使用useTranslation钩子获取翻译函数 |
| 87 | |
| 88 | const fetchData = async () => { |
| 89 | try { |
| 90 | const url = new URL(window.location.href); |
| 91 | const uuid = url.searchParams.get("uuid") || ""; |
| 92 | const cacheKey = `${CACHE_KEY_IMPORT_FILE}${uuid}`; |
| 93 | const resp = await cacheInstance.get<{ filename: string; url: string }>(cacheKey); |
| 94 | if (!resp) throw new Error("fetchData failed"); |
| 95 | const filedata = await fetch(resp.url).then((resp) => resp.blob()); |
| 96 | const zip = await loadAsyncJSZip(filedata); |
| 97 | const backData = await parseBackupZipFile(zip); |
| 98 | const backDataScript = backData.script as ScriptData[]; |
| 99 | |
| 100 | // 使用缓存优化脚本加载速度 |
| 101 | const scriptDAO = new ScriptDAO(); |
| 102 | scriptDAO.enableCache(); |
| 103 | |
| 104 | // setScripts(backDataScript); |
| 105 | // 获取各个脚本现在已经存在的信息 |
| 106 | await Promise.all( |
| 107 | backDataScript.map(async (item) => { |
| 108 | try { |
| 109 | const prepareScript = await prepareScriptByCode( |
| 110 | item.code, |
| 111 | item.options?.meta.file_url || "", |
| 112 | item.options?.meta.sc_uuid || undefined, |
| 113 | true, |
| 114 | scriptDAO |
| 115 | ); |
| 116 | item.script = prepareScript; |
| 117 | } catch (e: any) { |
| 118 | item.error = e.toString(); |
| 119 | return item; |
| 120 | } |
| 121 | if (!item.options) { |
| 122 | item.options = { |
| 123 | options: {} as ScriptOptions, |
| 124 | meta: { |
| 125 | name: item.script?.script.name, |
| 126 | // 此uuid是对tm的兼容处理 |
| 127 | uuid: item.script?.script.uuid, |
| 128 | sc_uuid: item.script?.script.uuid, |
| 129 | file_url: item.script?.script.downloadUrl || "", |
| 130 | modified: item.script?.script.createtime, |
| 131 | subscribe_url: item.script?.script.subscribeUrl, |
| 132 | }, |
| 133 | settings: { |
| 134 | enabled: |
| 135 | item.enabled === false |
| 136 | ? false |
| 137 | : !(item.script?.script.metadata.background || item.script?.script.metadata.crontab), |
| 138 | position: item.script?.script.sort, |
| 139 | }, |
| 140 | }; |
| 141 | } |
| 142 | item.script.script.sort = item.options.settings.position || 0; |
| 143 | item.script.script.status = |
| 144 | item.enabled !== false && item.options.settings.enabled ? SCRIPT_STATUS_ENABLE : SCRIPT_STATUS_DISABLE; |
| 145 | item.install = true; |
no test coverage detected