⚡️ (core): Registro de acciones inmutable
This commit is contained in:
parent
5b2ddeb6cc
commit
58d1fef4f1
15 changed files with 624 additions and 244 deletions
|
|
@ -1,4 +1,4 @@
|
|||
use crate::core::action::add_action;
|
||||
use crate::core::action::publish_actions;
|
||||
use crate::core::extension::ExtensionRef;
|
||||
use crate::core::theme::ThemeRef;
|
||||
use crate::core::theme::all::THEMES;
|
||||
|
|
@ -91,11 +91,14 @@ fn check_theme_parent_chain(theme: ThemeRef) {
|
|||
// **< REGISTRO DE LAS ACCIONES >*******************************************************************
|
||||
|
||||
pub fn register_actions() {
|
||||
for extension in EXTENSIONS.get().into_iter().flatten() {
|
||||
for a in extension.actions() {
|
||||
add_action(a);
|
||||
}
|
||||
}
|
||||
publish_actions(|| {
|
||||
EXTENSIONS
|
||||
.get()
|
||||
.into_iter()
|
||||
.flatten()
|
||||
.flat_map(|extension| extension.actions())
|
||||
.collect()
|
||||
});
|
||||
}
|
||||
|
||||
// **< INICIALIZA LAS EXTENSIONES >*****************************************************************
|
||||
|
|
|
|||
|
|
@ -101,9 +101,17 @@ pub trait Extension: AnyInfo + Send + Sync {
|
|||
|
||||
/// Devuelve la lista de acciones que la extensión registra.
|
||||
///
|
||||
/// Estas [acciones](crate::core::action) se despachan por orden de registro o por
|
||||
/// [peso](crate::Weight) (ver [`actions!`](crate::actions)), permitiendo
|
||||
/// personalizar el comportamiento de la aplicación en puntos específicos.
|
||||
/// Estas [acciones] se despachan por orden de registro o por [peso] (ver [`actions!`]),
|
||||
/// permitiendo personalizar el comportamiento de la aplicación en puntos específicos.
|
||||
///
|
||||
/// PageTop lo invoca una sola vez por proceso, al registrar las extensiones y antes de
|
||||
/// [`initialize()`]. La lista queda fija a partir de ahí y no es posible añadir acciones más
|
||||
/// tarde.
|
||||
///
|
||||
/// [acciones]: crate::core::action
|
||||
/// [peso]: crate::Weight
|
||||
/// [`actions!`]: crate::actions
|
||||
/// [`initialize()`]: Self::initialize
|
||||
fn actions(&self) -> Vec<ActionBox> {
|
||||
actions![]
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue