session issues

This commit is contained in:
Atridad Lahiji 2023-07-12 12:27:39 -06:00 committed by atridadl
parent 0d2a392b52
commit 13cfd04f87
No known key found for this signature in database

View file

@ -26,6 +26,7 @@ import { RiVipCrownFill } from "react-icons/ri";
import { env } from "~/env.mjs"; import { env } from "~/env.mjs";
import { downloadCSV } from "~/utils/helpers"; import { downloadCSV } from "~/utils/helpers";
import type { PresenceItem } from "~/utils/types"; import type { PresenceItem } from "~/utils/types";
import { Session } from "next-auth";
export const getServerSideProps: GetServerSideProps = async (ctx) => { export const getServerSideProps: GetServerSideProps = async (ctx) => {
const session = await getServerAuthSession(ctx); const session = await getServerAuthSession(ctx);
@ -46,7 +47,7 @@ export const getServerSideProps: GetServerSideProps = async (ctx) => {
}; };
}; };
const Room: NextPage = () => { const Room: NextPage<{ session: Session }> = ({ session }) => {
return ( return (
<> <>
<Head> <Head>
@ -55,7 +56,7 @@ const Room: NextPage = () => {
<meta http-equiv="Cache-control" content="no-cache" /> <meta http-equiv="Cache-control" content="no-cache" />
</Head> </Head>
<div className="flex flex-col items-center justify-center text-center gap-2"> <div className="flex flex-col items-center justify-center text-center gap-2">
<RoomBody /> <RoomBody session={session} />
</div> </div>
</> </>
); );
@ -63,8 +64,7 @@ const Room: NextPage = () => {
export default Room; export default Room;
const RoomBody: React.FC = () => { const RoomBody: React.FC<{ session: Session }> = ({ session }) => {
const { data: sessionData } = useSession();
const { query } = useRouter(); const { query } = useRouter();
const roomId = z.string().parse(query.id); const roomId = z.string().parse(query.id);
@ -83,7 +83,7 @@ const RoomBody: React.FC = () => {
configureAbly({ configureAbly({
key: env.NEXT_PUBLIC_ABLY_PUBLIC_KEY, key: env.NEXT_PUBLIC_ABLY_PUBLIC_KEY,
clientId: sessionData?.user.id, clientId: session.user.id,
recover: (_, cb) => { recover: (_, cb) => {
cb(true); cb(true);
}, },
@ -106,10 +106,10 @@ const RoomBody: React.FC = () => {
const [presenceData] = usePresence<PresenceItem>( const [presenceData] = usePresence<PresenceItem>(
`${env.NEXT_PUBLIC_APP_ENV}-${roomId}`, `${env.NEXT_PUBLIC_APP_ENV}-${roomId}`,
{ {
name: sessionData?.user.name || "", name: session.user.name || "",
image: sessionData?.user.image || "", image: session.user.image || "",
client_id: sessionData?.user.id || "", client_id: session.user.id || "",
role: sessionData?.user.role || "USER", role: session.user.role || "USER",
} }
); );
@ -126,18 +126,18 @@ const RoomBody: React.FC = () => {
// Init story name // Init story name
useEffect(() => { useEffect(() => {
if (sessionData && roomFromDb) { if (session && roomFromDb) {
setStoryNameText(roomFromDb.storyName || ""); setStoryNameText(roomFromDb.storyName || "");
setRoomScale(roomFromDb.scale || "ERROR"); setRoomScale(roomFromDb.scale || "ERROR");
} }
}, [roomFromDb, roomId, sessionData]); }, [roomFromDb, roomId, session]);
// Helper functions // Helper functions
const getVoteForCurrentUser = () => { const getVoteForCurrentUser = () => {
if (roomFromDb && sessionData) { if (roomFromDb && session) {
return ( return (
votesFromDb && votesFromDb &&
votesFromDb.find((vote) => vote.userId === sessionData.user.id) votesFromDb.find((vote) => vote.userId === session.user.id)
); );
} else { } else {
return null; return null;
@ -338,7 +338,8 @@ const RoomBody: React.FC = () => {
return ( return (
<button <button
key={index} key={index}
className={ `join-item ${getVoteForCurrentUser()?.value === scaleItem className={`join-item ${
getVoteForCurrentUser()?.value === scaleItem
? "btn btn-active btn-primary" ? "btn btn-active btn-primary"
: "btn" : "btn"
}`} }`}
@ -353,9 +354,7 @@ const RoomBody: React.FC = () => {
</div> </div>
)} )}
{ sessionData && {session && !!roomFromDb && roomFromDb.userId === session.user.id && (
!!roomFromDb &&
roomFromDb.userId === sessionData.user.id && (
<> <>
<div className="card card-compact bg-neutral shadow-xl mx-auto m-4"> <div className="card card-compact bg-neutral shadow-xl mx-auto m-4">
<div className="card-body flex flex-col flex-wrap"> <div className="card-body flex flex-col flex-wrap">
@ -440,8 +439,7 @@ const RoomBody: React.FC = () => {
</div> </div>
{votesFromDb && {votesFromDb &&
(roomFromDb.logs.length > 0 || (roomFromDb.logs.length > 0 || votesFromDb.length > 0) && (
votesFromDb.length > 0) && (
<div> <div>
<button <button
onClick={() => downloadLogs()} onClick={() => downloadLogs()}