From 4092ab90e0e423568aff5bdeb0252a4529f8c692 Mon Sep 17 00:00:00 2001 From: Jack Chakany Date: Thu, 16 Feb 2023 09:13:36 -0500 Subject: [PATCH] Add default page selector --- packages/app/src/Pages/Root.tsx | 13 +++++++-- .../app/src/Pages/settings/Preferences.tsx | 29 +++++++++++++++++++ packages/app/src/Pages/settings/messages.ts | 4 +++ packages/app/src/State/Login.ts | 6 ++++ 4 files changed, 50 insertions(+), 2 deletions(-) diff --git a/packages/app/src/Pages/Root.tsx b/packages/app/src/Pages/Root.tsx index 47ea1cb..079bfd0 100644 --- a/packages/app/src/Pages/Root.tsx +++ b/packages/app/src/Pages/Root.tsx @@ -15,7 +15,7 @@ import { debounce } from "Util"; export default function RootPage() { const { formatMessage } = useIntl(); - const { loggedOut, publicKey: pubKey, follows, tags, relays } = useSelector((s: RootState) => s.login); + const { loggedOut, publicKey: pubKey, follows, tags, relays, preferences } = useSelector((s: RootState) => s.login); const RootTab: Record = { Posts: { text: formatMessage(messages.Posts), @@ -30,7 +30,16 @@ export default function RootPage() { value: 2, }, }; - const [tab, setTab] = useState(RootTab.Posts); + const [tab, setTab] = useState(() => { + switch (preferences.defaultPage) { + case "posts": + return RootTab.Posts; + case "conversations": + return RootTab.PostsAndReplies; + case "global": + return RootTab.Global; + } + }); const [relay, setRelay] = useState(); const [globalRelays, setGlobalRelays] = useState([]); const tagTabs = tags.map((t, idx) => { diff --git a/packages/app/src/Pages/settings/Preferences.tsx b/packages/app/src/Pages/settings/Preferences.tsx index ac9ab0f..470342f 100644 --- a/packages/app/src/Pages/settings/Preferences.tsx +++ b/packages/app/src/Pages/settings/Preferences.tsx @@ -50,6 +50,35 @@ const PreferencesPage = () => { +
+
+
+ +
+
+
+ +
+
diff --git a/packages/app/src/Pages/settings/messages.ts b/packages/app/src/Pages/settings/messages.ts index 11cdf50..80a666d 100644 --- a/packages/app/src/Pages/settings/messages.ts +++ b/packages/app/src/Pages/settings/messages.ts @@ -15,6 +15,10 @@ export default defineMessages({ System: { defaultMessage: "System (Default)" }, Light: { defaultMessage: "Light" }, Dark: { defaultMessage: "Dark" }, + DefaultPage: { defaultMessage: "Default Page" }, + Posts: { defaultMessage: "Posts" }, + Conversations: { defaultMessage: "Conversations" }, + Global: { defaultMessage: "Global" }, AutoloadMedia: { defaultMessage: "Automatically load media" }, AutoloadMediaHelp: { defaultMessage: "Media in posts will automatically be shown for selected people, otherwise only the link will show", diff --git a/packages/app/src/State/Login.ts b/packages/app/src/State/Login.ts index ef8929a..a1e2611 100644 --- a/packages/app/src/State/Login.ts +++ b/packages/app/src/State/Login.ts @@ -65,6 +65,11 @@ export interface UserPreferences { * Use imgproxy to optimize images */ imgProxyConfig: ImgProxySettings | null; + + /** + * Default page to select on load + */ + defaultPage: "posts" | "conversations" | "global"; } export type DbType = "indexdDb" | "redux"; @@ -225,6 +230,7 @@ export const InitState = { autoShowLatest: false, fileUploader: "void.cat", imgProxyConfig: DefaultImgProxy, + defaultPage: "posts", }, } as LoginStore;