Privacy policy and terms
CI / check (push) Canceled after 0s

/privacy and /terms describe what the app actually collects and shows
(public profiles and listening, 50 recent plays, encrypted service tokens,
stripped profile pictures, Android reader scope, song lookups that carry no
identity, 14-day backups, 13+), linked from a web footer, the sign-up
forms and mobile Settings.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MzFywujuH9TiuXbr9vjoX8
This commit is contained in:
2026-10-06 13:07:54 -04:00
co-authored by Claude Opus 5.5
parent 85e1643c29
commit 50f00f922b
7 changed files with 270 additions and 2 deletions
+17 -1
View File
@@ -1,8 +1,9 @@
import { Image } from 'expo-image';
import { Link } from 'expo-router';
import { useState } from 'react';
import { KeyboardAvoidingView, Platform, StyleSheet, View } from 'react-native';
import { KeyboardAvoidingView, Linking, Platform, StyleSheet, Text, View } from 'react-native';
import { api } from '@/lib/api';
import { WEB_URL } from '@/lib/config';
import { useSession } from '@/lib/session';
import { colors, space } from '@/lib/theme';
import { Screen } from './Screen';
@@ -70,6 +71,19 @@ export function AuthForm({ mode }: { mode: 'login' | 'register' }) {
/>
{error && <Body style={{ color: colors.danger }}>{error}</Body>}
<Button variant="primary" title={mode === 'login' ? 'Log in' : 'Create account'} loading={busy} onPress={submit} />
{mode === 'register' && (
<Text style={styles.legal}>
By creating an account you agree to the{' '}
<Text style={styles.legalLink} onPress={() => Linking.openURL(`${WEB_URL}/terms`)}>
terms
</Text>{' '}
and{' '}
<Text style={styles.legalLink} onPress={() => Linking.openURL(`${WEB_URL}/privacy`)}>
privacy policy
</Text>
. You must be 13 or older. Your profile and what you play are public.
</Text>
)}
{mode === 'login' && (
<Link href="/forgot-password" style={styles.link}>
Forgot your password?
@@ -92,5 +106,7 @@ export function AuthForm({ mode }: { mode: 'login' | 'register' }) {
const styles = StyleSheet.create({
content: { flexGrow: 1, justifyContent: 'center' },
link: { color: colors.muted, textAlign: 'center', paddingVertical: space.sm },
legal: { color: colors.muted, fontSize: 12, textAlign: 'center', lineHeight: 17 },
legalLink: { color: colors.text, textDecorationLine: 'underline' },
logo: { width: 76, height: 76, borderRadius: 20, marginBottom: space.sm },
});