Skip to content

Commit 3278105

Browse files
committed
fix: lib.rs adapted to Seed 0.5.0
1 parent 4f89c40 commit 3278105

File tree

1 file changed

+39
-31
lines changed

1 file changed

+39
-31
lines changed

crate/src/lib.rs

Lines changed: 39 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,18 @@ const USER_AGENT_FOR_PRERENDERING: &str = "ReactSnap";
2222
const STATIC_PATH: &str = "static";
2323
const IMAGES_PATH: &str = "static/images";
2424

25+
// ------ ------
26+
// Before Mount
27+
// ------ ------
28+
29+
fn before_mount(_: Url) -> BeforeMount {
30+
BeforeMount::new().mount_type(MountType::Takeover)
31+
}
32+
33+
// ------ ------
34+
// Model
35+
// ------ ------
36+
2537
#[derive(Clone, Copy, Eq, PartialEq)]
2638
pub enum Visibility {
2739
Visible,
@@ -37,10 +49,6 @@ impl Visibility {
3749
}
3850
}
3951

40-
// ------ ------
41-
// Model
42-
// ------ ------
43-
4452
// We need at least 3 last values to detect scroll direction,
4553
// because neighboring ones are sometimes equal.
4654
type ScrollHistory = FixedVecDeque<[i32; 3]>;
@@ -52,6 +60,8 @@ pub struct Model {
5260
pub in_prerendering: bool,
5361
}
5462

63+
// ------ Page ------
64+
5565
#[derive(Clone, Copy, Eq, PartialEq)]
5666
pub enum Page {
5767
Home,
@@ -80,10 +90,10 @@ impl From<Url> for Page {
8090
}
8191

8292
// ------ ------
83-
// Init
93+
// After Mount
8494
// ------ ------
8595

86-
pub fn init(url: Url, orders: &mut impl Orders<Msg>) -> Init<Model> {
96+
fn after_mount(url: Url, orders: &mut impl Orders<Msg>) -> AfterMount<Model> {
8797
orders.send_msg(Msg::UpdatePageTitle);
8898

8999
let model = Model {
@@ -93,11 +103,7 @@ pub fn init(url: Url, orders: &mut impl Orders<Msg>) -> Init<Model> {
93103
in_prerendering: is_in_prerendering(),
94104
};
95105

96-
Init {
97-
model,
98-
url_handling: UrlHandling::None,
99-
mount_type: MountType::Takeover,
100-
}
106+
AfterMount::new(model).url_handling(UrlHandling::None)
101107
}
102108

103109
fn is_in_prerendering() -> bool {
@@ -119,6 +125,25 @@ pub fn routes(url: Url) -> Option<Msg> {
119125
Some(Msg::RouteChanged(url))
120126
}
121127

128+
// ------ ------
129+
// Window Events
130+
// ------ ------
131+
132+
pub fn window_events(_: &Model) -> Vec<Listener<Msg>> {
133+
vec![raw_ev(Ev::Scroll, |_| {
134+
// Some browsers use `document.body.scrollTop`
135+
// and other ones `document.documentElement.scrollTop`.
136+
let mut position = body().scroll_top();
137+
if position == 0 {
138+
position = document()
139+
.document_element()
140+
.expect("cannot get document element")
141+
.scroll_top()
142+
}
143+
Msg::Scrolled(position)
144+
})]
145+
}
146+
122147
// ------ ------
123148
// Update
124149
// ------ ------
@@ -199,25 +224,6 @@ pub fn asset_path(asset: &str) -> String {
199224
format!("{}/{}", STATIC_PATH, asset)
200225
}
201226

202-
// ------ ------
203-
// Window Events
204-
// ------ ------
205-
206-
pub fn window_events(_: &Model) -> Vec<Listener<Msg>> {
207-
vec![raw_ev(Ev::Scroll, |_| {
208-
// Some browsers use `document.body.scrollTop`
209-
// and other ones `document.documentElement.scrollTop`.
210-
let mut position = body().scroll_top();
211-
if position == 0 {
212-
position = document()
213-
.document_element()
214-
.expect("cannot get document element")
215-
.scroll_top()
216-
}
217-
Msg::Scrolled(position)
218-
})]
219-
}
220-
221227
// ------ ------
222228
// Start
223229
// ------ ------
@@ -226,7 +232,9 @@ pub fn window_events(_: &Model) -> Vec<Listener<Msg>> {
226232
pub fn run() {
227233
log!("Starting app...");
228234

229-
App::build(init, update, view)
235+
App::builder(update, view)
236+
.before_mount(before_mount)
237+
.after_mount(after_mount)
230238
.routes(routes)
231239
.window_events(window_events)
232240
.build_and_start();

0 commit comments

Comments
 (0)