From 2fc084909e80934fa40f606f70cbfd9374108291 Mon Sep 17 00:00:00 2001 From: Rob Watson Date: Fri, 11 Sep 2020 12:38:31 +0200 Subject: [PATCH] Refactor component structure --- src/{ => components}/app.rs | 2 +- src/{ => components}/home.rs | 11 ++---- src/components/mod.rs | 8 +++++ src/{ => components}/player.rs | 0 src/{ => components/waveform}/canvas.rs | 1 - .../waveform/container.rs} | 35 ++++++++++--------- src/components/waveform/mod.rs | 4 +++ src/lib.rs | 10 +++--- 8 files changed, 39 insertions(+), 32 deletions(-) rename src/{ => components}/app.rs (93%) rename src/{ => components}/home.rs (70%) create mode 100644 src/components/mod.rs rename src/{ => components}/player.rs (100%) rename src/{ => components/waveform}/canvas.rs (99%) rename src/{controls.rs => components/waveform/container.rs} (65%) create mode 100644 src/components/waveform/mod.rs diff --git a/src/app.rs b/src/components/app.rs similarity index 93% rename from src/app.rs rename to src/components/app.rs index 5da0a50..1721939 100644 --- a/src/app.rs +++ b/src/components/app.rs @@ -1,6 +1,6 @@ use yew::prelude::*; -use crate::home::Home; +use crate::components::Home; pub struct App {} diff --git a/src/home.rs b/src/components/home.rs similarity index 70% rename from src/home.rs rename to src/components/home.rs index a2a1088..e609129 100644 --- a/src/home.rs +++ b/src/components/home.rs @@ -1,7 +1,7 @@ -use crate::canvas::Canvas; -use crate::controls::Controls; use yew::prelude::*; +use crate::components::waveform::WaveformContainer; + pub struct Home {} impl Component for Home { @@ -21,11 +21,6 @@ impl Component for Home { } fn view(&self) -> Html { - html! { -
- - -
- } + html! { } } } diff --git a/src/components/mod.rs b/src/components/mod.rs new file mode 100644 index 0000000..8c9045a --- /dev/null +++ b/src/components/mod.rs @@ -0,0 +1,8 @@ +pub mod app; +pub mod home; +pub mod player; +pub mod waveform; + +pub use app::App; +pub use home::Home; +pub use player::Player; diff --git a/src/player.rs b/src/components/player.rs similarity index 100% rename from src/player.rs rename to src/components/player.rs diff --git a/src/canvas.rs b/src/components/waveform/canvas.rs similarity index 99% rename from src/canvas.rs rename to src/components/waveform/canvas.rs index 02e5618..8164564 100644 --- a/src/canvas.rs +++ b/src/components/waveform/canvas.rs @@ -4,7 +4,6 @@ use std::sync::Arc; use wasm_bindgen::prelude::*; use wasm_bindgen::JsCast; use web_sys::HtmlCanvasElement; -use yew::agent::Bridged; use yew::prelude::*; use yew::services::ConsoleService; use yew::Bridge; diff --git a/src/controls.rs b/src/components/waveform/container.rs similarity index 65% rename from src/controls.rs rename to src/components/waveform/container.rs index 9f684f7..bb9991a 100644 --- a/src/controls.rs +++ b/src/components/waveform/container.rs @@ -1,12 +1,12 @@ -use super::player::Player; +use super::canvas::Canvas; use crate::agents::audio_agent::{self, AudioAgent}; +use crate::components::Player; use web_sys::HtmlInputElement; -use yew::agent::Dispatched; use yew::agent::Dispatcher; use yew::prelude::*; use yew::services::ConsoleService; -pub struct Controls { +pub struct Container { link: ComponentLink, file_input: NodeRef, audio_agent: Dispatcher, @@ -16,7 +16,7 @@ pub enum Msg { SubmitForm, } -impl Component for Controls { +impl Component for Container { type Message = Msg; type Properties = (); @@ -31,7 +31,7 @@ impl Component for Controls { fn update(&mut self, msg: Self::Message) -> ShouldRender { match msg { Msg::SubmitForm => { - if let Err(e) = self.handle_submit_form() { + if let Err(e) = self.handle_upload() { ConsoleService::error(&e); }; } @@ -43,24 +43,27 @@ impl Component for Controls { false } - fn rendered(&mut self, _: bool) {} - fn view(&self) -> Html { html! { -
- - +
+ + +
+ + +
+ -
+ } } } -impl Controls { - fn handle_submit_form(&mut self) -> Result<(), String> { +impl Container { + fn handle_upload(&mut self) -> Result<(), String> { let file_input = self .file_input .cast::() diff --git a/src/components/waveform/mod.rs b/src/components/waveform/mod.rs new file mode 100644 index 0000000..4bea6b4 --- /dev/null +++ b/src/components/waveform/mod.rs @@ -0,0 +1,4 @@ +mod canvas; +mod container; + +pub use container::Container as WaveformContainer; diff --git a/src/lib.rs b/src/lib.rs index 829180d..e3cc1b7 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,3 +1,5 @@ +#![recursion_limit = "256"] + extern crate console_error_panic_hook; extern crate js_sys; @@ -6,11 +8,7 @@ use wasm_bindgen::prelude::*; use yew::prelude::*; mod agents; -mod app; -mod canvas; -mod controls; -mod home; -mod player; +mod components; mod utils; #[wasm_bindgen(start)] @@ -18,5 +16,5 @@ pub fn run_app() { #[cfg(debug_assertions)] panic::set_hook(Box::new(console_error_panic_hook::hook)); - App::::new().mount_to_body(); + App::::new().mount_to_body(); }