import { useAdmin } from 'web/hooks/use-admin' import { Row } from '../layout/row' import { Content } from '../editor' import { TextEditor, useTextEditor } from 'web/components/editor' import { Button } from '../button' import { Spacer } from '../layout/spacer' import { Group } from 'common/group' import { deleteFieldFromGroup, updateGroup } from 'web/lib/firebase/groups' import PencilIcon from '@heroicons/react/solid/PencilIcon' import { DocumentRemoveIcon } from '@heroicons/react/solid' import { createDashboard } from 'web/lib/firebase/api' import { Dashboard } from 'common/dashboard' import { deleteDashboard, updateDashboard } from 'web/lib/firebase/dashboards' import { useRouter } from 'next/router' import { useState } from 'react' export function GroupDashboard(props: { group: Group isCreator: boolean dashboard: Dashboard }) { const { group, isCreator, dashboard } = props const isAdmin = useAdmin() if (group.dashboardId == null && !isCreator) { return

No dashboard has been created

} return (
{isCreator || isAdmin ? ( ) : ( )}
) } function RichEditGroupDashboard(props: { group: Group; dashboard: Dashboard }) { const { group, dashboard } = props const [editing, setEditing] = useState(false) const [isSubmitting, setIsSubmitting] = useState(false) const router = useRouter() const { editor, upload } = useTextEditor({ defaultValue: dashboard.content, disabled: isSubmitting, }) async function saveDashboard() { if (!editor) return const newDashboard = { name: group.name, content: editor.getJSON(), } if (group.dashboardId == null) { const result = await createDashboard(newDashboard).catch((e) => { console.error(e) return e }) await updateGroup(group, { dashboardId: result.dashboard.id, }) } else { await updateDashboard(dashboard, { content: newDashboard.content, }) } await router.replace(router.asPath) } async function deleteGroupDashboard() { await deleteDashboard(dashboard) await deleteFieldFromGroup(group, 'dashboardId') await router.replace(router.asPath) } return editing ? ( <> ) : ( <> {group.dashboardId == null ? (

No dashboard has been created yet.

) : (
)} ) }