MCPcopy Create free account
hub / github.com/scriptscat/scriptcat / fetchData

Function fetchData

src/pages/import/App.tsx:88–161  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

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;

Callers 1

AppFunction · 0.85

Calls 9

enableCacheMethod · 0.95
loadAsyncJSZipFunction · 0.90
parseBackupZipFileFunction · 0.90
prepareScriptByCodeFunction · 0.90
sortMethod · 0.80
errorMethod · 0.80
getMethod · 0.65
blobMethod · 0.45
sliceMethod · 0.45

Tested by

no test coverage detected