From c493655a1020c5dffcfac41f69a698201c2315d0 Mon Sep 17 00:00:00 2001
From: Gana016 <jayam.ganapathi12@gmail.com>
Date: Thu, 1 Apr 2021 22:04:52 +0530
Subject: [PATCH] delete file

---
 digital-course-file/src/user/File.js | 228 +++++++++++++++++----------
 1 file changed, 143 insertions(+), 85 deletions(-)

diff --git a/digital-course-file/src/user/File.js b/digital-course-file/src/user/File.js
index 39855fa..e01520e 100644
--- a/digital-course-file/src/user/File.js
+++ b/digital-course-file/src/user/File.js
@@ -1,102 +1,160 @@
-import { faFile } from "@fortawesome/free-solid-svg-icons"
-import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"
-import {React, useState }from "react"
-import { storage } from '../fire.js'
-import Axios from 'axios';
-import fileDownload from 'js-file-download';
-import { Button,Modal,Form} from 'react-bootstrap';
-import { useContextMenu, Menu, Item } from "react-contexify";
-import "react-contexify/dist/ReactContexify.css";
+import { faFile } from '@fortawesome/free-solid-svg-icons'
+import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
+import { React, useState } from 'react'
+import { storage, storageRef, firestore1, database } from '../fire.js'
+import Axios from 'axios'
+import fileDownload from 'js-file-download'
+import { Button, Modal, Form } from 'react-bootstrap'
+import { useContextMenu, Menu, Item } from 'react-contexify'
+import 'react-contexify/dist/ReactContexify.css'
+import firebase from 'firebase'
 
 export default function File({ file }) {
-  const [showit, setShowit] = useState(false);
-  const MENU_ID = "#asvdsdv/asqrca662";
-  const [fname,setFname] = useState(file.name);
-  const [uploaddetail,setuploadDetail] = useState("");
+  const [showit, setShowit] = useState(false)
+  const MENU_ID = '#asvdsdv/asqrca662'
+  const [fname, setFname] = useState(file.name)
+  const [show1, setshow1] = useState(false)
+  const [show2, setshow2] = useState(false)
+  const [fileurl, setfileURL] = useState('')
+  const [fileid, setfileid] = useState('')
+  const [uploaddetail, setuploadDetail] = useState('')
+  const db = firebase.firestore()
+  const [uniqueid1, setuniqueid1] = useState('')
+  const { show } = useContextMenu({
+    id: MENU_ID,
+  })
 
-    const { show } = useContextMenu({
-        id: MENU_ID,
-      });
+  function closeModal() {
+    setShowit(false)
+    setshow1(false)
+    setshow2(false)
+  }
+  function displayMenu(e) {
+    show(e, {
+      props: {
+        id: Number(e.currentTarget.id),
+        fileURL: file.url,
+        fileName: file.name,
+        showit: showit,
+        details: file.createdAt,
+        fileuniqueID: file.uniqueid,
+        fileID: file.id,
+      },
+    })
+  }
 
-      function closeModal(){
-        setShowit(false);
+  function handleItemClick({ event, props, file }) {
+    switch (event.currentTarget.id) {
+      case 'download':
+        // Getting download url of the file and converting it as data to blob using axios and then downloading it
+        var httpsReference = storage.refFromURL(props.fileURL)
+        httpsReference
+          .getDownloadURL()
+          .then((url) => {
+            Axios.get(url, {
+              responseType: 'blob',
+            }).then((res) => {
+              fileDownload(res.data, props.fileName)
+            })
+          })
+          .catch((error) => {
+            console.log('ERROR')
+          })
+        break
+
+      case 'details':
+        setShowit(true)
+        setFname(props.fileName)
+        setuploadDetail(Date(props.details.toMillis()))
+        break
+
+      case 'delete':
+        setshow1(true)
+        setuniqueid1(props.fileuniqueID)
+        setfileid(props.fileid)
+        break
     }
-      function displayMenu(e) {
-        show(e, { props: { id: Number(e.currentTarget.id), fileURL : file.url, fileName : file.name, showit : showit , details : file.createdAt} });
-      }
-    
-      function handleItemClick({ event, props,file}) {
+  }
 
-        switch (event.currentTarget.id) {
+  function handleDelete({ props }) {
+    const storageRef = firebase.storage().ref()
 
-          case "download":
-            // Getting download url of the file and converting it as data to blob using axios and then downloading it
-            var httpsReference = storage.refFromURL(props.fileURL);
-            httpsReference.getDownloadURL()
-            .then((url) => {
-              Axios.get(url, {
-                responseType: 'blob',
-              }).then(res => {
-                fileDownload(res.data, props.fileName);
-              });
-            })
-            .catch((error) => {
-              console.log("ERROR");
-            });
-            break;
+    var path = 'files/' + firebase.auth().currentUser.uid + '/' + uniqueid1
+    console.log(path)
+    var desertRef1 = storageRef.child(path)
+    desertRef1.delete()
 
-          case "details":
-              setShowit(true);
-              setFname(props.fileName);
-              setuploadDetail(Date((props.details).toMillis()));
-            break;
+    database.files
+      .doc(file.id)
+      .delete()
+      .then(() => {
+        console.log('Folder deleted')
+      })
+      .catch((error) => {
+        console.error('Error :', error)
+      })
 
-          case "delete":
-            break;
-        }
-      }
+    closeModal()
+  }
 
   return (
-
     <div id='root'>
-    <a
-      onContextMenu={displayMenu}
-      href={file.url}
-      target="_blank"
-      className="btn btn-outline-dark text-truncate w-100"
-    >
-      <FontAwesomeIcon icon={faFile} className="mr-2" />
-      {file.name}
-    </a>
-
-        {/* CONTEXT MENU FOR FILE */}
-        <Menu id={MENU_ID}>
-            <Item id="download" onClick={handleItemClick}>
-              Download
-            </Item>
-            <Item id="details" onClick={handleItemClick}>
-              Details
-            </Item>
-            <Item id="delete" onClick={handleItemClick}>
-              Delete
-            </Item>
-        </Menu>
-
-        {/* FOR SHOWING DETAILS OF THE FILE */}
-         <Modal show={showit} onHide={closeModal}>
-            <Modal.Body>
-                <p>File  :  {fname}</p>
-                <p>Uploaded On : {(""+uploaddetail).substring(0,34)+"(IST)"}</p>
-            </Modal.Body>
-            <Modal.Footer>
-            <Button variant="danger" onClick={closeModal}>
-                  Close
-                </Button>
-              </Modal.Footer>
-          </Modal>
+      <a
+        onContextMenu={displayMenu}
+        href={file.url}
+        target='_blank'
+        className='btn btn-outline-dark text-truncate w-100'
+      >
+        <FontAwesomeIcon icon={faFile} className='mr-2' />
+        {file.name}
+      </a>
 
+      {/* CONTEXT MENU FOR FILE */}
+      <Menu id={MENU_ID}>
+        <Item id='download' onClick={handleItemClick}>
+          Download
+        </Item>
+        <Item id='details' onClick={handleItemClick}>
+          Details
+        </Item>
+        <Item id='delete' onClick={handleItemClick}>
+          Delete
+        </Item>
+      </Menu>
 
+      {/* FOR SHOWING DETAILS OF THE FILE */}
+      <Modal show={showit} onHide={closeModal}>
+        <Modal.Body>
+          <p>File : {fname}</p>
+          <p>Uploaded On : {('' + uploaddetail).substring(0, 34) + '(IST)'}</p>
+        </Modal.Body>
+        <Modal.Footer>
+          <Button variant='danger' onClick={closeModal}>
+            Close
+          </Button>
+        </Modal.Footer>
+      </Modal>
+      <Modal show={show1} onHide={closeModal}>
+        <Form>
+          <Modal.Body>
+            <div>Do you want to delete the current file?</div>
+          </Modal.Body>
+          <Modal.Footer>
+            <Button
+              name='del_confirm'
+              style={{ float: 'left' }}
+              className='mr-2'
+              variant='danger'
+              onClick={handleDelete}
+            >
+              DELETE
+            </Button>
+            <Button variant='primary' onClick={closeModal}>
+              Cancel
+            </Button>
+          </Modal.Footer>
+        </Form>
+      </Modal>
     </div>
-
   )
 }
-- 
GitLab