Open History to see the last commit
1import { useAtomValue } from "@effect/atom-react";
2import { AsyncResult } from "effect/reactivity";
3import { Platform } from "react-native";
4import {
5 NAVIGATION_TAB_LABELS,
6 navigationCustomizationAvailable,
7 resolveHiddenNavigationTabs,
8 enabledNavigationTabs,
9 type NavigationTab,
10} from "./navigation-tab-order";
11import type { AppSymbolName } from "../../../components/ui/AppSymbol";
12import { mobilePreferencesAtom } from "../../../state/preferences";
13import { PullRequestGlyph } from "../../pull-requests/pullRequestGlyphs";
14import { resolveWorkspaceTabOrder } from "./workspace-tabs-state";
15
16export const WORKSPACE_TAB_LABELS = {
17 ...NAVIGATION_TAB_LABELS,
18 ...(Platform.OS === "ios" ? { threads: "Chats", pullRequests: "PRs" } : {}),
19};
20
21export const NAVIGATION_TAB_ICONS = {
22 threads: "text.bubble",
23 pullRequests: PullRequestGlyph.pullRequest,
24 usage: "chart.bar.xaxis",
25} as const satisfies Readonly<Record<NavigationTab, AppSymbolName>>;
26
27export function useNavigationTabOrder() {
28 const preferences = useAtomValue(mobilePreferencesAtom);
29 const saved = AsyncResult.isSuccess(preferences)
30 ? preferences.value.navigationTabOrder
31 : undefined;
32 return resolveWorkspaceTabOrder(saved);
33}
34
35export function useHiddenNavigationTabs() {
36 const preferences = useAtomValue(mobilePreferencesAtom);
37 const saved = AsyncResult.isSuccess(preferences)
38 ? preferences.value.hiddenNavigationTabs
39 : undefined;
40 return navigationCustomizationAvailable() ? resolveHiddenNavigationTabs(saved) : [];
41}
42
43export function useEnabledNavigationTabs() {
44 const order = useNavigationTabOrder();
45 const hidden = useHiddenNavigationTabs();
46 return enabledNavigationTabs(order, hidden);
47}