@@ -3,6 +3,8 @@ import { browser } from '$app/environment';
33export type ArticleFont = 'sans-serif' | 'serif' | 'mono' | 'literata' ;
44export type ArticleFontSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' ;
55export type BaseSortOrder = 'newest' | 'oldest' ;
6+ // Which reading surface the app opens to on a fresh load (the `/` redirector).
7+ export type DefaultView = 'home' | 'feeds' | 'saved' ;
68
79const FONT_SIZE_ORDER : ArticleFontSize [ ] = [ 'xs' , 'sm' , 'md' , 'lg' , 'xl' ] ;
810
@@ -14,6 +16,8 @@ interface PreferencesState {
1416 sortOrder : BaseSortOrder ;
1517 // Set once the user has acknowledged the first-share "this is public" confirmation.
1618 linkblogShareConfirmed : boolean ;
19+ // Which surface a cold app load lands on (consumed by the `/` redirector).
20+ defaultView : DefaultView ;
1721}
1822
1923const STORAGE_KEY = 'skyreader-preferences' ;
@@ -26,6 +30,7 @@ function createPreferencesStore() {
2630 expandAllItems : true ,
2731 sortOrder : 'newest' ,
2832 linkblogShareConfirmed : false ,
33+ defaultView : 'home' ,
2934 } ) ;
3035
3136 // Restore from localStorage on init
@@ -52,6 +57,13 @@ function createPreferencesStore() {
5257 if ( parsed . linkblogShareConfirmed !== undefined ) {
5358 state . linkblogShareConfirmed = parsed . linkblogShareConfirmed ;
5459 }
60+ if (
61+ parsed . defaultView === 'home' ||
62+ parsed . defaultView === 'feeds' ||
63+ parsed . defaultView === 'saved'
64+ ) {
65+ state . defaultView = parsed . defaultView ;
66+ }
5567 } catch {
5668 localStorage . removeItem ( STORAGE_KEY ) ;
5769 }
@@ -120,6 +132,11 @@ function createPreferencesStore() {
120132 save ( ) ;
121133 }
122134
135+ function setDefaultView ( view : DefaultView ) {
136+ state . defaultView = view ;
137+ save ( ) ;
138+ }
139+
123140 return {
124141 get articleFont ( ) {
125142 return state . articleFont ;
@@ -139,7 +156,11 @@ function createPreferencesStore() {
139156 get linkblogShareConfirmed ( ) {
140157 return state . linkblogShareConfirmed ;
141158 } ,
159+ get defaultView ( ) {
160+ return state . defaultView ;
161+ } ,
142162 confirmLinkblogShare,
163+ setDefaultView,
143164 setArticleFont,
144165 setArticleFontSize,
145166 increaseFontSize,
0 commit comments