From 4ea28030c780afc52a8bb58716a9fa7a8040dae3 Mon Sep 17 00:00:00 2001 From: Manuel Cillero Date: Wed, 3 Apr 2024 15:17:20 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Fix=20package=20registration?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- examples/app-basic.rs | 6 +++++ src/app.rs | 10 +++---- src/base/component/basic.rs | 3 --- src/base/component/basic/components.rs | 36 -------------------------- src/core/package/all.rs | 28 +++++++++++--------- 5 files changed, 26 insertions(+), 57 deletions(-) create mode 100644 examples/app-basic.rs delete mode 100644 src/base/component/basic/components.rs diff --git a/examples/app-basic.rs b/examples/app-basic.rs new file mode 100644 index 00000000..53743870 --- /dev/null +++ b/examples/app-basic.rs @@ -0,0 +1,6 @@ +use pagetop::prelude::*; + +#[pagetop::main] +async fn main() -> std::io::Result<()> { + Application::new().run()?.await +} diff --git a/src/app.rs b/src/app.rs index 54982784..421137e5 100644 --- a/src/app.rs +++ b/src/app.rs @@ -34,12 +34,12 @@ impl Application { } /// Prepares an application instance with a specific package. - pub fn prepare(app: PackageRef) -> Self { - Self::internal_prepare(Some(app)) + pub fn prepare(root_package: PackageRef) -> Self { + Self::internal_prepare(Some(root_package)) } // Internal method to prepare the application, optionally with a package. - fn internal_prepare(app: Option) -> Self { + fn internal_prepare(root_package: Option) -> Self { // On startup, show the application banner. Self::show_banner(); @@ -54,9 +54,7 @@ impl Application { LazyStatic::force(&db::DBCONN); // Registers the application's packages. - if let Some(app) = app { - package::all::register_packages(app); - } + package::all::register_packages(root_package); // Registers package actions. package::all::register_actions(); diff --git a/src/base/component/basic.rs b/src/base/component/basic.rs index a031c51c..f89e61eb 100644 --- a/src/base/component/basic.rs +++ b/src/base/component/basic.rs @@ -7,8 +7,5 @@ pub use fluent::Fluent; mod body; pub use body::Body; -mod components; -pub use components::Components; - mod region; pub use region::Region; diff --git a/src/base/component/basic/components.rs b/src/base/component/basic/components.rs deleted file mode 100644 index fbf8fc2b..00000000 --- a/src/base/component/basic/components.rs +++ /dev/null @@ -1,36 +0,0 @@ -use crate::prelude::*; - -#[derive(AutoDefault)] -pub struct Components(MixedComponents); - -impl ComponentTrait for Components { - fn new() -> Self { - Components::default() - } - - fn prepare_component(&self, cx: &mut Context) -> PrepareMarkup { - PrepareMarkup::With(self.components().render(cx)) - } -} - -impl Components { - // Components BUILDER. - - #[fn_builder] - pub fn alter_components(&mut self, op: AnyOp) -> &mut Self { - self.0.alter_value(op); - self - } - - #[rustfmt::skip] - pub fn add_component(mut self, component: impl ComponentTrait) -> Self { - self.0.alter_value(AnyOp::Add(AnyComponent::with(component))); - self - } - - // Components GETTERS. - - pub fn components(&self) -> &MixedComponents { - &self.0 - } -} diff --git a/src/core/package/all.rs b/src/core/package/all.rs index 4950d912..35b9875a 100644 --- a/src/core/package/all.rs +++ b/src/core/package/all.rs @@ -20,28 +20,32 @@ static DROPPED_PACKAGES: LazyStatic>> = // REGISTER PACKAGES ******************************************************************************* -pub fn register_packages(app: PackageRef) { +pub fn register_packages(root_package: Option) { // List of packages to drop. - let mut list: Vec = Vec::new(); - add_to_dropped(&mut list, app); - DROPPED_PACKAGES.write().unwrap().append(&mut list); + let mut packages_to_drop: Vec = Vec::new(); + if let Some(package) = root_package { + add_to_dropped(&mut packages_to_drop, package); + } + DROPPED_PACKAGES.write().unwrap().append(&mut packages_to_drop); // List of packages to enable. - let mut list: Vec = Vec::new(); + let mut packages_to_enable: Vec = Vec::new(); // Enable default welcome page. - add_to_enabled(&mut list, &crate::base::package::Welcome); + add_to_enabled(&mut packages_to_enable, &crate::base::package::Welcome); // Enable default themes. - add_to_enabled(&mut list, &crate::base::theme::Basic); - add_to_enabled(&mut list, &crate::base::theme::Chassis); - add_to_enabled(&mut list, &crate::base::theme::Inception); + add_to_enabled(&mut packages_to_enable, &crate::base::theme::Basic); + add_to_enabled(&mut packages_to_enable, &crate::base::theme::Chassis); + add_to_enabled(&mut packages_to_enable, &crate::base::theme::Inception); // Enable application packages. - add_to_enabled(&mut list, app); + if let Some(package) = root_package { + add_to_enabled(&mut packages_to_enable, package); + } - list.reverse(); - ENABLED_PACKAGES.write().unwrap().append(&mut list); + packages_to_enable.reverse(); + ENABLED_PACKAGES.write().unwrap().append(&mut packages_to_enable); } fn add_to_dropped(list: &mut Vec, package: PackageRef) {