snapify-authentik/src/components/NewVideoMenu.tsx
2023-04-21 23:30:33 +02:00

74 lines
2.6 KiB
TypeScript

import { Menu, Transition } from "@headlessui/react";
import { Fragment } from "react";
import uploadVideoModalOpen from "~/atoms/uploadVideoModalOpen";
import { useAtom } from "jotai";
import recordVideoModalOpen from "~/atoms/recordVideoModalOpen";
import paywallAtom from "~/atoms/paywallAtom";
import { useSession } from "next-auth/react";
export default function NewVideoMenu() {
const [, setRecordOpen] = useAtom(recordVideoModalOpen);
const [, setUploadOpen] = useAtom(uploadVideoModalOpen);
const [, setPaywallOpen] = useAtom(paywallAtom);
const { data: session } = useSession();
const openRecordModal = () => {
setRecordOpen(true);
};
const openUploadModal = () => {
if (session?.user.stripeSubscriptionStatus === "active") {
setUploadOpen(true);
} else {
setPaywallOpen(true);
}
};
return (
<Menu as="div" className="relative inline-block text-left">
<Menu.Button>
<span className="cursor-pointer rounded border border-[#0000001a] px-2 py-2 text-sm text-[#292d34] hover:bg-[#fafbfc]">
New video
</span>
</Menu.Button>
<Transition
as={Fragment}
enter="transition ease-out duration-100"
enterFrom="transform opacity-0 scale-95"
enterTo="transform opacity-100 scale-100"
leave="transition ease-in duration-75"
leaveFrom="transform opacity-100 scale-100"
leaveTo="transform opacity-0 scale-95"
>
<Menu.Items className="absolute right-0 z-10 mt-2 origin-top-right divide-y divide-gray-100 rounded-md bg-white shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none">
<div className="px-1 py-1 ">
<Menu.Item>
{({ active }) => (
<div
onClick={openRecordModal}
className={`mx-2 flex h-8 w-40 cursor-pointer flex-row content-center rounded-md p-2 ${
active ? "bg-gray-100" : ""
}`}
>
<p className="leading-2 text-sm leading-4">Record a video</p>
</div>
)}
</Menu.Item>
<Menu.Item>
{({ active }) => (
<div
onClick={openUploadModal}
className={`mx-2 flex h-8 w-40 cursor-pointer flex-row content-center rounded-md p-2 ${
active ? "bg-gray-100" : ""
}`}
>
<p className="leading-2 text-sm leading-4">Upload a video</p>
</div>
)}
</Menu.Item>
</div>
</Menu.Items>
</Transition>
</Menu>
);
}