diff options
| author | MohamedBassem <me@mbassem.com> | 2024-03-13 21:43:44 +0000 |
|---|---|---|
| committer | Mohamed Bassem <me@mbassem.com> | 2024-03-14 16:40:45 +0000 |
| commit | 04572a8e5081b1e4871e273cde9dbaaa44c52fe0 (patch) | |
| tree | 8e993acb732a50d1306d4d6953df96c165c57f57 /packages/mobile/app/signin.tsx | |
| parent | 2df08ed08c065e8b91bc8df0266bd4bcbb062be4 (diff) | |
| download | karakeep-04572a8e5081b1e4871e273cde9dbaaa44c52fe0.tar.zst | |
structure: Create apps dir and copy tooling dir from t3-turbo repo
Diffstat (limited to 'packages/mobile/app/signin.tsx')
| -rw-r--r-- | packages/mobile/app/signin.tsx | 101 |
1 files changed, 0 insertions, 101 deletions
diff --git a/packages/mobile/app/signin.tsx b/packages/mobile/app/signin.tsx deleted file mode 100644 index a89b0087..00000000 --- a/packages/mobile/app/signin.tsx +++ /dev/null @@ -1,101 +0,0 @@ -import { useRouter } from "expo-router"; -import { useEffect, useState } from "react"; -import { View, Text } from "react-native"; - -import Logo from "@/components/Logo"; -import { Button } from "@/components/ui/Button"; -import { Input } from "@/components/ui/Input"; -import useAppSettings from "@/lib/settings"; -import { api } from "@/lib/trpc"; - -export default function Signin() { - const router = useRouter(); - - const { settings, setSettings } = useAppSettings(); - - const [error, setError] = useState<string | undefined>(); - - const { mutate: login, isPending } = api.apiKeys.exchange.useMutation({ - onSuccess: (resp) => { - setSettings({ ...settings, apiKey: resp.key }); - router.replace("dashboard"); - }, - onError: (e) => { - if (e.data?.code === "UNAUTHORIZED") { - setError("Wrong username or password"); - } else { - setError(`${e.message}`); - } - }, - }); - - const [formData, setFormData] = useState<{ - email: string; - password: string; - }>({ - email: "", - password: "", - }); - - useEffect(() => { - if (settings.apiKey) { - router.navigate("dashboard"); - } - }, [settings]); - - const onSignin = () => { - const randStr = (Math.random() + 1).toString(36).substring(5); - login({ ...formData, keyName: `Mobile App: (${randStr})` }); - }; - - return ( - <View className="flex h-full flex-col justify-center gap-2 px-4"> - <View className="items-center"> - <Logo /> - </View> - {error && ( - <Text className="w-full text-center text-red-500">{error}</Text> - )} - <View className="gap-2"> - <Text className="font-bold">Server Address</Text> - <Input - className="w-full" - placeholder="Server Address" - value={settings.address} - autoCapitalize="none" - keyboardType="url" - onEndEditing={(e) => - setSettings({ ...settings, address: e.nativeEvent.text }) - } - /> - </View> - <View className="gap-2"> - <Text className="font-bold">Email</Text> - <Input - className="w-full" - placeholder="Email" - keyboardType="email-address" - autoCapitalize="none" - value={formData.email} - onChangeText={(e) => setFormData((s) => ({ ...s, email: e }))} - /> - </View> - <View className="gap-2"> - <Text className="font-bold">Password</Text> - <Input - className="w-full" - placeholder="Password" - secureTextEntry - value={formData.password} - onChangeText={(e) => setFormData((s) => ({ ...s, password: e }))} - /> - </View> - <Button - className="w-full" - label="Sign In" - onPress={onSignin} - disabled={isPending} - /> - </View> - ); -} |
