Make the GUI a library to support multiple platforms

This commit is contained in:
traxys 2023-08-07 17:27:11 +02:00
parent d3f89a8757
commit 0d900024cb
24 changed files with 76 additions and 39 deletions

57
Cargo.lock generated
View file

@ -590,7 +590,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "be8aed40e4edbf4d3b4431ab260b63fdc40f5780a4766824329ea0f1eefe3c0f"
dependencies = [
"log",
"wasm-bindgen",
"web-sys",
]
@ -910,29 +909,6 @@ dependencies = [
"web-sys",
]
[[package]]
name = "dioxus_app"
version = "0.1.0"
dependencies = [
"ammonia",
"anyhow",
"api",
"console_log",
"dioxus",
"dioxus-router",
"dioxus-web",
"gloo-net",
"gloo-storage",
"gloo-utils",
"itertools 0.11.0",
"log",
"pulldown-cmark",
"serde",
"urlencoding",
"uuid",
"wasm-bindgen",
]
[[package]]
name = "dirs"
version = "4.0.0"
@ -2724,6 +2700,39 @@ dependencies = [
"uuid",
]
[[package]]
name = "regalade_gui"
version = "0.1.0"
dependencies = [
"ammonia",
"anyhow",
"api",
"dioxus",
"dioxus-router",
"dioxus-web",
"gloo-net",
"gloo-storage",
"gloo-utils",
"itertools 0.11.0",
"log",
"pulldown-cmark",
"serde",
"urlencoding",
"uuid",
"wasm-bindgen",
]
[[package]]
name = "regalade_web"
version = "0.1.0"
dependencies = [
"console_log",
"dioxus-web",
"gloo-utils",
"log",
"regalade_gui",
]
[[package]]
name = "regex"
version = "1.8.1"

View file

@ -5,7 +5,7 @@ authors = ["traxys <quentin@familleboyer.net>"]
edition = "2021"
[workspace]
members = [".", "api", "app", "migration"]
members = [".", "api", "gui", "migration", "web"]
[dependencies]
anyhow = "1.0.71"

View file

@ -118,7 +118,7 @@
export XDG_DATA_HOME=/build/data
mkdir -p $XDG_DATA_HOME
cd app
cd web
dx build --release
runHook postBuild

View file

@ -1,5 +1,5 @@
[package]
name = "dioxus_app"
name = "regalade_gui"
version = "0.1.0"
edition = "2021"
@ -9,7 +9,6 @@ edition = "2021"
ammonia = "3.3.0"
anyhow = "1.0.71"
api = { version = "0.1.0", path = "../api" }
console_log = { version = "1.0.0", features = ["color"] }
dioxus = "0.4.0"
dioxus-router = { version = "0.4.1", features = ["web"] }
dioxus-web = "0.4.0"

View file

@ -586,18 +586,13 @@ enum Route {
RecipeView {id: i64}
}
fn App(cx: Scope) -> Element {
pub trait AppContext {}
pub struct AppProps<'a, C> {
pub context: &'a C,
}
pub fn App<'a, C: AppContext>(cx: Scope<'a, AppProps<'a, C>>) -> Element {
cx.render(rsx! {
Router::<Route> {}
})
}
fn main() {
console_log::init_with_level(log::Level::Info).unwrap();
let html = gloo_utils::document_element();
html.set_attribute("data-bs-theme", "dark")
.expect("could not set dark theme");
dioxus_web::launch(App)
}

13
web/Cargo.toml Normal file
View file

@ -0,0 +1,13 @@
[package]
name = "regalade_web"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
console_log = "1.0.0"
dioxus-web = "0.4.0"
gloo-utils = "0.1.7"
log = "0.4.19"
regalade_gui = { path = "../gui" }

21
web/src/main.rs Normal file
View file

@ -0,0 +1,21 @@
use regalade_gui::{App, AppContext, AppProps};
struct WebApp {}
impl AppContext for WebApp {}
fn main() {
console_log::init_with_level(log::Level::Info).unwrap();
let html = gloo_utils::document_element();
html.set_attribute("data-bs-theme", "dark")
.expect("could not set dark theme");
dioxus_web::launch_with_props(
App,
AppProps {
context: &WebApp {},
},
dioxus_web::Config::new(),
)
}