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!
-