From 2c262bea47ad2381e8c0a304464a5286aa32f3b6 Mon Sep 17 00:00:00 2001 From: David Herberth Date: Sat, 18 Jan 2025 10:11:34 +0100 Subject: [PATCH] app: correctly opens pob2 for poe2 pastes --- app/src/components/view_paste.rs | 2 +- app/src/pages/user.rs | 2 +- shared/src/id.rs | 21 ++++++++++++++------- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/app/src/components/view_paste.rs b/app/src/components/view_paste.rs index 4112e64..1a05bdb 100644 --- a/app/src/components/view_paste.rs +++ b/app/src/components/view_paste.rs @@ -60,7 +60,7 @@ pub fn ViewPaste<'a, G: Html>( let since = crate::utils::pretty_date_ts(last_modified); let date = js_sys::Date::new(&JsValue::from_f64(last_modified as f64)).to_string(); - let open_in_pob_url = id.to_pob_open_url(); + let open_in_pob_url = id.to_pob_open_url(gv); let pob_cool_url = format!("https://pob.cool/#build={SELF_URL}{}", id.to_url()); let logo = view_cond!(cx, gv.is_poe2(), { diff --git a/app/src/pages/user.rs b/app/src/pages/user.rs index 5c389e1..702e001 100644 --- a/app/src/pages/user.rs +++ b/app/src/pages/user.rs @@ -120,7 +120,7 @@ fn summary_to_view<'a, G: GenericNode + Html>( let color = crate::meta::get_color(summary.ascendancy_or_class); let id = summary.id.clone().unwrap_user(); - let open_in_pob_url = id.to_pob_open_url(); + let open_in_pob_url = id.to_pob_open_url(summary.game_version); // TODO: this sucks and is annoying let version = summary.version.clone().unwrap_or_default(); diff --git a/shared/src/id.rs b/shared/src/id.rs index e81290d..b3bec61 100644 --- a/shared/src/id.rs +++ b/shared/src/id.rs @@ -2,7 +2,7 @@ use std::{fmt, str::FromStr}; use serde::{Deserialize, Serialize}; -use crate::UrlSafe; +use crate::{GameVersion, UrlSafe}; #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord)] pub struct Id(String); @@ -138,9 +138,13 @@ impl UserPasteId { .join(&*self.id) } - pub fn to_pob_open_url(&self) -> UrlSafe<'static> { - UrlSafe::from_static("pob://pobbin/") - .join(UrlSafe::new(&self.user).push(":").push(&*self.id)) + pub fn to_pob_open_url(&self, gv: GameVersion) -> UrlSafe<'static> { + let id = UrlSafe::new(&self.user).push(":").push(&*self.id); + + match gv { + GameVersion::One => UrlSafe::from_static("pob://pobbin/").join(id), + GameVersion::Two => UrlSafe::from_static("pob2://pobbin/").join(id), + } } } @@ -199,10 +203,13 @@ impl PasteId { } } - pub fn to_pob_open_url(&self) -> UrlSafe<'static> { + pub fn to_pob_open_url(&self, gv: GameVersion) -> UrlSafe<'static> { match self { - Self::Paste(id) => UrlSafe::from_static("pob://pobbin/").join(id.as_str()), - Self::UserPaste(up) => up.to_pob_open_url(), + Self::Paste(id) => match gv { + GameVersion::One => UrlSafe::from_static("pob://pobbin/").join(id.as_str()), + GameVersion::Two => UrlSafe::from_static("pob2://pobbin/").join(id.as_str()), + }, + Self::UserPaste(up) => up.to_pob_open_url(gv), } }