lms/bootstrap/ssr/assets/live-class-status-B65ePfUK.js
2025-12-15 12:26:23 +01:00

135 lines
5.2 KiB
JavaScript

import { jsxs, Fragment, jsx } from "react/jsx-runtime";
import { B as Button } from "./button-CdJZJLGw.js";
import { usePage, Link } from "@inertiajs/react";
import { ExternalLink, Pencil } from "lucide-react";
import { useState, useEffect } from "react";
import LiveClassForm from "./live-class-form-CM7nrk8J.js";
import "@radix-ui/react-slot";
import "class-variance-authority";
import "./utils-DLCPGU0v.js";
import "clsx";
import "tailwind-merge";
import "./datetime-picker-BRbsgYE_.js";
import "react-day-picker";
import "./popover-Cv6Hz_y0.js";
import "@radix-ui/react-popover";
import "./select-BYx0MCUK.js";
import "@radix-ui/react-select";
import "./use-lang-44ndmTOc.js";
import "date-fns";
import "./input-error-D1JIzedA.js";
import "./dialog-DGP_3dPQ.js";
import "@radix-ui/react-dialog";
import "./input-BsvJqbcd.js";
import "./label-0rIIfpX0.js";
import "@radix-ui/react-label";
import "./scroll-area-CDdrLubh.js";
import "@radix-ui/react-scroll-area";
import "richtor";
/* empty css */
const LiveClassStatus = ({ courseId, liveClass, zoomConfig }) => {
var _a;
const [currentTime, setCurrentTime] = useState(/* @__PURE__ */ new Date());
const { props } = usePage();
const { translate } = props;
const { button, dashboard } = translate;
const getClassStatus = (liveClass2) => {
var _a2;
const now = currentTime;
const classStart = new Date(liveClass2.class_date_and_time);
const classEnd = ((_a2 = liveClass2.additional_info) == null ? void 0 : _a2.end_time) ? new Date(liveClass2.additional_info.end_time) : new Date(classStart.getTime() + 60 * 60 * 1e3);
if (now > classEnd) {
return "ended";
} else if (now >= classStart && now <= classEnd) {
return "live";
} else if (classStart > now) {
return "upcoming";
}
return "scheduled";
};
const status = getClassStatus(liveClass);
useEffect(() => {
const updateTimeAndCheckStatus = () => {
var _a2;
const newTime = /* @__PURE__ */ new Date();
setCurrentTime(newTime);
const classEnd = ((_a2 = liveClass.additional_info) == null ? void 0 : _a2.end_time) ? new Date(liveClass.additional_info.end_time) : new Date(new Date(liveClass.class_date_and_time).getTime() + 60 * 60 * 1e3);
return newTime > classEnd;
};
const hasEnded = updateTimeAndCheckStatus();
if (hasEnded) {
return;
}
const interval = setInterval(() => {
const classEnded = updateTimeAndCheckStatus();
if (classEnded) {
clearInterval(interval);
}
}, 6e4);
return () => {
clearInterval(interval);
};
}, [liveClass.class_date_and_time, (_a = liveClass.additional_info) == null ? void 0 : _a.end_time]);
const isSdkConfig = zoomConfig.zoom_web_sdk && zoomConfig.zoom_sdk_client_id && zoomConfig.zoom_sdk_client_secret ? true : false;
const getStatusColor = (status2) => {
switch (status2) {
case "live":
return "text-green-600 bg-green-100";
case "upcoming":
return "text-blue-600 bg-blue-100";
case "ended":
return "text-muted-foreground bg-gray-100";
default:
return "text-orange-600 bg-orange-100";
}
};
return /* @__PURE__ */ jsxs(Fragment, { children: [
/* @__PURE__ */ jsx("span", { className: `rounded-full px-2 py-1 text-center text-xs font-medium capitalize ${getStatusColor(status)}`, children: status }),
status === "live" ? isSdkConfig ? /* @__PURE__ */ jsx(Link, { href: route("live-class.start", liveClass.id), children: /* @__PURE__ */ jsxs(Button, { size: "sm", variant: status === "live" ? "default" : "outline", className: "flex w-full items-center gap-2", children: [
/* @__PURE__ */ jsx(ExternalLink, { className: "h-4 w-4" }),
button.join_class
] }) }) : /* @__PURE__ */ jsx("a", { href: liveClass.additional_info.join_url, target: "_blank", children: /* @__PURE__ */ jsxs(Button, { size: "sm", variant: status === "live" ? "default" : "outline", className: "flex w-full items-center gap-2", children: [
/* @__PURE__ */ jsx(ExternalLink, { className: "h-4 w-4" }),
button.join_class
] }) }) : /* @__PURE__ */ jsxs(Button, { disabled: true, variant: "outline", size: "sm", className: "flex w-full items-center gap-2", children: [
/* @__PURE__ */ jsx(ExternalLink, { className: "h-4 w-4" }),
button.join_class
] }),
status === "upcoming" ? /* @__PURE__ */ jsx(
LiveClassForm,
{
courseId,
liveClass,
title: button.edit_live_class,
handler: /* @__PURE__ */ jsxs(
Button,
{
size: "sm",
variant: "secondary",
className: "bg-background border-secondary-foreground/20 flex w-full items-center gap-2 border",
children: [
/* @__PURE__ */ jsx(Pencil, { className: "h-4 w-4" }),
button.edit_live_class
]
}
)
}
) : /* @__PURE__ */ jsxs(
Button,
{
size: "sm",
disabled: true,
variant: "secondary",
className: "bg-background border-secondary-foreground/20 flex w-full items-center gap-2 border",
children: [
/* @__PURE__ */ jsx(Pencil, { className: "h-4 w-4" }),
button.edit_live_class
]
}
)
] });
};
export {
LiveClassStatus as default
};