mirror of
https://github.com/jjbrunton/Sauci.git
synced 2026-10-31 18:19:43 +00:00
fix(mobile): keep pairing discoveries truthful
This commit is contained in:
1 parent
a02e9d531b
commit
4415dcf29f
7 files changed
+27
-10
No files matched your search
@@ -14,7 +14,7 @@ const bucket = (n: number) => n === 0 ? "0" : n <= 2 ? "1-2" : n <= 5 ? "3-5" :
|
||||
|
||||
export default function PairedScreen() {
|
||||
const { user, couple, partner } = useAuthStore();
|
||||
const { newMatchesCount, fetchMatches } = useMatchStore();
|
||||
const { newMatchesCount, fetchMatches, error } = useMatchStore();
|
||||
const [ready, setReady] = useState(false);
|
||||
const { role: rawRole } = useLocalSearchParams<{ role?: "inviter" | "joiner" }>();
|
||||
const heading = useRef<Text>(null);
|
||||
@@ -24,7 +24,7 @@ export default function PairedScreen() {
|
||||
void fetchMatches(true).finally(() => setReady(true));
|
||||
}, [fetchMatches]);
|
||||
useEffect(() => {
|
||||
if (!ready || !user || !couple) return;
|
||||
if (!ready || error || !user || !couple) return;
|
||||
void markPairedUnlockSeen(user.id, couple.id);
|
||||
Events.pairingUnlockViewed(role, bucket(newMatchesCount));
|
||||
const timer = setTimeout(() => {
|
||||
@@ -40,10 +40,13 @@ export default function PairedScreen() {
|
||||
if (!ready) {
|
||||
return <GradientBackground><View style={styles.container}><ActivityIndicator size="large" color={colors.primary} /></View></GradientBackground>;
|
||||
}
|
||||
if (error) {
|
||||
return <GradientBackground><View style={styles.container}><Text style={styles.title}>We couldn't load your shared discoveries</Text><Text style={styles.body}>Check your connection and try again.</Text><GlassButton fullWidth onPress={() => { setReady(false); void fetchMatches(true).finally(() => setReady(true)); }} testID="paired-retry">Try again</GlassButton></View></GradientBackground>;
|
||||
}
|
||||
return <GradientBackground><View style={styles.container}>
|
||||
<LinearGradient colors={gradients.primary as [string, string]} style={styles.icon}><Ionicons name="heart" size={42} color={colors.text} /></LinearGradient>
|
||||
<Text ref={heading} accessibilityRole="header" style={styles.title}>You're paired with {partnerName}</Text>
|
||||
{newMatchesCount > 0 ? <><Text style={styles.count}>{newMatchesCount} thing{newMatchesCount === 1 ? "" : "s"} you already agree on</Text><Text style={styles.body}>From answers you both gave before now.</Text><GlassButton fullWidth onPress={viewMatches} testID="paired-view-matches">See what you agree on</GlassButton><GlassButton variant="secondary" fullWidth onPress={start} testID="paired-start-session">Start a session</GlassButton></> : <><Text style={styles.body}>Nothing to compare yet. Answer a few questions and anything you agree on shows up here.</Text><GlassButton fullWidth onPress={start} testID="paired-start-session">Answer your first questions</GlassButton></>}
|
||||
{newMatchesCount > 0 ? <><Text style={styles.count}>{newMatchesCount} shared discover{newMatchesCount === 1 ? "y" : "ies"} ready to explore</Text><Text style={styles.body}>From answers you both gave before now.</Text><GlassButton fullWidth onPress={viewMatches} testID="paired-view-matches">See shared discoveries</GlassButton><GlassButton variant="secondary" fullWidth onPress={start} testID="paired-start-session">Start a session</GlassButton></> : <><Text style={styles.body}>Nothing is ready to compare yet. Answer a few questions and shared discoveries will appear here.</Text><GlassButton fullWidth onPress={start} testID="paired-start-session">Answer your first questions</GlassButton></>}
|
||||
<TouchableOpacity onPress={dismiss} testID="paired-not-now" style={styles.dismiss}><Text style={styles.dismissText}>Not now</Text></TouchableOpacity>
|
||||
</View></GradientBackground>;
|
||||
}
|
||||
|
||||
@@ -363,7 +363,7 @@ export default function PairingScreen() {
|
||||
<Ionicons name="heart" size={40} color={colors.text} />
|
||||
</LinearGradient>
|
||||
<Text style={styles.subtitle}>
|
||||
They unlock your answers when they join
|
||||
Your answers are ready to compare when you both answer
|
||||
</Text>
|
||||
</Animated.View>
|
||||
|
||||
@@ -375,7 +375,7 @@ export default function PairingScreen() {
|
||||
>
|
||||
<GlassCard variant="elevated">
|
||||
<Text style={styles.sealedCountText} testID="pairing-sealed-count">
|
||||
You've answered at least {sealedCount} question{sealedCount === 1 ? "" : "s"} about you two. As soon as they join, everything you both agree on appears for both of you.
|
||||
You've answered at least {sealedCount} question{sealedCount === 1 ? "" : "s"} about you two. When you both answer, shared discoveries are visible to you both.
|
||||
</Text>
|
||||
</GlassCard>
|
||||
</Animated.View>
|
||||
@@ -511,7 +511,7 @@ export default function PairingScreen() {
|
||||
<Ionicons name="link" size={40} color={colors.text} />
|
||||
</LinearGradient>
|
||||
<Text style={styles.subtitle}>
|
||||
Answer privately. See what you agree on together.
|
||||
Answer privately. Compare your shared discoveries together.
|
||||
</Text>
|
||||
</Animated.View>
|
||||
|
||||
|
||||
Reference in new issue
Block a user