Sherlock / app / (auth) / confirm.tsx
confirm.tsx
Raw
import React, { useContext, useEffect } from "react";
import {StyleSheet, TouchableOpacity } from "react-native";
import Colors from "../../constants/Colors";
import {Text, View} from '../../components/Themed';
import { useRouter } from "expo-router";
import { MaterialCommunityIcons } from "@expo/vector-icons";
import { DeepLinkContext } from "../_layout";
import { HStack } from "@gluestack-ui/themed";

export default function ConfirmScreen() {
    const router = useRouter();
    const params = useContext(DeepLinkContext) as any;

    useEffect(()=>{
        console.log("Deeplink params:",params)
    },[params])

    return (
        <View style={styles.container}>
            {!params.error&&<View style={styles.content}>
                <MaterialCommunityIcons name="check-circle" color={Colors.dark.cyan} size={40}/>
                <Text style={styles.title}>Your email was confirmed!</Text>
                <TouchableOpacity
                    style={styles.button}
                    onPress={() => router.replace('/(home)/home')}
                >
                    <Text style={styles.buttonText}>Continue on!</Text>
                </TouchableOpacity>
            </View>}
            {params.error&&<View style={styles.content}>
                <HStack style={styles.errorHeader}>
                    <MaterialCommunityIcons name="alert-circle" color={Colors.dark.redPastel} size={40}/>
                    <Text style={[styles.title, {marginBottom:0}]}>Urmmm...</Text>
                </HStack>

                <Text style={styles.errorText}>{params.error}</Text>
                <Text>{params.error_description}</Text>
                <Text>({params.error_code})</Text>
                <TouchableOpacity
                    style={styles.button}
                    onPress={() => router.replace('/(auth)/login')}
                >
                    <Text style={styles.buttonText}>Login Manually</Text>
                </TouchableOpacity>
            </View>}
        </View>
    );
}

const styles = StyleSheet.create({
    container: {
        flex: 1,
        backgroundColor: Colors.dark.tabBg,
    },
    content: {
        flex: 1,
        alignItems: "center",
        justifyContent: "center",
        paddingHorizontal: 20,
    },
    title: {
        fontSize: 24,
        fontWeight: "bold",
        color: Colors.dark.cyan,
        marginBottom: 20,
    },
    button: {
        backgroundColor: Colors.dark.redPastel,
        paddingVertical: 12,
        paddingHorizontal: 30,
        borderRadius: 5,
        marginTop: 20,
    },
    buttonText: {
        fontSize: 16,
        color: Colors.dark.redBackgroundText,
        fontWeight: "bold",
    },
    errorHeader:{
        alignItems:'center',
        columnGap:5,
    },
    errorText: {
        color: Colors.dark.redText,
        fontSize: 18,
        textAlign: "center",
    },
});