diff --git a/pkgs/clan-cli/clan_cli/clan/show.py b/pkgs/clan-cli/clan_cli/clan/show.py index 281f8f744..e08dc5562 100644 --- a/pkgs/clan-cli/clan_cli/clan/show.py +++ b/pkgs/clan-cli/clan_cli/clan/show.py @@ -15,7 +15,10 @@ log = logging.getLogger(__name__) @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( [ f"{uri}#clanInternals.inventory.meta", diff --git a/pkgs/webview-ui/app/src/App.tsx b/pkgs/webview-ui/app/src/App.tsx index d5ad8b40e..a6117cf9d 100644 --- a/pkgs/webview-ui/app/src/App.tsx +++ b/pkgs/webview-ui/app/src/App.tsx @@ -1,5 +1,6 @@ import { createSignal } from "solid-js"; import { makePersisted } from "@solid-primitives/storage"; +import { callApi } from "./api"; const [activeURI, setActiveURI] = makePersisted( createSignal(null), @@ -17,3 +18,22 @@ const [clanList, setClanList] = makePersisted(createSignal([]), { }); 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