summaryrefslogtreecommitdiff
path: root/apps/web/app/reader/_components/reader-shell.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'apps/web/app/reader/_components/reader-shell.tsx')
-rw-r--r--apps/web/app/reader/_components/reader-shell.tsx21
1 files changed, 20 insertions, 1 deletions
diff --git a/apps/web/app/reader/_components/reader-shell.tsx b/apps/web/app/reader/_components/reader-shell.tsx
index 09278c3..247ec8d 100644
--- a/apps/web/app/reader/_components/reader-shell.tsx
+++ b/apps/web/app/reader/_components/reader-shell.tsx
@@ -1,6 +1,7 @@
"use client"
-import { Group, Panel, Separator, useDefaultLayout } from "react-resizable-panels"
+import { useEffect, useRef } from "react"
+import { Group, Panel, Separator, useDefaultLayout, useGroupRef } from "react-resizable-panels"
import { useUserInterfaceStore } from "@/lib/stores/user-interface-store"
import { useMarkAllAsRead } from "@/lib/queries/use-mark-all-as-read"
import { useSubscriptions } from "@/lib/queries/use-subscriptions"
@@ -58,6 +59,23 @@ export function ReaderShell({
storage: typeof window !== "undefined" ? localStorage : { getItem: () => null, setItem: () => {} },
})
+ const detailGroupRef = useGroupRef()
+ const detailOnLayoutChangedRef = useRef(detailLayout.onLayoutChanged)
+ detailOnLayoutChangedRef.current = detailLayout.onLayoutChanged
+
+ useEffect(() => {
+ useUserInterfaceStore.getState().setResetDetailLayout(() => {
+ const group = detailGroupRef.current
+ if (!group) return
+ const appliedLayout = group.setLayout({
+ "entry-list": 50,
+ "detail-panel": 50,
+ })
+ detailOnLayoutChangedRef.current?.(appliedLayout)
+ })
+ return () => useUserInterfaceStore.getState().setResetDetailLayout(null)
+ }, [detailGroupRef])
+
useRealtimeEntries()
let pageTitle = feedFilter === "saved" ? "saved" : "all entries"
@@ -192,6 +210,7 @@ export function ReaderShell({
className="min-h-0 flex-1"
defaultLayout={detailLayout.defaultLayout}
onLayoutChanged={detailLayout.onLayoutChanged}
+ groupRef={detailGroupRef}
>
<Panel id="entry-list" defaultSize={selectedEntryIdentifier ? "40%" : "100%"} minSize="25%">
<div data-panel-zone="entryList" className={classNames(