import { Suspense, useEffect } from "react"; import type { BlitzPage } from "blitz"; import { dynamic } from "blitz"; import { atom, useAtom } from "jotai"; import AppLayout from "app/core/layouts/layout"; import ConversationsList from "../components/conversations-list"; import NewMessageButton from "../components/new-message-button"; import MissingTwilioCredentials from "app/core/components/missing-twilio-credentials"; import useNotifications from "app/core/hooks/use-notifications"; import useCurrentUser from "app/core/hooks/use-current-user"; import PageTitle from "app/core/components/page-title"; import Spinner from "app/core/components/spinner"; const Messages: BlitzPage = () => { const { hasFilledTwilioCredentials, hasPhoneNumber } = useCurrentUser(); const { subscription, subscribe } = useNotifications(); const setIsOpen = useAtom(bottomSheetOpenAtom)[1]; useEffect(() => { if (!subscription) { subscribe(); } }, [subscribe, subscription]); if (!hasFilledTwilioCredentials || !hasPhoneNumber) { return ( <> ); } return ( <>
}> {/* TODO: skeleton conversations list */}
setIsOpen(true)} /> ); }; const NewMessageBottomSheet = dynamic(() => import("../components/new-message-bottom-sheet"), { ssr: false, loading: () => null, }); export const bottomSheetOpenAtom = atom(false); Messages.getLayout = (page) => {page}; export default Messages;