- creating and updating resumes

This commit is contained in:
Amruth Pillai
2020-07-04 14:31:25 +05:30
parent e1f1d84201
commit e247cb102c
16 changed files with 273 additions and 72 deletions

View File

@ -1,8 +1,16 @@
import React, { createContext, useState } from "react";
const defaultState = {
authModal: {},
createResumeModal: {},
authModal: {
isOpen: false,
setOpen: () => {},
},
createResumeModal: {
isOpen: false,
setOpen: () => {},
data: null,
setData: () => {},
},
};
const ModalContext = createContext(defaultState);
@ -10,6 +18,7 @@ const ModalContext = createContext(defaultState);
const ModalProvider = ({ children }) => {
const [authOpen, setAuthOpen] = useState(false);
const [createResumeOpen, setCreateResumeOpen] = useState(false);
const [createResumeData, setCreateResumeData] = useState(null);
return (
<ModalContext.Provider
@ -18,6 +27,8 @@ const ModalProvider = ({ children }) => {
createResumeModal: {
isOpen: createResumeOpen,
setOpen: setCreateResumeOpen,
data: createResumeData,
setData: setCreateResumeData,
},
}}
>

View File

@ -0,0 +1,74 @@
import firebase from "gatsby-plugin-firebase";
import React, { createContext, useContext, useEffect, useState } from "react";
import { v4 as uuidv4 } from "uuid";
import { transformCollectionSnapshot } from "../utils";
import UserContext from "./UserContext";
const defaultState = {
resumes: [],
createResume: async () => {},
};
const ResumeContext = createContext(defaultState);
const ResumeProvider = ({ children }) => {
const [resumes, setResumes] = useState([null]);
const [collectionRef, setCollectionRef] = useState(null);
const { user } = useContext(UserContext);
useEffect(() => {
if (user) {
setCollectionRef(`users/${user.uid}/resumes`);
}
}, [user]);
useEffect(() => {
if (collectionRef) {
firebase
.firestore()
.collection(collectionRef)
.onSnapshot((snapshot) =>
transformCollectionSnapshot(snapshot, setResumes)
);
}
}, [collectionRef]);
const createResume = async ({ name }) => {
const id = uuidv4();
const createdAt = firebase.firestore.FieldValue.serverTimestamp();
await firebase.firestore().collection(collectionRef).doc(id).set({
id,
name,
createdAt,
updatedAt: createdAt,
});
};
const updateResume = async (resume) => {
const { id, name } = resume;
if (resumes.find((x) => x.id === id) === resume) return;
await firebase.firestore().collection(collectionRef).doc(id).update({
id,
name,
updatedAt: firebase.firestore.FieldValue.serverTimestamp(),
});
};
return (
<ResumeContext.Provider
value={{
resumes,
createResume,
updateResume,
}}
>
{children}
</ResumeContext.Provider>
);
};
export default ResumeContext;
export { ResumeProvider };