forked from alemi/upub
feat(web): user timeline persists too
it will reset every time you view another user, but at least won't reset if you go into a thread and then back to your user
This commit is contained in:
parent
01d0e4df85
commit
fc2a62239b
2 changed files with 8 additions and 3 deletions
|
@ -17,6 +17,7 @@ pub fn App() -> impl IntoView {
|
||||||
|
|
||||||
let home_tl = Timeline::new(format!("{URL_BASE}/users/{}/inbox/page", username.get().unwrap_or_default()));
|
let home_tl = Timeline::new(format!("{URL_BASE}/users/{}/inbox/page", username.get().unwrap_or_default()));
|
||||||
let server_tl = Timeline::new(format!("{URL_BASE}/inbox/page"));
|
let server_tl = Timeline::new(format!("{URL_BASE}/inbox/page"));
|
||||||
|
let user_tl = Timeline::new(format!("{URL_BASE}/users/{}/outbox/page", username.get().unwrap_or_default()));
|
||||||
|
|
||||||
let screen_width = window().screen().map(|x| x.avail_width().unwrap_or_default()).unwrap_or_default();
|
let screen_width = window().screen().map(|x| x.avail_width().unwrap_or_default()).unwrap_or_default();
|
||||||
|
|
||||||
|
@ -94,8 +95,8 @@ pub fn App() -> impl IntoView {
|
||||||
<Route path="/web/config" view=ConfigPage />
|
<Route path="/web/config" view=ConfigPage />
|
||||||
<Route path="/web/about" view=AboutPage />
|
<Route path="/web/about" view=AboutPage />
|
||||||
|
|
||||||
<Route path="/web/users/:id" view=UserPage />
|
|
||||||
<Route path="/web/objects/:id" view=ObjectPage />
|
<Route path="/web/objects/:id" view=ObjectPage />
|
||||||
|
<Route path="/web/users/:id" view=move || view! { <UserPage tl=user_tl /> } />
|
||||||
|
|
||||||
<Route path="/" view=move || view! { <Redirect path="/web" /> } />
|
<Route path="/" view=move || view! { <Redirect path="/web" /> } />
|
||||||
</Routes>
|
</Routes>
|
||||||
|
|
|
@ -31,7 +31,7 @@ pub fn ConfigPage() -> impl IntoView {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[component]
|
#[component]
|
||||||
pub fn UserPage() -> impl IntoView {
|
pub fn UserPage(tl: Timeline) -> impl IntoView {
|
||||||
let params = use_params_map();
|
let params = use_params_map();
|
||||||
let auth = use_context::<Auth>().expect("missing auth context");
|
let auth = use_context::<Auth>().expect("missing auth context");
|
||||||
let id = params.get().get("id").cloned().unwrap_or_default();
|
let id = params.get().get("id").cloned().unwrap_or_default();
|
||||||
|
@ -71,6 +71,10 @@ pub fn UserPage() -> impl IntoView {
|
||||||
let following = object.following().get().map(|x| x.total_items().unwrap_or(0)).unwrap_or(0);
|
let following = object.following().get().map(|x| x.total_items().unwrap_or(0)).unwrap_or(0);
|
||||||
let followers = object.followers().get().map(|x| x.total_items().unwrap_or(0)).unwrap_or(0);
|
let followers = object.followers().get().map(|x| x.total_items().unwrap_or(0)).unwrap_or(0);
|
||||||
let statuses = object.outbox().get().map(|x| x.total_items().unwrap_or(0)).unwrap_or(0);
|
let statuses = object.outbox().get().map(|x| x.total_items().unwrap_or(0)).unwrap_or(0);
|
||||||
|
let tl_url = format!("{}/outbox/page", Uri::api("users", &id.clone(), false));
|
||||||
|
if !tl.next.get().starts_with(&tl_url) {
|
||||||
|
tl.reset(tl_url);
|
||||||
|
}
|
||||||
view! {
|
view! {
|
||||||
<div class="ml-3 mr-3">
|
<div class="ml-3 mr-3">
|
||||||
<div
|
<div
|
||||||
|
@ -117,7 +121,7 @@ pub fn UserPage() -> impl IntoView {
|
||||||
}</blockquote>
|
}</blockquote>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<TimelineFeed tl=Timeline::new(format!("{}/outbox/page", Uri::api("users", &id.clone(), false))) />
|
<TimelineFeed tl=tl />
|
||||||
}.into_view()
|
}.into_view()
|
||||||
},
|
},
|
||||||
}}
|
}}
|
||||||
|
|
Loading…
Reference in a new issue