session issues
This commit is contained in:
parent
f2e4ac2575
commit
166ca3da84
1 changed files with 140 additions and 142 deletions
|
@ -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()}
|
||||||
|
|
Loading…
Add table
Reference in a new issue