import React, { useState, useEffect, memo } from "react";
import { X } from "@phosphor-icons/react";
import { useTranslation } from "react-i18next";
import { useParams } from "react-router-dom";
import Workspace from "../../../models/workspace";
import System from "../../../models/system";
import { isMobile } from "react-device-detect";
import useUser from "../../../hooks/useUser";
import DocumentSettings from "./Documents";
import DataConnectors from "./DataConnectors";
import ModalWrapper from "@/components/ModalWrapper";
const noop = () => {};
const ManageWorkspace = ({ hideModal = noop, providedSlug = null }) => {
const { t } = useTranslation();
const { slug } = useParams();
const { user } = useUser();
const [workspace, setWorkspace] = useState(null);
const [settings, setSettings] = useState({});
const [selectedTab, setSelectedTab] = useState("documents");
useEffect(() => {
async function getSettings() {
const _settings = await System.keys();
setSettings(_settings ?? {});
}
getSettings();
}, []);
useEffect(() => {
async function fetchWorkspace() {
const workspace = await Workspace.bySlug(providedSlug ?? slug);
setWorkspace(workspace);
}
fetchWorkspace();
}, [providedSlug, slug]);
if (!workspace) return null;
if (isMobile) {
return (
{t("connectors.manage.editing")} "{workspace.name}"
{t("connectors.manage.desktop-only")}
);
}
return (
{user?.role !== "default" && (
)}
{selectedTab === "documents" ? (
) : (
)}
);
};
export default memo(ManageWorkspace);
const ModalTabSwitcher = ({ selectedTab, setSelectedTab }) => {
const { t } = useTranslation();
return (
);
};
export function useManageWorkspaceModal() {
const { user } = useUser();
const [showing, setShowing] = useState(false);
function showModal() {
if (user?.role !== "default") {
setShowing(true);
}
}
function hideModal() {
setShowing(false);
}
useEffect(() => {
function onEscape(event) {
if (!showing || event.key !== "Escape") return;
setShowing(false);
}
document.addEventListener("keydown", onEscape);
return () => {
document.removeEventListener("keydown", onEscape);
};
}, [showing]);
return { showing, showModal, hideModal };
}