diff --git a/packages/nicolium/src/columns/timeline.tsx b/packages/nicolium/src/columns/timeline.tsx index 1d225472f..9b0e84540 100644 --- a/packages/nicolium/src/columns/timeline.tsx +++ b/packages/nicolium/src/columns/timeline.tsx @@ -584,10 +584,13 @@ const getRestoredPosition = (me: string) => { const HomeTimelineColumn: React.FC = (props) => { const me = useAppSelector((state) => state.me); - const timelineFilters = useSettings().timelines.home; + const { + timelines: { home: timelineFilters }, + rememberTimelinePosition, + } = useSettings(); const maxId = useMemo(() => { - if (!me) return undefined; + if (!me || !rememberTimelinePosition) return undefined; const position = getRestoredPosition(me); @@ -608,7 +611,7 @@ const HomeTimelineColumn: React.FC = (props) => { const handleTopItemChanged = (index: number) => { const entry = timelineQuery.entries[index]; - if (me) savePosition(me, entry, index); + if (me && rememberTimelinePosition) savePosition(me, entry, index); }; return ( diff --git a/packages/nicolium/src/features/preferences/index.tsx b/packages/nicolium/src/features/preferences/index.tsx index 3a201f294..89c7f8e29 100644 --- a/packages/nicolium/src/features/preferences/index.tsx +++ b/packages/nicolium/src/features/preferences/index.tsx @@ -373,6 +373,46 @@ const Preferences = () => { + + + } + hint={ + + } + > + + + + + } + > + + + + }> diff --git a/packages/nicolium/src/locales/en.json b/packages/nicolium/src/locales/en.json index 0a9ebb226..341f3803c 100644 --- a/packages/nicolium/src/locales/en.json +++ b/packages/nicolium/src/locales/en.json @@ -1567,6 +1567,7 @@ "preferences.fields.boost_modal_label": "Show confirmation dialog before reposting", "preferences.fields.check_emoji_react_supports_hint": "This will expose your IP address to the instances you’re interacting with.", "preferences.fields.check_emoji_react_supports_label": "Check whether remote hosts supports emoji reactions when reacting", + "preferences.fields.compose_in_timelines_label": "Display post composer in timelines", "preferences.fields.content_type_label": "Default post format", "preferences.fields.delete_modal_label": "Show confirmation dialog before deleting a post", "preferences.fields.demetricator_label": "Hide social media counters", @@ -1588,6 +1589,8 @@ "preferences.fields.preserve_spoilers_label": "Preserve content warning when replying", "preferences.fields.privacy_label": "Default post privacy", "preferences.fields.reduce_motion_label": "Reduce motion in animations", + "preferences.fields.remember_timeline_position_hint": "When enabled, the app will return to the place you left off in the home timeline last time you visited it.", + "preferences.fields.remember_timeline_position_label": "Remeber position of home timeline", "preferences.fields.render_advanced_mfm_label": "Enable advanced MFM", "preferences.fields.render_animated_mfm_label": "Enable animated MFM", "preferences.fields.render_mfm_hint": "MFM support is experimental, not all node types are supported.", diff --git a/packages/nicolium/src/schemas/frontend-settings.ts b/packages/nicolium/src/schemas/frontend-settings.ts index 992d857fb..46138428d 100644 --- a/packages/nicolium/src/schemas/frontend-settings.ts +++ b/packages/nicolium/src/schemas/frontend-settings.ts @@ -54,6 +54,7 @@ const settingsSchema = v.object({ stripMetadata: v.fallback(v.boolean(), false), storeSettingsInNotes: v.fallback(v.boolean(), false), composeInTimelines: v.fallback(v.boolean(), true), + rememberTimelinePosition: v.fallback(v.boolean(), true), theme: v.optional( coerceObject({