Files
myDrive/src/components/Subbar/index.jsx
T

173 lines
4.6 KiB
React

import Subbar from "./Subbar";
import { showSideBar, hideSideBar } from "../../actions/main";
import { showAddOptions2 } from "../../actions/addOptions";
import { startAddFile, setFiles, startSetFiles } from "../../actions/files";
import {
startAddFolder,
setFolders,
startSetFolders,
} from "../../actions/folders";
import { enableListView, disableListView } from "../../actions/filter";
import { resetSelected } from "../../actions/selectedItem";
import Swal from "sweetalert2";
import { connect } from "react-redux";
// import { history } from "../../routers/AppRouter";
import React from "react";
import mobileCheck from "../../utils/mobileCheck";
import withNavigate from "../HocComponent";
class SubbarContainer extends React.Component {
constructor(props) {
super(props);
this.uploadInput = React.createRef();
this.wrapperRef = React.createRef();
this.isMobile = mobileCheck();
}
createFolder = async (e) => {
let inputValue = "";
const { value: folderName } = await Swal.fire({
title: "Enter Folder Name",
input: "text",
inputValue: inputValue,
showCancelButton: true,
inputValidator: (value) => {
if (!value) {
return "Please Enter a Name";
}
},
});
if (folderName === undefined || folderName === null) {
return;
}
const parent = this.props.parent;
const owner = this.props.auth.id;
const parentList = this.props.parentList;
this.props.dispatch(startAddFolder(folderName, owner, parent, parentList));
};
handleClickOutside = (e) => {
if (
this.wrapperRef &&
!this.wrapperRef.current.contains(event.target) &&
this.props.showAddOptions2
) {
this.addButtonEvent();
}
};
componentDidMount = () => {
if (this.isMobile) {
document.addEventListener("mousedown", this.handleClickOutside);
}
};
componentWillUnmount = () => {
if (this.isMobile) {
document.removeEventListener("mousedown", this.handleClickOutside);
}
};
addButtonEvent = () => {
const currentAddOptions = !this.props.showAddOptions2;
this.props.dispatch(showAddOptions2(currentAddOptions));
};
handleUpload = (e) => {
e.preventDefault();
this.props.dispatch(
startAddFile(
this.uploadInput.current,
this.props.parent,
this.props.parentList
)
);
this.uploadInput.current.value = "";
};
showSideBarEvent = () => {
let show = this.props.showSideBar;
if (show === "gone") {
show = false;
}
if (show) {
this.props.dispatch(hideSideBar());
} else {
this.props.dispatch(showSideBar());
}
};
showListViewEvent = () => {
let listView = this.props.listView;
const parent = this.props.parent;
const sortBy = this.props.sortBy;
const search = this.props.search;
if (listView) {
this.props.dispatch(resetSelected());
this.props.dispatch(setFiles([]));
this.props.dispatch(setFolders([]));
this.props.dispatch(disableListView());
this.props.dispatch(startSetFiles(parent, sortBy, search));
this.props.dispatch(startSetFolders(parent, sortBy, search));
} else {
this.props.dispatch(resetSelected());
this.props.dispatch(setFiles([]));
this.props.dispatch(setFolders([]));
this.props.dispatch(enableListView());
this.props.dispatch(startSetFiles(parent, sortBy, search));
this.props.dispatch(startSetFolders(parent, sortBy, search));
}
};
itemClick = (id) => {
if (id === "/") {
this.props.navigate("/home");
} else {
this.props.navigate(`/folder/${id}`);
}
};
render() {
return (
<Subbar
uploadInput={this.uploadInput}
wrapperRef={this.wrapperRef}
createFolder={this.createFolder}
addButtonEvent={this.addButtonEvent}
handleUpload={this.handleUpload}
showSideBarEvent={this.showSideBarEvent}
showListViewEvent={this.showListViewEvent}
itemClick={this.itemClick}
isMobile={this.isMobile}
{...this.props}
/>
);
}
}
const connectPropToState = (state) => ({
auth: state.auth,
listView: state.filter.listView,
parentList: state.parent.parentList,
parentNameList: state.parent.parentNameList,
parent: state.parent.parent,
sortBy: state.filter.sortBy,
showAddOptions2: state.addOptions.showAddOptions2,
showSideBar: state.main.showSideBar,
currentlySearching: state.filter.currentlySearching,
search: state.filter.search,
isGoogle: state.filter.isGoogle,
});
export default connect(connectPropToState)(withNavigate(SubbarContainer));