mirror of
https://github.com/jjbrunton/Sauci.git
synced 2026-11-02 10:19:43 +00:00
- New discovery components (ContentTile, ContentRow, CircularProgress) - Refactor home screen with compact header and content tiles - Add hide_nsfw profile setting for content filtering - Add color column to categories table - Track pack progress (answered/total questions) - Update related stores and tests Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
65 lines
2.0 KiB
TypeScript
65 lines
2.0 KiB
TypeScript
import React from 'react';
|
|
import { View, StyleSheet } from 'react-native';
|
|
import { SettingsSection } from './SettingsSection';
|
|
import { SwitchItem } from './SwitchItem';
|
|
import { colors, spacing } from '../../../theme';
|
|
|
|
interface PrivacySettingsProps {
|
|
biometricAvailable: boolean;
|
|
biometricEnabled: boolean;
|
|
biometricType: string;
|
|
isUpdatingBiometric: boolean;
|
|
onBiometricToggle: (value: boolean) => void;
|
|
hideNsfw: boolean;
|
|
isUpdatingHideNsfw: boolean;
|
|
onHideNsfwToggle: (value: boolean) => void;
|
|
}
|
|
|
|
export const PrivacySettings: React.FC<PrivacySettingsProps> = ({
|
|
biometricAvailable,
|
|
biometricEnabled,
|
|
biometricType,
|
|
isUpdatingBiometric,
|
|
onBiometricToggle,
|
|
hideNsfw,
|
|
isUpdatingHideNsfw,
|
|
onHideNsfwToggle,
|
|
}) => {
|
|
return (
|
|
<SettingsSection title="Preferences" delay={375}>
|
|
{/* Hide Adult Content Toggle */}
|
|
<SwitchItem
|
|
icon="eye-off-outline"
|
|
label="Hide Adult Content"
|
|
description="Only show mild, family-friendly question packs"
|
|
value={hideNsfw}
|
|
onValueChange={onHideNsfwToggle}
|
|
disabled={isUpdatingHideNsfw}
|
|
/>
|
|
|
|
{/* Biometric Toggle */}
|
|
{biometricAvailable && (
|
|
<>
|
|
<View style={styles.divider} />
|
|
<SwitchItem
|
|
icon={biometricType === "Face ID" || biometricType === "Face Recognition" ? "scan-outline" : "finger-print-outline"}
|
|
label={biometricType}
|
|
description="Require unlock when opening app"
|
|
value={biometricEnabled}
|
|
onValueChange={onBiometricToggle}
|
|
disabled={isUpdatingBiometric}
|
|
/>
|
|
</>
|
|
)}
|
|
</SettingsSection>
|
|
);
|
|
};
|
|
|
|
const styles = StyleSheet.create({
|
|
divider: {
|
|
height: 1,
|
|
backgroundColor: colors.glass.border,
|
|
marginVertical: spacing.lg,
|
|
},
|
|
});
|