- implement duplicate resume functionality

This commit is contained in:
Amruth Pillai
2020-07-11 21:45:34 +05:30
parent 5ec1f21bd3
commit 8972a96afd
4 changed files with 33 additions and 10 deletions

View File

@ -1,5 +1,6 @@
import { Link } from 'gatsby'; import { Link } from 'gatsby';
import React, { memo } from 'react'; import React, { memo } from 'react';
import { Tooltip } from '@material-ui/core';
import sections from '../../../data/leftSections'; import sections from '../../../data/leftSections';
import Avatar from '../../shared/Avatar'; import Avatar from '../../shared/Avatar';
import Logo from '../../shared/Logo'; import Logo from '../../shared/Logo';
@ -8,9 +9,13 @@ import styles from './LeftNavbar.module.css';
const LeftNavbar = () => ( const LeftNavbar = () => (
<div className={styles.container}> <div className={styles.container}>
<Link to="/app/dashboard"> <Tooltip title="Go Back to Dashboard" placement="right">
<Logo size="40px" /> <div>
</Link> <Link to="/app/dashboard">
<Logo size="40px" />
</Link>
</div>
</Tooltip>
<hr className="my-6" /> <hr className="my-6" />

View File

@ -11,7 +11,7 @@ import styles from './ResumePreview.module.css';
const ResumePreview = ({ resume }) => { const ResumePreview = ({ resume }) => {
const [anchorEl, setAnchorEl] = useState(null); const [anchorEl, setAnchorEl] = useState(null);
const { emitter, events } = useContext(ModalContext); const { emitter, events } = useContext(ModalContext);
const { deleteResume } = useContext(DatabaseContext); const { duplicateResume, deleteResume } = useContext(DatabaseContext);
const handleOpen = () => navigate(`/app/builder/${resume.id}`); const handleOpen = () => navigate(`/app/builder/${resume.id}`);
@ -19,6 +19,11 @@ const ResumePreview = ({ resume }) => {
setAnchorEl(event.currentTarget); setAnchorEl(event.currentTarget);
}; };
const handleDuplicate = () => {
duplicateResume(resume);
setAnchorEl(null);
};
const handleRename = () => { const handleRename = () => {
emitter.emit(events.CREATE_RESUME_MODAL, resume); emitter.emit(events.CREATE_RESUME_MODAL, resume);
setAnchorEl(null); setAnchorEl(null);
@ -62,6 +67,7 @@ const ResumePreview = ({ resume }) => {
open={Boolean(anchorEl)} open={Boolean(anchorEl)}
onClose={handleMenuClose} onClose={handleMenuClose}
> >
<MenuItem onClick={handleDuplicate}>Duplicate</MenuItem>
<MenuItem onClick={handleRename}>Rename</MenuItem> <MenuItem onClick={handleRename}>Rename</MenuItem>
<MenuItem onClick={handleDelete}> <MenuItem onClick={handleDelete}>
<span className="text-red-600 font-medium">Delete</span> <span className="text-red-600 font-medium">Delete</span>

View File

@ -10,6 +10,7 @@ const DEBOUNCE_WAIT_TIME = 4000;
const defaultState = { const defaultState = {
isUpdating: false, isUpdating: false,
createResume: () => {}, createResume: () => {},
duplicateResume: () => {},
deleteResume: () => {}, deleteResume: () => {},
getResume: async () => {}, getResume: async () => {},
getResumes: async () => {}, getResumes: async () => {},
@ -66,6 +67,21 @@ const DatabaseProvider = ({ children }) => {
firebase.database().ref(`resumes/${id}`).set(resume); firebase.database().ref(`resumes/${id}`).set(resume);
}; };
const duplicateResume = (originalResume) => {
const id = uuid();
const createdAt = firebase.database.ServerValue.TIMESTAMP;
const resume = {
...originalResume,
id,
name: `${originalResume.name} Copy`,
createdAt,
updatedAt: createdAt,
};
firebase.database().ref(`resumes/${id}`).set(resume);
};
const updateResume = async (resume) => { const updateResume = async (resume) => {
setUpdating(true); setUpdating(true);
@ -83,11 +99,6 @@ const DatabaseProvider = ({ children }) => {
const debouncedUpdateResume = debounce(updateResume, DEBOUNCE_WAIT_TIME); const debouncedUpdateResume = debounce(updateResume, DEBOUNCE_WAIT_TIME);
const deleteResume = async (id) => { const deleteResume = async (id) => {
await firebase
.storage()
.ref(`/users/${user.uid}/photographs/${id}`)
.delete();
await firebase.database().ref(`/resumes/${id}`).remove(); await firebase.database().ref(`/resumes/${id}`).remove();
}; };
@ -97,6 +108,7 @@ const DatabaseProvider = ({ children }) => {
isUpdating, isUpdating,
getResume, getResume,
createResume, createResume,
duplicateResume,
updateResume, updateResume,
deleteResume, deleteResume,
debouncedUpdateResume, debouncedUpdateResume,

View File

@ -9,5 +9,5 @@
} }
.footer { .footer {
@apply mb-16 text-center opacity-50 leading-loose; @apply mb-16 text-white text-center opacity-50 leading-loose;
} }