diff --git a/src/pages/profiles.tsx b/src/pages/profiles.tsx index 32731415..4a8b15b1 100644 --- a/src/pages/profiles.tsx +++ b/src/pages/profiles.tsx @@ -66,7 +66,7 @@ const ProfilePage = () => { coordinateGetter: sortableKeyboardCoordinates, }) ); - const { current } = location.state || {}; + const { stateCurrent } = location.state || {}; useEffect(() => { const unlisten = addListener("tauri://file-drop", async (event) => { @@ -135,23 +135,8 @@ const ProfilePage = () => { Notice.success(t("Profile Imported Successfully")); setUrl(""); setLoading(false); - - getProfiles().then(async (newProfiles) => { - mutate("getProfiles", newProfiles); - - const remoteItem = newProfiles.items?.find((e) => e.type === "remote"); - - const itemsCount = newProfiles.items?.filter( - (e) => e.type === "remote" || e.type === "local" - ).length as number; - - if (remoteItem && (itemsCount == 1 || !newProfiles.current)) { - const current = remoteItem.uid; - await patchProfiles({ current }); - mutateLogs(); - setTimeout(() => activateSelected(), 2000); - } - }); + mutateProfiles(); + await onEnhance(false); } catch (err: any) { Notice.error(err.message || err.toString()); setLoading(false); @@ -171,9 +156,8 @@ const ProfilePage = () => { } }; - const activateProfile = async (profile: string) => { + const activateProfile = async (profile: string, notifySuccess: boolean) => { // 避免大多数情况下loading态闪烁 - const reset = setTimeout(() => { setActivatings((prev) => [...prev, profile]); }, 100); @@ -183,7 +167,9 @@ const ProfilePage = () => { await mutateLogs(); closeAllConnections(); await activateSelected(); - Notice.success(t("Profile Switched"), 1000); + if (notifySuccess) { + Notice.success(t("Profile Switched"), 1000); + } } catch (err: any) { Notice.error(err?.message || err.toString(), 4000); } finally { @@ -193,24 +179,25 @@ const ProfilePage = () => { }; const onSelect = useLockFn(async (current: string, force: boolean) => { if (!force && current === profiles.current) return; - await activateProfile(current); + await activateProfile(current, true); }); useEffect(() => { (async () => { - if (current && current !== profiles.current) { - console.log("current:", current); - await activateProfile(current); + if (stateCurrent && stateCurrent !== profiles.current) { + await activateProfile(stateCurrent, false); } })(); - }, current); + }, stateCurrent); - const onEnhance = useLockFn(async () => { + const onEnhance = useLockFn(async (notifySuccess: boolean) => { setActivatings(currentActivatings()); try { await enhanceProfiles(); mutateLogs(); - Notice.success(t("Profile Reactivated"), 1000); + if (notifySuccess) { + Notice.success(t("Profile Reactivated"), 1000); + } } catch (err: any) { Notice.error(err.message || err.toString(), 3000); } finally { @@ -225,7 +212,7 @@ const ProfilePage = () => { await deleteProfile(uid); mutateProfiles(); mutateLogs(); - current && (await onEnhance()); + current && (await onEnhance(false)); } catch (err: any) { Notice.error(err?.message || err.toString()); } finally { @@ -302,7 +289,7 @@ const ProfilePage = () => { size="small" color="primary" title={t("Reactivate Profiles")} - onClick={onEnhance} + onClick={() => onEnhance(true)} > @@ -401,7 +388,7 @@ const ProfilePage = () => { onEdit={() => viewerRef.current?.edit(item)} onSave={async (prev, curr) => { if (prev !== curr && profiles.current === item.uid) { - await onEnhance(); + await onEnhance(false); } }} onDelete={() => onDelete(item.uid)} @@ -424,7 +411,7 @@ const ProfilePage = () => { id="Merge" onSave={async (prev, curr) => { if (prev !== curr) { - await onEnhance(); + await onEnhance(false); } }} /> @@ -435,7 +422,7 @@ const ProfilePage = () => { logInfo={chainLogs["Script"]} onSave={async (prev, curr) => { if (prev !== curr) { - await onEnhance(); + await onEnhance(false); } }} /> @@ -444,7 +431,13 @@ const ProfilePage = () => { - mutateProfiles()} /> + { + mutateProfiles(); + await onEnhance(false); + }} + /> );