mirror of
https://github.com/urosran/cally.git
synced 2025-11-26 08:24:55 +00:00
137 lines
4.1 KiB
TypeScript
137 lines
4.1 KiB
TypeScript
import {useState} from "react";
|
|
import {useMutation} from "react-query";
|
|
import auth from "@react-native-firebase/auth";
|
|
import firestore from "@react-native-firebase/firestore";
|
|
import {User,} from "./types/profileTypes";
|
|
import {useSignUp} from "@/hooks/firebase/useSignUp";
|
|
|
|
type ProfileType = "parent" | "child" | "caregiver" | null;
|
|
|
|
const useAuth = () => {
|
|
const createUserMutation = useMutation(() =>
|
|
auth().createUserWithEmailAndPassword(email, password)
|
|
);
|
|
const signInMutation = useMutation(() =>
|
|
auth().signInWithEmailAndPassword(email, password)
|
|
);
|
|
const loginMutation = useMutation(() =>
|
|
auth().signInWithEmailAndPassword(email, password)
|
|
);
|
|
const signOutMutation = useMutation(() => auth().signOut());
|
|
const {mutateAsync: signUp } = useSignUp()
|
|
|
|
/*const setProfileDataMutation = useMutation((profileData) => {
|
|
const currentUser = auth().currentUser;
|
|
if (currentUser) {
|
|
return firestore()
|
|
.collection("Profiles")
|
|
.doc(currentUser.uid)
|
|
.set(profileData);
|
|
}
|
|
});*/
|
|
|
|
const [user, setUser] = useState<User | null>(null);
|
|
const [profileType, setProfileType] = useState<ProfileType>(null);
|
|
const [email, setEmail] = useState<string>("");
|
|
const [password, setPassword] = useState<string>("");
|
|
|
|
const handleRegister = async () => {
|
|
try {
|
|
|
|
await signUp({email, password})
|
|
// await createUserMutation.mutateAsync();
|
|
console.log("User registered!");
|
|
|
|
// await signInMutation.mutateAsync();
|
|
// console.log("User signed in!");
|
|
|
|
/*let profileData: ParentProfile | ChildProfile | CaregiverProfile;
|
|
switch (profileType) {
|
|
case "parent":
|
|
profileData = {
|
|
userType: "parent",
|
|
name: "",
|
|
childrenIds: [],
|
|
} as ParentProfile;
|
|
break;
|
|
case "child":
|
|
profileData = {
|
|
userType: "child",
|
|
name: "",
|
|
birthday: new Date(),
|
|
parentId: "X",
|
|
} as ChildProfile;
|
|
break;
|
|
case "caregiver":
|
|
profileData = {
|
|
userType: "caregiver",
|
|
name: "Nanny Nannersen",
|
|
contact: "5523123",
|
|
} as CaregiverProfile;
|
|
break;
|
|
default:
|
|
throw new Error("Invalid profile type");
|
|
}
|
|
|
|
const currentUser = auth().currentUser;
|
|
if (currentUser) {
|
|
await firestore()
|
|
.collection("Profiles")
|
|
.doc(currentUser.uid)
|
|
.set(profileData);
|
|
console.log("Profile document added!");
|
|
}*/
|
|
} catch (error) {
|
|
console.error("Error during registration: ", error);
|
|
}
|
|
};
|
|
|
|
const handleLogin = async () => {
|
|
try {
|
|
await loginMutation.mutateAsync();
|
|
console.log("User signed in!");
|
|
} catch (error) {
|
|
console.error("Error during sign in:", error);
|
|
}
|
|
};
|
|
|
|
const handleSignOut = async () => {
|
|
try {
|
|
await signOutMutation.mutateAsync();
|
|
console.log("User signed out!");
|
|
} catch (error) {
|
|
console.error("Error during sign out:", error);
|
|
}
|
|
};
|
|
|
|
const handleProfileTypeSelection = async (type: ProfileType) => {
|
|
if (user) {
|
|
setProfileType(type);
|
|
|
|
try {
|
|
await firestore()
|
|
.collection("Profiles")
|
|
.doc(user.uid)
|
|
.set({profileType: type}, {merge: true});
|
|
} catch (error) {
|
|
console.error("Error saving profile type:", error);
|
|
}
|
|
}
|
|
};
|
|
|
|
return {
|
|
user,
|
|
profileType,
|
|
email,
|
|
setEmail,
|
|
password,
|
|
setPassword,
|
|
handleLogin,
|
|
handleSignOut,
|
|
handleProfileTypeSelection,
|
|
handleRegister,
|
|
};
|
|
};
|
|
|
|
export default useAuth;
|