diff --git a/packages/app/src/Pages/Root.tsx b/packages/app/src/Pages/Root.tsx index 9764c3f0..af41fa00 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.defaultRootTab) { + case "conversations": + return RootTab.PostsAndReplies; + case "global": + return RootTab.Global; + default: + return RootTab.Posts; + } + }); 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 ac9ab0f4..ba757709 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 11cdf501..d3aed864 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" }, + DefaultRootTab: { 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 ef8929aa..6cc76e0a 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 + */ + defaultRootTab: "posts" | "conversations" | "global"; } export type DbType = "indexdDb" | "redux"; @@ -225,6 +230,7 @@ export const InitState = { autoShowLatest: false, fileUploader: "void.cat", imgProxyConfig: DefaultImgProxy, + defaultRootTab: "posts", }, } as LoginStore;