forked from alemi/upub
fix(web): refresh user and thread tl on url change
This commit is contained in:
parent
8251e3f550
commit
17c1765295
2 changed files with 12 additions and 11 deletions
|
@ -12,8 +12,13 @@ pub fn ObjectPage(tl: Timeline) -> impl IntoView {
|
||||||
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();
|
||||||
let uid = uriproxy::uri(URL_BASE, uriproxy::UriClass::Object, &id);
|
let uid = uriproxy::uri(URL_BASE, uriproxy::UriClass::Object, &id);
|
||||||
let object = create_local_resource(move || params.get().get("id").cloned().unwrap_or_default(), move |oid| {
|
let object = create_local_resource(
|
||||||
async move {
|
move || params.get().get("id").cloned().unwrap_or_default(),
|
||||||
|
move |oid| async move {
|
||||||
|
let tl_url = format!("{}/page", Uri::api(U::Context, &oid, false));
|
||||||
|
if !tl.next.get().starts_with(&tl_url) {
|
||||||
|
tl.reset(tl_url);
|
||||||
|
}
|
||||||
match CACHE.get(&Uri::full(U::Object, &oid)) {
|
match CACHE.get(&Uri::full(U::Object, &oid)) {
|
||||||
Some(x) => Some(x.clone()),
|
Some(x) => Some(x.clone()),
|
||||||
None => {
|
None => {
|
||||||
|
@ -31,7 +36,7 @@ pub fn ObjectPage(tl: Timeline) -> impl IntoView {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
);
|
||||||
view! {
|
view! {
|
||||||
<div>
|
<div>
|
||||||
<Breadcrumb back=true >
|
<Breadcrumb back=true >
|
||||||
|
@ -55,10 +60,6 @@ pub fn ObjectPage(tl: Timeline) -> impl IntoView {
|
||||||
},
|
},
|
||||||
Some(Some(o)) => {
|
Some(Some(o)) => {
|
||||||
let object = o.clone();
|
let object = o.clone();
|
||||||
let tl_url = format!("{}/page", Uri::api(U::Context, &o.context().id().unwrap_or_default(), false));
|
|
||||||
if !tl.next.get().starts_with(&tl_url) {
|
|
||||||
tl.reset(tl_url);
|
|
||||||
}
|
|
||||||
view!{
|
view!{
|
||||||
<Object object=object />
|
<Object object=object />
|
||||||
<div class="ml-1 mr-1 mt-2">
|
<div class="ml-1 mr-1 mt-2">
|
||||||
|
|
|
@ -32,6 +32,10 @@ pub fn UserPage(tl: Timeline) -> impl IntoView {
|
||||||
move || params.get().get("id").cloned().unwrap_or_default(),
|
move || params.get().get("id").cloned().unwrap_or_default(),
|
||||||
move |id| {
|
move |id| {
|
||||||
async move {
|
async move {
|
||||||
|
let tl_url = format!("{}/outbox/page", Uri::api(U::Actor, &id, false));
|
||||||
|
if !tl.next.get().starts_with(&tl_url) {
|
||||||
|
tl.reset(tl_url);
|
||||||
|
}
|
||||||
match CACHE.get(&Uri::full(U::Actor, &id)) {
|
match CACHE.get(&Uri::full(U::Actor, &id)) {
|
||||||
Some(x) => Some(x.clone()),
|
Some(x) => Some(x.clone()),
|
||||||
None => {
|
None => {
|
||||||
|
@ -82,10 +86,6 @@ pub fn UserPage(tl: Timeline) -> impl IntoView {
|
||||||
let following = object.following_count().unwrap_or(0);
|
let following = object.following_count().unwrap_or(0);
|
||||||
let followers = object.followers_count().unwrap_or(0);
|
let followers = object.followers_count().unwrap_or(0);
|
||||||
let statuses = object.statuses_count().unwrap_or(0);
|
let statuses = object.statuses_count().unwrap_or(0);
|
||||||
let tl_url = format!("{}/outbox/page", Uri::api(U::Actor, &id.clone(), false));
|
|
||||||
if !tl.next.get().starts_with(&tl_url) {
|
|
||||||
tl.reset(tl_url);
|
|
||||||
}
|
|
||||||
let following_me = object.following_me().unwrap_or(false);
|
let following_me = object.following_me().unwrap_or(false);
|
||||||
let followed_by_me = object.followed_by_me().unwrap_or(false);
|
let followed_by_me = object.followed_by_me().unwrap_or(false);
|
||||||
let _uid = uid.clone();
|
let _uid = uid.clone();
|
||||||
|
|
Loading…
Reference in a new issue