app: open welcome page if clan doesn't exist

Previously if a user started the app and the last opened clan directory does not exist anymore, it would still show the clan screen but without any machines.

This changes catches this case and throws the user back to the clan selection page
This commit is contained in:
DavHau
2025-04-30 14:36:47 +07:00
parent 11afc1faef
commit f7e0345ab3
2 changed files with 24 additions and 1 deletions

View File

@@ -15,7 +15,10 @@ log = logging.getLogger(__name__)
@API.register @API.register
def show_clan_meta(uri: str | Path) -> Meta: def show_clan_meta(uri: str) -> Meta:
if uri.startswith("/") and not Path(uri).exists():
msg = f"Path {uri} does not exist"
raise ClanError(msg, description="clan directory does not exist")
cmd = nix_eval( cmd = nix_eval(
[ [
f"{uri}#clanInternals.inventory.meta", f"{uri}#clanInternals.inventory.meta",

View File

@@ -1,5 +1,6 @@
import { createSignal } from "solid-js"; import { createSignal } from "solid-js";
import { makePersisted } from "@solid-primitives/storage"; import { makePersisted } from "@solid-primitives/storage";
import { callApi } from "./api";
const [activeURI, setActiveURI] = makePersisted( const [activeURI, setActiveURI] = makePersisted(
createSignal<string | null>(null), createSignal<string | null>(null),
@@ -17,3 +18,22 @@ const [clanList, setClanList] = makePersisted(createSignal<string[]>([]), {
}); });
export { clanList, setClanList }; export { clanList, setClanList };
(async function () {
const curr = activeURI();
if (curr) {
const result = await callApi("show_clan_meta", { uri: curr });
console.log("refetched meta for ", curr);
if (result.status === "error") {
result.errors.forEach((error) => {
if (error.description === "clan directory does not exist") {
setActiveURI(null);
setClanList((clans) => clans.filter((clan) => clan !== curr));
}
});
}
}
})();
// ensure to null out activeURI on startup if the clan was deleted
// => throws user back to the view for selecting a clan