import { useEffect } from "react"; import { ActivityIndicator, Pressable, ScrollView, Switch, View, } from "react-native"; import { Slider } from "react-native-awesome-slider"; import { useSharedValue } from "react-native-reanimated"; import Constants from "expo-constants"; import { Link } from "expo-router"; import { UserProfileHeader } from "@/components/settings/UserProfileHeader"; import ChevronRight from "@/components/ui/ChevronRight"; import { Divider } from "@/components/ui/Divider"; import { Text } from "@/components/ui/Text"; import { useServerVersion } from "@/lib/hooks"; import { useSession } from "@/lib/session"; import useAppSettings from "@/lib/settings"; import { useQuery } from "@tanstack/react-query"; import { useTRPC } from "@karakeep/shared-react/trpc"; function SectionHeader({ title }: { title: string }) { return ( {title} ); } export default function Settings() { const { logout } = useSession(); const { settings, setSettings, isLoading: isSettingsLoading, } = useAppSettings(); const api = useTRPC(); const imageQuality = useSharedValue(0); const imageQualityMin = useSharedValue(0); const imageQualityMax = useSharedValue(100); useEffect(() => { imageQuality.value = settings.imageQuality * 100; }, [settings]); const { data, error } = useQuery(api.users.whoami.queryOptions()); const { data: serverVersion, isLoading: isServerVersionLoading, error: serverVersionError, } = useServerVersion(); if (error?.data?.code === "UNAUTHORIZED") { logout(); } return ( Theme { { light: "Light", dark: "Dark", system: "System" }[ settings.theme ] } Default Bookmark View {isSettingsLoading ? ( ) : ( {settings.defaultBookmarkView === "reader" ? "Reader" : "Browser"} )} Reader Text Settings Show notes in bookmark card setSettings({ ...settings, showNotes: value, }) } /> Upload Image Quality {Math.round(settings.imageQuality * 100)}% setSettings({ ...settings, imageQuality: Math.round(value) / 100, }) } progress={imageQuality} minimumValue={imageQualityMin} maximumValue={imageQualityMax} /> Log Out Server {isSettingsLoading ? "Loading..." : settings.address} App Version {Constants.expoConfig?.version ?? "unknown"} Server Version {isServerVersionLoading ? "Loading..." : serverVersionError ? "unavailable" : (serverVersion ?? "unknown")} ); }