diff --git a/src/main.rs b/src/main.rs index c6450f1..b675013 100644 --- a/src/main.rs +++ b/src/main.rs @@ -209,7 +209,57 @@ async fn show_feed(Query(params): Query, Host(host): Host) -> ResultOriginal Mastodon Post

"); + body.push_str("\">Original Mastodon Post"); + + let client = ¶ms.client; + if !client.is_empty() { + body.push_str(" - { + body.push_str("https://"); + body.push_str(¶ms.host); + body.push_str("/authorize_interaction?uri="); + body.push_str(&bookmark.url); + body.push_str("\">Open in your Mastodon host"); + } + "elk" => { + body.push_str("https://elk.zone/"); + body.push_str(&bookmark.url); + body.push_str("\">Open in Elk"); + } + "elkcanary" => { + body.push_str("https://main.elk.zone/"); + body.push_str(&bookmark.url); + body.push_str("\">Open in Elk"); + } + "phanpy" => { + body.push_str("https://phanpy.social/#/"); + body.push_str(&bookmark.url); + body.push_str("\">Open in Phanpy"); + } + "phanpydev" => { + body.push_str("https://dev.phanpy.social/#/"); + body.push_str(&bookmark.url); + body.push_str("\">Open in Phanpy"); + } + "trunks" => { + body.push_str("https://trunks.social/resolve?url="); + body.push_str(&bookmark.url); + body.push_str("\">Open in Trunks"); + } + "ivory" => { + body.push_str("ivory://acct/openURL?url="); + body.push_str(&bookmark.url); + body.push_str("\">Open in Ivory"); + } + _ => { + body.push_str(&bookmark.url); + body.push_str("\">Open original post - unknown client :("); + } + } + } + + body.push_str("

"); body.push_str(&escape_for_cdata(&bookmark.content)); body.push_str("]]>"); body.push_str("\n"); @@ -235,6 +285,8 @@ fn escape_for_cdata(input: &str) -> String { struct ShowFeed { host: String, token: String, + #[serde(default)] + client: String, } #[derive(Deserialize)] diff --git a/src/svelte/App.svelte b/src/svelte/App.svelte index ddd975b..48dfb8b 100644 --- a/src/svelte/App.svelte +++ b/src/svelte/App.svelte @@ -2,10 +2,19 @@ export let launchLogin; export let feedUrlPromise; + let baseFeedUrl; + function submitLoginForm(e) { launchLogin(e.target.host.value); e.preventDefault(); } + + function changeClient(e) { + const client = e.target.value; + const result = document.querySelector('input'); + if(!baseFeedUrl) baseFeedUrl = result.value; + result.value = `${client === 'none' ? baseFeedUrl : `${baseFeedUrl}&client=${client}`}`; + } {#await feedUrlPromise} @@ -34,12 +43,23 @@ /> {:else} -
- Subscribe to the following URL in your feed reader. Anybody who knows this - URL can read your bookmarks! -
+
+

Subscribe to the following URL in your feed reader. Anybody who knows this + URL can read your bookmarks!

+
+ +