forked from clan/clan-core
Webview: add solid-toast feeback system
This commit is contained in:
parent
62735ebfe2
commit
c647197b8c
11
pkgs/webview-ui/app/package-lock.json
generated
11
pkgs/webview-ui/app/package-lock.json
generated
@ -10,7 +10,8 @@
|
|||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"material-icons": "^1.13.12",
|
"material-icons": "^1.13.12",
|
||||||
"solid-js": "^1.8.11"
|
"solid-js": "^1.8.11",
|
||||||
|
"solid-toast": "^0.5.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@eslint/js": "^9.3.0",
|
"@eslint/js": "^9.3.0",
|
||||||
@ -5182,6 +5183,14 @@
|
|||||||
"solid-js": "^1.3"
|
"solid-js": "^1.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/solid-toast": {
|
||||||
|
"version": "0.5.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/solid-toast/-/solid-toast-0.5.0.tgz",
|
||||||
|
"integrity": "sha512-t770JakjyS2P9b8Qa1zMLOD51KYKWXbTAyJePVUoYex5c5FH5S/HtUBUbZAWFcqRCKmAE8KhyIiCvDZA8bOnxQ==",
|
||||||
|
"peerDependencies": {
|
||||||
|
"solid-js": "^1.5.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/source-map": {
|
"node_modules/source-map": {
|
||||||
"version": "0.6.1",
|
"version": "0.6.1",
|
||||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
|
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
|
||||||
|
@ -38,6 +38,7 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"material-icons": "^1.13.12",
|
"material-icons": "^1.13.12",
|
||||||
"solid-js": "^1.8.11"
|
"solid-js": "^1.8.11",
|
||||||
|
"solid-toast": "^0.5.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ import { createSignal, type Component } from "solid-js";
|
|||||||
import { MachineProvider } from "./Config";
|
import { MachineProvider } from "./Config";
|
||||||
import { Layout } from "./layout/layout";
|
import { Layout } from "./layout/layout";
|
||||||
import { Route, Router } from "./Routes";
|
import { Route, Router } from "./Routes";
|
||||||
|
import { Toaster } from "solid-toast";
|
||||||
|
|
||||||
// Global state
|
// Global state
|
||||||
const [route, setRoute] = createSignal<Route>("machines");
|
const [route, setRoute] = createSignal<Route>("machines");
|
||||||
@ -9,13 +10,14 @@ const [route, setRoute] = createSignal<Route>("machines");
|
|||||||
export { route, setRoute };
|
export { route, setRoute };
|
||||||
|
|
||||||
const App: Component = () => {
|
const App: Component = () => {
|
||||||
return (
|
return [
|
||||||
|
<Toaster position="top-right" />,
|
||||||
<MachineProvider>
|
<MachineProvider>
|
||||||
<Layout>
|
<Layout>
|
||||||
<Router route={route} />
|
<Router route={route} />
|
||||||
</Layout>
|
</Layout>
|
||||||
</MachineProvider>
|
</MachineProvider>,
|
||||||
);
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
export default App;
|
export default App;
|
||||||
|
@ -9,6 +9,7 @@ import {
|
|||||||
import { useMachineContext } from "../../Config";
|
import { useMachineContext } from "../../Config";
|
||||||
import { route } from "@/src/App";
|
import { route } from "@/src/App";
|
||||||
import { OperationResponse, pyApi } from "@/src/api";
|
import { OperationResponse, pyApi } from "@/src/api";
|
||||||
|
import toast from "solid-toast";
|
||||||
|
|
||||||
type FilesModel = Extract<
|
type FilesModel = Extract<
|
||||||
OperationResponse<"get_directory">,
|
OperationResponse<"get_directory">,
|
||||||
@ -39,6 +40,17 @@ export const MachineListView: Component = () => {
|
|||||||
if (response?.status === "success") {
|
if (response?.status === "success") {
|
||||||
console.log(response.data);
|
console.log(response.data);
|
||||||
setData(response.data);
|
setData(response.data);
|
||||||
|
toast.success("Machines loaded");
|
||||||
|
}
|
||||||
|
if (response?.status === "error") {
|
||||||
|
setData([]);
|
||||||
|
console.error(response.errors);
|
||||||
|
toast.error("Error loading machines");
|
||||||
|
response.errors.forEach((error) =>
|
||||||
|
toast.error(
|
||||||
|
`${error.message}: ${error.description} From ${error.location}`
|
||||||
|
)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
npmDeps = pkgs.fetchNpmDeps {
|
npmDeps = pkgs.fetchNpmDeps {
|
||||||
src = ./app;
|
src = ./app;
|
||||||
hash = "sha256-AwBrTnS/GAND/eogBic96kIQAJ4gdHorB8hEdpnGe5s=";
|
hash = "sha256-NauXhPRKC80yiAeyt5mEBLcPZw3aheZDYXx4vLvpRvI=";
|
||||||
};
|
};
|
||||||
# The prepack script runs the build script, which we'd rather do in the build phase.
|
# The prepack script runs the build script, which we'd rather do in the build phase.
|
||||||
npmPackFlags = [ "--ignore-scripts" ];
|
npmPackFlags = [ "--ignore-scripts" ];
|
||||||
|
Loading…
Reference in New Issue
Block a user