Skip to content

Commit

Permalink
Hooked up new OPML route to UI; turned RSS and OPML feed buttons into…
Browse files Browse the repository at this point in the history
… links
  • Loading branch information
kieraneglin committed Dec 30, 2024
1 parent 48d84d7 commit 0a73b27
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 17 deletions.
3 changes: 2 additions & 1 deletion lib/pinchflat_web/controllers/sources/source_html.ex
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,12 @@ defmodule PinchflatWeb.Sources.SourceHTML do
end

def rss_feed_url(conn, source) do
# TODO: finally address this. I shouldn't have to use concatination here
url(conn, ~p"/sources/#{source.uuid}/feed") <> ".xml"
end

def opml_feed_url(conn) do
url(conn, ~p"/sources/opml") <> ".xml"
url(conn, ~p"/sources/opml.xml?#{[route_token: Settings.get!(:route_token)]}")
end

def output_path_template_override_placeholders(media_profiles) do
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,16 @@
<.button_dropdown text="Actions" class="justify-center w-full sm:w-50">
<:option>
<span
x-data="{ copied: false }"
x-on:click={"
copyWithCallbacks(
'#{rss_feed_url(@conn, @source)}',
() => copied = true,
() => copied = false
)
"}
>
<.link href={rss_feed_url(@conn, @source)} x-data="{ copied: false }" x-on:click={~s"
$event.preventDefault();
copyWithCallbacks(
'#{rss_feed_url(@conn, @source)}',
() => copied = true,
() => copied = false
)
"}>
Copy RSS Feed
<span x-show="copied" x-transition.duration.150ms><.icon name="hero-check" class="ml-2 h-4 w-4" /></span>
</span>
</.link>
</:option>
<:option>
<span x-data="{ copied: false }" x-on:click={~s"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
<div class="mb-6 flex gap-3 flex-row items-center justify-between">
<h2 class="text-title-md2 font-bold text-black dark:text-white">Sources</h2>
<nav>
<.button color="bg-transparent" x-data="{ copied: false }" x-on:click={~s"
<nav class="flex items-center justify-between gap-6">
<.link href={opml_feed_url(@conn)} x-data="{ copied: false }" x-on:click={~s"
$event.preventDefault();
copyWithCallbacks(
'#{opml_feed_url(@conn)}',
() => copied = true,
() => copied = false
)
"}>
Copy OPML Feed
Copy OPML <span class="hidden sm:inline">Feed</span>
<span x-show="copied" x-transition.duration.150ms><.icon name="hero-check" class="ml-2 h-4 w-4" /></span>
</.button>
</.link>
<.link href={~p"/sources/new"}>
<.button color="bg-primary" rounding="rounded-lg">
<span class="font-bold mx-2">+</span> New <span class="hidden sm:inline pl-1">Source</span>
Expand Down
7 changes: 7 additions & 0 deletions lib/pinchflat_web/endpoint.ex
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,13 @@ defmodule PinchflatWeb.Endpoint do
Phoenix.Controller.put_router_url(conn, new_base_url)
end

# Some podcast clients require file extensions, and others still will _add_
# file extensions to XML files if they don't have them. This plug removes
# the extension from the path so that the correct route is matched, regardless
# of the provided extension.
#
# This has the downside of in-app generated verified routes not working with
# extensions so this behaviour may change in the future.
defp strip_trailing_extension(%{path_info: []} = conn, _opts), do: conn

defp strip_trailing_extension(conn, _opts) do
Expand Down
4 changes: 3 additions & 1 deletion lib/pinchflat_web/router.ex
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@ defmodule PinchflatWeb.Router do
plug :allow_iframe_embed
end

pipeline :api, do: plug(:accepts, ["json"])
pipeline :api do
plug :accepts, ["json"]
end

scope "/", PinchflatWeb do
pipe_through [:maybe_basic_auth, :token_protected_route]
Expand Down

0 comments on commit 0a73b27

Please sign in to comment.