From 9be9ff990cdcccd18e08ee9161e143547929ba71 Mon Sep 17 00:00:00 2001
From: Gana016 <jayam.ganapathi12@gmail.com>
Date: Sat, 1 May 2021 17:23:04 +0530
Subject: [PATCH] link update

---
 digital-course-file/src/user/Folder.js        | 268 +++++++++---------
 digital-course-file/src/user/FolderNav.js     |  59 ++--
 .../src/user/ForgotPassword.js                |  47 +--
 digital-course-file/src/user/Sharelink.js     |   6 +-
 4 files changed, 197 insertions(+), 183 deletions(-)

diff --git a/digital-course-file/src/user/Folder.js b/digital-course-file/src/user/Folder.js
index ee6f132..ee5cf11 100644
--- a/digital-course-file/src/user/Folder.js
+++ b/digital-course-file/src/user/Folder.js
@@ -1,155 +1,161 @@
-import { React,useState,Fragment } from "react";
-import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
-import { faFolder } from "@fortawesome/free-solid-svg-icons"
-import { Button,Modal,Form } from "react-bootstrap";
-import { Link } from "react-router-dom";
-import { useHistory } from "react-router-dom";
+import { React, useState, Fragment } from 'react'
+import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
+import { faFolder } from '@fortawesome/free-solid-svg-icons'
+import { Button, Modal, Form } from 'react-bootstrap'
+import { Link } from 'react-router-dom'
+import { useHistory } from 'react-router-dom'
 import { database } from '../fire.js'
 import firebase from 'firebase'
-import { useContextMenu, Menu, Item, Separator } from "react-contexify";
-import "react-contexify/dist/ReactContexify.css";
+import { useContextMenu, Menu, Item, Separator } from 'react-contexify'
+import 'react-contexify/dist/ReactContexify.css'
+import { BrowserRouter } from 'react-router-dom'
 
-export default function Folder ({folder}) {
-    const MENU_ID = "#aadsd299dfsdwqwdasc29";
-    const history = useHistory();
+export default function Folder({ folder }) {
+  const MENU_ID = '#aadsd299dfsdwqwdasc29'
+  const history = useHistory()
 
-    const [showit, setShowit] = useState(false);
-    const [showit1, setShowit1] = useState(false);
-    const [fname,setFname] = useState(folder.name);
-    const [fid,setFid] = useState(folder.id);
-    const [uploaddetail,setuploadDetail] = useState("");
-    const [name, setName] = useState(folder.name);
+  const [showit, setShowit] = useState(false)
+  const [showit1, setShowit1] = useState(false)
+  const [fname, setFname] = useState(folder.name)
+  const [fid, setFid] = useState(folder.id)
+  const [uploaddetail, setuploadDetail] = useState('')
+  const [name, setName] = useState(folder.name)
 
-    const { show } = useContextMenu({
-        id: MENU_ID,
-      });
+  const { show } = useContextMenu({
+    id: MENU_ID,
+  })
 
-      function closeModal(){
-        setShowit(false);
-        setShowit1(false);
-    }
-      function displayMenu(e) {
-        show(e, { props: { id: Number(e.currentTarget.id) , folderId : folder.id , folderName : folder.name, showit : showit , details : folder.createdAt} });
-      }
-    
-      function handleItemClick({ event, props, data, triggerEvent}) {
-        switch (event.currentTarget.id) {
-          case "open":
-            history.push(`/folder/${props.folderId}`);
-            break;
+  function closeModal() {
+    setShowit(false)
+    setShowit1(false)
+  }
+  function displayMenu(e) {
+    show(e, {
+      props: {
+        id: Number(e.currentTarget.id),
+        folderId: folder.id,
+        folderName: folder.name,
+        showit: showit,
+        details: folder.createdAt,
+      },
+    })
+  }
 
-          case "rename":
-            setFid(props.folderId);
-            setShowit1(true);
-            setName(props.folderName);
-            break;
+  function handleItemClick({ event, props, data, triggerEvent }) {
+    switch (event.currentTarget.id) {
+      case 'open':
+        history.push(`/folder/${props.folderId}`)
+        break
 
-          case "details":
-            setShowit(true);
-            setFname(props.folderName);
-            setuploadDetail(Date((props.details).toMillis()));
-            break;
-  
-        }
-      }
+      case 'rename':
+        setFid(props.folderId)
+        setShowit1(true)
+        setName(props.folderName)
+        break
 
+      case 'details':
+        setShowit(true)
+        setFname(props.folderName)
+        setuploadDetail(Date(props.details.toMillis()))
+        break
+    }
+  }
 
-      function handleSubmit(e){
+  function handleSubmit(e) {
+    //Renaming the current folder in database
+    e.preventDefault()
+    const docRef = database.folders.doc(fid)
+    docRef.update({ name: name })
+    closeModal()
 
-        //Renaming the current folder in database
-        e.preventDefault();
-        const docRef = database.folders.doc(fid);
-        docRef.update({"name": name});
-        closeModal();
-        
-        //Changing name of path in all child folders
-        var folderdel = database.folders
-        .where("userId","==", firebase.auth().currentUser.uid)
-        .where("parents", "array-contains", fid);
-        folderdel.get().then(function(querySnapshot) {
-            querySnapshot.forEach(function(doc) {
-              const child_folder_id = doc.id;
-              const child_folder_path = doc.data().path;
-              for (var key in child_folder_path) {
-                if(child_folder_path[key].id == fid){
-                  child_folder_path[key].name = name;
-                }
-              }
-              const docRef1 = database.folders.doc(child_folder_id);
-              docRef1.update({"path": child_folder_path});
-            });
-        });
-      }
+    //Changing name of path in all child folders
+    var folderdel = database.folders
+      .where('userId', '==', firebase.auth().currentUser.uid)
+      .where('parents', 'array-contains', fid)
+    folderdel.get().then(function (querySnapshot) {
+      querySnapshot.forEach(function (doc) {
+        const child_folder_id = doc.id
+        const child_folder_path = doc.data().path
+        for (var key in child_folder_path) {
+          if (child_folder_path[key].id == fid) {
+            child_folder_path[key].name = name
+          }
+        }
+        const docRef1 = database.folders.doc(child_folder_id)
+        docRef1.update({ path: child_folder_path })
+      })
+    })
+  }
 
-    return (
-      <Fragment>
-        <div>
-        <Button 
+  return (
+    <Fragment>
+      <div>
+        <BrowserRouter>
+          <Button
             onContextMenu={displayMenu}
             id={folder.id}
-            to={`/folder/${folder.id}`} 
-            variant="outline-secondary" 
-            className="text-truncate w-100" 
-            as={Link}>
-            <FontAwesomeIcon icon={faFolder} className="mr-2"/>
+            to={`/folder/${folder.id}`}
+            variant='outline-secondary'
+            className='text-truncate w-100'
+            as={Link}
+          >
+            <FontAwesomeIcon icon={faFolder} className='mr-2' />
             {folder.name}
-        </Button>
-        
+          </Button>
+        </BrowserRouter>
+
         {/* CONTEXT MENU FOR THE COMPONENT */}
         <Menu id={MENU_ID}>
-            <Item id="open" onClick={handleItemClick} >
-              Open
-            </Item>
-            <Item id="rename" onClick={handleItemClick}>
-              Rename
-            </Item>
-            <Item id="details" onClick={handleItemClick}>
-              Details
-            </Item>
+          <Item id='open' onClick={handleItemClick}>
+            Open
+          </Item>
+          <Item id='rename' onClick={handleItemClick}>
+            Rename
+          </Item>
+          <Item id='details' onClick={handleItemClick}>
+            Details
+          </Item>
         </Menu>
 
-
         {/* FOR SHOWING DETAILS OF THE FOLDER */}
         <Modal show={showit} onHide={closeModal}>
-            <Modal.Body>
+          <Modal.Body>
             <h3>Folder details</h3>
-                <p>Folder  :  {fname}</p>
-                <p>Created On : {(""+uploaddetail).substring(0,34)+"(IST)"}</p>
+            <p>Folder : {fname}</p>
+            <p>Created On : {('' + uploaddetail).substring(0, 34) + '(IST)'}</p>
+          </Modal.Body>
+          <Modal.Footer>
+            <Button variant='danger' onClick={closeModal}>
+              Close
+            </Button>
+          </Modal.Footer>
+        </Modal>
+
+        {/* FOR RENAMING THE FOLDER */}
+        <Modal show={showit1} onHide={closeModal}>
+          <Form onSubmit={handleSubmit}>
+            <Modal.Body>
+              <Form.Group>
+                <Form.Label>RENAME FOLDER</Form.Label>
+                <Form.Control
+                  type='text'
+                  required
+                  value={name}
+                  onChange={(e) => setName(e.target.value)}
+                />
+              </Form.Group>
             </Modal.Body>
             <Modal.Footer>
-            <Button variant="danger" onClick={closeModal}>
-                  Close
-                </Button>
-              </Modal.Footer>
-          </Modal>
-
-          {/* FOR RENAMING THE FOLDER */}
-          <Modal show={showit1} onHide={closeModal} >
-            <Form onSubmit={handleSubmit}>
-              <Modal.Body>
-                <Form.Group>
-                  <Form.Label>RENAME FOLDER</Form.Label>
-                  <Form.Control
-                    type="text"
-                    required
-                    value={name}
-                    onChange={e => setName(e.target.value)}
-                  />
-                </Form.Group>
-              </Modal.Body>
-              <Modal.Footer>
-              <Button variant="success" type="submit">
-                  Rename
-                </Button>
-                <Button variant="danger" onClick={closeModal}>
-                  Cancel
-                </Button>
-              </Modal.Footer>
-            </Form>
-          </Modal>
-
-        </div>
-        </Fragment>
-    );
-
-}
\ No newline at end of file
+              <Button variant='success' type='submit'>
+                Rename
+              </Button>
+              <Button variant='danger' onClick={closeModal}>
+                Cancel
+              </Button>
+            </Modal.Footer>
+          </Form>
+        </Modal>
+      </div>
+    </Fragment>
+  )
+}
diff --git a/digital-course-file/src/user/FolderNav.js b/digital-course-file/src/user/FolderNav.js
index eab3425..fdd0298 100644
--- a/digital-course-file/src/user/FolderNav.js
+++ b/digital-course-file/src/user/FolderNav.js
@@ -1,7 +1,8 @@
-import { react,Fragment } from 'react'
+import { react, Fragment } from 'react'
 import { Breadcrumb } from 'react-bootstrap'
 import { Link } from 'react-router-dom'
 import { ROOT_FOLDER } from '../hooks/useFolder'
+import { BrowserRouter, Switch, Route } from 'react-router-dom'
 
 export default function FolderNav({ currentFolder }) {
   let path = currentFolder === ROOT_FOLDER ? [] : [ROOT_FOLDER]
@@ -12,33 +13,35 @@ export default function FolderNav({ currentFolder }) {
 
   return (
     <Fragment>
-    <Breadcrumb
-      className='flex-grow-1'
-      listProps={{ className: 'bg-white pl-0 m-0' }}
-    >
-      {path.map((folder, index) => (
-        <Breadcrumb.Item
-          key={folder.id}
-          linkAs={Link}
-          linkProps={{
-            to: folder.id ? `/folder/${folder.id}` : '/',
-          }}
-          className='text-truncate d-inline-block'
-          style={{ maxWidth: '175px' }}
+      <BrowserRouter>
+        <Breadcrumb
+          className='flex-grow-1'
+          listProps={{ className: 'bg-white pl-0 m-0' }}
         >
-          {folder.name}
-        </Breadcrumb.Item>
-      ))}
-      {currentFolder && (
-        <Breadcrumb.Item
-          className='text-truncate d-inline-block'
-          style={{ maxWidth: '200px' }}
-          active
-        >
-          {currentFolder.name}
-        </Breadcrumb.Item>
-      )}
-    </Breadcrumb>
+          {path.map((folder, index) => (
+            <Breadcrumb.Item
+              key={folder.id}
+              linkAs={Link}
+              linkProps={{
+                to: folder.id ? `/folder/${folder.id}` : '/',
+              }}
+              className='text-truncate d-inline-block'
+              style={{ maxWidth: '175px' }}
+            >
+              {folder.name}
+            </Breadcrumb.Item>
+          ))}
+          {currentFolder && (
+            <Breadcrumb.Item
+              className='text-truncate d-inline-block'
+              style={{ maxWidth: '200px' }}
+              active
+            >
+              {currentFolder.name}
+            </Breadcrumb.Item>
+          )}
+        </Breadcrumb>
+      </BrowserRouter>
     </Fragment>
   )
-}
\ No newline at end of file
+}
diff --git a/digital-course-file/src/user/ForgotPassword.js b/digital-course-file/src/user/ForgotPassword.js
index fa04881..209bdbc 100644
--- a/digital-course-file/src/user/ForgotPassword.js
+++ b/digital-course-file/src/user/ForgotPassword.js
@@ -1,7 +1,8 @@
-import {React,useState,useEffect,Fragment } from 'react'
+import { React, useState, useEffect, Fragment } from 'react'
 import { Link } from 'react-router-dom'
 import fire from '../fire'
 import firebase from 'firebase'
+import { BrowserRouter } from 'react-router-dom'
 
 export default function ForgotPassword() {
   const [email, setEmail] = useState('')
@@ -23,28 +24,30 @@ export default function ForgotPassword() {
   }
   return (
     <Fragment>
-    <section className='login'>
-      <div className='loginContainer'>
-        <p className='errorMsg'>{emailError}</p>
-        <label>UserName</label>
-        <input
-          type='text'
-          autoFocus
-          required
-          value={email}
-          onChange={(e) => setEmail(e.target.value)}
-        ></input>
-        <div className='btnContainer'>
-          <button onClick={handleforgot}>Reset Password</button>
-          <p>
-            Have an account ?{' '}
-            <Link to='/signin'>
-              <span>Sign in</span>
-            </Link>
-          </p>
+      <section className='login'>
+        <div className='loginContainer'>
+          <p className='errorMsg'>{emailError}</p>
+          <label>UserName</label>
+          <input
+            type='text'
+            autoFocus
+            required
+            value={email}
+            onChange={(e) => setEmail(e.target.value)}
+          ></input>
+          <div className='btnContainer'>
+            <button onClick={handleforgot}>Reset Password</button>
+            <p>
+              Have an account ?{' '}
+              <BrowserRouter>
+                <Link to='/signin'>
+                  <span>Sign in</span>
+                </Link>
+              </BrowserRouter>
+            </p>
+          </div>
         </div>
-      </div>
-    </section>
+      </section>
     </Fragment>
   )
 }
diff --git a/digital-course-file/src/user/Sharelink.js b/digital-course-file/src/user/Sharelink.js
index e6b06a9..32f1a0d 100644
--- a/digital-course-file/src/user/Sharelink.js
+++ b/digital-course-file/src/user/Sharelink.js
@@ -4,6 +4,8 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
 import { faLink, faPaste } from '@fortawesome/free-solid-svg-icons'
 import { CopyToClipboard } from 'react-copy-to-clipboard'
 import ReactTooltip from 'react-tooltip';
+import firebase from 'firebase'
+
 
 export default function Sharelink({ currentFolder }) {
   const divStyle = {
@@ -37,10 +39,10 @@ export default function Sharelink({ currentFolder }) {
           <Form.Group>
             <Form.Label>Sharable link for this folder :</Form.Label>
             <Form.Label>
-              {'https://dcfstudentsview.netlify.app/folders/' + String(currentFolder.id)}
+              {'https://dcfstudentsview.netlify.app/folders/' +String(firebase.auth().currentUser.uid)+'/'+ String(currentFolder.id) }
               <p></p>
               <CopyToClipboard
-                text={'https://dcfstudentsview.netlify.app/folders/' + String(currentFolder.id)}
+                text={'https://dcfstudentsview.netlify.app/folders/' +String(firebase.auth().currentUser.uid)+'/'+ String(currentFolder.id)}
                 onCopy={() => setClipBoard(true)}
               >
                 <FontAwesomeIcon icon={faPaste} />
-- 
GitLab