diff --git a/src/pages/rules.tsx b/src/pages/rules.tsx
index 7e4f250..9c2547f 100644
--- a/src/pages/rules.tsx
+++ b/src/pages/rules.tsx
@@ -10,6 +10,7 @@ import {
} from "../services/command";
import ProfileItemComp from "../components/profile-item";
import useNotice from "../utils/use-notice";
+import noop from "../utils/noop";
const RulesPage = () => {
const [url, setUrl] = useState("");
@@ -19,14 +20,21 @@ const RulesPage = () => {
const { mutate } = useSWRConfig();
const { data: profiles = {} } = useSWR("getProfiles", getProfiles);
- const onClick = () => {
+ const onImport = async () => {
if (!url) return;
setUrl("");
setDisabled(true);
- importProfile(url)
- .then(() => notice.success("Successfully import profile."))
- .catch(() => notice.error("Failed to import profile."))
- .finally(() => setDisabled(false));
+
+ try {
+ await importProfile(url);
+ mutate("getProfiles", getProfiles());
+ if (!profiles.items?.length) putProfiles(0).catch(noop);
+ notice.success("Successfully import profile.");
+ } catch {
+ notice.error("Failed to import profile.");
+ } finally {
+ setDisabled(false);
+ }
};
const lockRef = useRef(false);
@@ -76,7 +84,7 @@ const RulesPage = () => {
diff --git a/src/services/command.ts b/src/services/command.ts
index a5e9327..d6d3c36 100644
--- a/src/services/command.ts
+++ b/src/services/command.ts
@@ -48,7 +48,7 @@ export interface ProfilesConfig {
}
export async function getProfiles() {
- return invoke("get_profiles");
+ return (await invoke("get_profiles")) ?? {};
}
export async function setProfiles(current: number, profile: ProfileItem) {