summaryrefslogtreecommitdiff
path: root/apps/web/app/reader/settings
diff options
context:
space:
mode:
authorFuwn <[email protected]>2026-02-09 21:12:16 -0800
committerFuwn <[email protected]>2026-02-09 21:12:16 -0800
commit3c0b53ccbe40a75d6105f0e22c43a9f46975d9c1 (patch)
tree7289ba4e663ed388f0effc9462d845c9120cc785 /apps/web/app/reader/settings
parentfix: elevate to AAL2 before password/email change when MFA is enabled (diff)
downloadasa.news-3c0b53ccbe40a75d6105f0e22c43a9f46975d9c1.tar.xz
asa.news-3c0b53ccbe40a75d6105f0e22c43a9f46975d9c1.zip
feat: add per-feed "hide from timeline" option
Diffstat (limited to 'apps/web/app/reader/settings')
-rw-r--r--apps/web/app/reader/settings/_components/settings-shell.tsx2
-rw-r--r--apps/web/app/reader/settings/_components/subscriptions-settings.tsx18
2 files changed, 19 insertions, 1 deletions
diff --git a/apps/web/app/reader/settings/_components/settings-shell.tsx b/apps/web/app/reader/settings/_components/settings-shell.tsx
index 4153fc4..9d6c2d6 100644
--- a/apps/web/app/reader/settings/_components/settings-shell.tsx
+++ b/apps/web/app/reader/settings/_components/settings-shell.tsx
@@ -65,7 +65,7 @@ export function SettingsShell() {
</div>
</nav>
<div className="flex-1 overflow-y-auto">
- <div className="max-w-3xl">
+ <div className="max-w-4xl">
{activeTab === "subscriptions" && <SubscriptionsSettings />}
{activeTab === "folders" && <FoldersSettings />}
{activeTab === "muted-phrases" && <MutedPhrasesSettings />}
diff --git a/apps/web/app/reader/settings/_components/subscriptions-settings.tsx b/apps/web/app/reader/settings/_components/subscriptions-settings.tsx
index 1e9245d..7ac037d 100644
--- a/apps/web/app/reader/settings/_components/subscriptions-settings.tsx
+++ b/apps/web/app/reader/settings/_components/subscriptions-settings.tsx
@@ -4,6 +4,7 @@ import { useState } from "react"
import { useSubscriptions } from "@/lib/queries/use-subscriptions"
import {
useUpdateSubscriptionTitle,
+ useUpdateSubscriptionHiddenFromTimeline,
useUpdateFeedUrl,
useUpdateFeedCredentials,
useAddFeedCredentials,
@@ -50,6 +51,7 @@ function SubscriptionRow({
const [editedAuthType, setEditedAuthType] = useState("bearer")
const [editedCredential, setEditedCredential] = useState("")
const updateTitle = useUpdateSubscriptionTitle()
+ const updateHiddenFromTimeline = useUpdateSubscriptionHiddenFromTimeline()
const updateFeedUrl = useUpdateFeedUrl()
const updateCredentials = useUpdateFeedCredentials()
const addCredentials = useAddFeedCredentials()
@@ -279,6 +281,22 @@ function SubscriptionRow({
</div>
) : null}
<div className="flex flex-wrap items-center gap-2">
+ <button
+ onClick={() =>
+ updateHiddenFromTimeline.mutate({
+ subscriptionIdentifier: subscription.subscriptionIdentifier,
+ hiddenFromTimeline: !subscription.hiddenFromTimeline,
+ })
+ }
+ disabled={updateHiddenFromTimeline.isPending}
+ className={
+ subscription.hiddenFromTimeline
+ ? "px-2 py-1 text-text-dim transition-colors hover:text-text-secondary disabled:opacity-50"
+ : "px-2 py-1 text-text-secondary transition-colors hover:text-text-primary disabled:opacity-50"
+ }
+ >
+ {subscription.hiddenFromTimeline ? "hidden from timeline" : "hide from timeline"}
+ </button>
<select
value={subscription.folderIdentifier ?? ""}
onChange={(event) => handleFolderChange(event.target.value)}