Skip to content
Snippets Groups Projects
Commit 643128e0 authored by Nidharshan A's avatar Nidharshan A
Browse files

Delete useFolder.js

parent 5fafe007
No related branches found
No related tags found
No related merge requests found
import { useState,useReducer, useEffect } from "react";
import { database } from '../fire.js'
import firebase from 'firebase'
export const ROOT_FOLDER = {name: 'Root', id : null , path : [] };
export function useFolder( folderId = null, folder= null) {
// const {currentUser} = firebase.auth.currentUser;
const ACTIONS = {
SELECT_FOLDER : 'select-folder',
UPDATE_FOLDER : 'update-folder',
SET_CHILD_FOLDERS : 'set_child_folders',
}
function reducer( state, { type,payload } ){
switch(type){
case ACTIONS.SELECT_FOLDER:
return{
folderId : payload.folderId,
folder : payload.folder,
childFiles : [],
childFolders : [],
};
case ACTIONS.UPDATE_FOLDER:
return{
...state,
folder : payload.folder,
};
case ACTIONS.SET_CHILD_FOLDERS:
return{
...state,
childFolders : payload.childFolders,
};
default:
return state;
}
}
const[state,dispatch] = useReducer( reducer,{
folderId,
folder,
childFolders : [],
childFiles : []
}
);
useEffect( () => {
dispatch({ type : ACTIONS.SELECT_FOLDER, payload : { folderId,folder }})
} ,[folderId,folder])
useEffect( ()=> {
if(folderId==null){
return dispatch({
type: ACTIONS.UPDATE_FOLDER,
payload: {folder : ROOT_FOLDER},
})
}
database.folders.doc(folderId).get()
.then(doc => {
dispatch({
type: ACTIONS.UPDATE_FOLDER,
payload : {folder: database.formatDoc(doc)}
})
})
.catch( ()=> {
dispatch({
type: ACTIONS.UPDATE_FOLDER,
payload : {folder: ROOT_FOLDER}
})
})
return state;
},[folderId])
useEffect( () => {
return database.folders
.where("parentId", "==" ,folderId)
.where("userId","==", firebase.auth().currentUser.uid)
.orderBy("createdAt")
.onSnapshot(snapshot => {
dispatch({
type: ACTIONS.SET_CHILD_FOLDERS,
payload : { childFolders : snapshot.docs.map(database.formatDoc) }
})
})
},[folderId])
return state;
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment