production-taskbar-client / src / renderer / app / layout / TaskbarLayout.jsx
TaskbarLayout.jsx
Raw
import React from "react";

import { Button, Layout } from "antd";
import { ipcRenderer } from "electron";

import WorkplaceCreate from "../../features/workplace_create/WorkplaceCreateComponent";
import WorkplaceTypeLabel from "../../features/workplace_type_label/WorkplaceTypeLabelComponent";
import DateTime from "../../features/datetime/DateTimeComponent";
import Programs from "../../features/programs/ProgramsComponent";
import Info from "../../features/info/InfoComponent";
import Tools from "../../features/tools/ToolsComponent";
import SupportButton from "../../features/support/SupportButton";

import WorkplaceDisabled from "../../features/workplace_disabled/WorkplaceDisabledComponent";

const { Content } = Layout;
const isDev = process.env.NODE_ENV === "development";

export default function TaskbarLayout(props) {
  const { isFetchingSettings, settings } = props;
  return (
    <Layout>
      <Content className="app-content">
        <WorkplaceTypeLabel />
        {(() => {
          if (isFetchingSettings)
            return <div className="app-content__fetching-background" />;
          if (settings) {
            if (settings[0]?.workplace?.is_active)
              return (
                <>
                  <Programs />
                  <Tools />
                </>
              );
            return (
              <>
                <WorkplaceDisabled />
                <Tools />
              </>
            );
          }
          return <WorkplaceCreate />;
        })()}
        <Info />
        <DateTime />
        <SupportButton />

        {isDev ? (
          <Button
            className="dev-quit-button"
            onClick={() => ipcRenderer.send("dev-quit")}
          >
            DevExit
          </Button>
        ) : null}
      </Content>
    </Layout>
  );
}