Fixed...
This commit is contained in:
parent
8f37617a83
commit
316f582b8c
11 changed files with 67 additions and 102 deletions
|
@ -17,7 +17,6 @@
|
|||
"@clerk/nextjs": "^4.23.3",
|
||||
"@neondatabase/serverless": "^0.6.0",
|
||||
"@paralleldrive/cuid2": "^2.2.2",
|
||||
"@react-email/components": "^0.0.7",
|
||||
"@t3-oss/env-nextjs": "^0.6.1",
|
||||
"@tanstack/react-query": "^4.33.0",
|
||||
"@trpc/client": "10.38.1",
|
||||
|
@ -45,7 +44,7 @@
|
|||
"devDependencies": {
|
||||
"@types/eslint": "^8.44.2",
|
||||
"@types/json2csv": "^5.0.3",
|
||||
"@types/node": "^20.5.7",
|
||||
"@types/node": "^20.5.8",
|
||||
"@types/react": "^18.2.21",
|
||||
"@typescript-eslint/eslint-plugin": "^6.5.0",
|
||||
"@typescript-eslint/parser": "^6.5.0",
|
||||
|
|
44
pnpm-lock.yaml
generated
44
pnpm-lock.yaml
generated
|
@ -98,8 +98,8 @@ devDependencies:
|
|||
specifier: ^5.0.3
|
||||
version: 5.0.3
|
||||
'@types/node':
|
||||
specifier: ^20.5.7
|
||||
version: 20.5.7
|
||||
specifier: ^20.5.8
|
||||
version: 20.5.8
|
||||
'@types/react':
|
||||
specifier: ^18.2.21
|
||||
version: 18.2.21
|
||||
|
@ -1392,7 +1392,7 @@ packages:
|
|||
resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==}
|
||||
dependencies:
|
||||
'@types/connect': 3.4.35
|
||||
'@types/node': 20.5.7
|
||||
'@types/node': 20.5.8
|
||||
dev: false
|
||||
|
||||
/@types/cacheable-request@6.0.3:
|
||||
|
@ -1400,14 +1400,14 @@ packages:
|
|||
dependencies:
|
||||
'@types/http-cache-semantics': 4.0.1
|
||||
'@types/keyv': 3.1.4
|
||||
'@types/node': 20.5.7
|
||||
'@types/node': 20.5.8
|
||||
'@types/responselike': 1.0.0
|
||||
dev: false
|
||||
|
||||
/@types/connect@3.4.35:
|
||||
resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==}
|
||||
dependencies:
|
||||
'@types/node': 20.5.7
|
||||
'@types/node': 20.5.8
|
||||
dev: false
|
||||
|
||||
/@types/cookies@0.7.7:
|
||||
|
@ -1416,7 +1416,7 @@ packages:
|
|||
'@types/connect': 3.4.35
|
||||
'@types/express': 4.17.14
|
||||
'@types/keygrip': 1.0.2
|
||||
'@types/node': 20.5.7
|
||||
'@types/node': 20.5.8
|
||||
dev: false
|
||||
|
||||
/@types/eslint@8.44.2:
|
||||
|
@ -1433,7 +1433,7 @@ packages:
|
|||
/@types/express-serve-static-core@4.17.36:
|
||||
resolution: {integrity: sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==}
|
||||
dependencies:
|
||||
'@types/node': 20.5.7
|
||||
'@types/node': 20.5.8
|
||||
'@types/qs': 6.9.8
|
||||
'@types/range-parser': 1.2.4
|
||||
'@types/send': 0.17.1
|
||||
|
@ -1463,7 +1463,7 @@ packages:
|
|||
/@types/json2csv@5.0.3:
|
||||
resolution: {integrity: sha512-ZJEv6SzhPhgpBpxZU4n/TZekbZqI4EcyXXRwms1lAITG2kIAtj85PfNYafUOY1zy8bWs5ujaub0GU4copaA0sw==}
|
||||
dependencies:
|
||||
'@types/node': 20.5.7
|
||||
'@types/node': 20.5.8
|
||||
dev: true
|
||||
|
||||
/@types/json5@0.0.29:
|
||||
|
@ -1477,7 +1477,7 @@ packages:
|
|||
/@types/keyv@3.1.4:
|
||||
resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==}
|
||||
dependencies:
|
||||
'@types/node': 20.5.7
|
||||
'@types/node': 20.5.8
|
||||
dev: false
|
||||
|
||||
/@types/mime@1.3.2:
|
||||
|
@ -1491,7 +1491,7 @@ packages:
|
|||
/@types/node-fetch@2.6.2:
|
||||
resolution: {integrity: sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==}
|
||||
dependencies:
|
||||
'@types/node': 20.5.7
|
||||
'@types/node': 20.5.8
|
||||
form-data: 3.0.1
|
||||
dev: false
|
||||
|
||||
|
@ -1503,8 +1503,8 @@ packages:
|
|||
resolution: {integrity: sha512-vmYJF0REqDyyU0gviezF/KHq/fYaUbFhkcNbQCuPGFQj6VTbXuHZoxs/Y7mutWe73C8AC6l9fFu8mSYiBAqkGA==}
|
||||
dev: false
|
||||
|
||||
/@types/node@20.5.7:
|
||||
resolution: {integrity: sha512-dP7f3LdZIysZnmvP3ANJYTSwg+wLLl8p7RqniVlV7j+oXSXAbt9h0WIBFmJy5inWZoX9wZN6eXx+YXd9Rh3RBA==}
|
||||
/@types/node@20.5.8:
|
||||
resolution: {integrity: sha512-eajsR9aeljqNhK028VG0Wuw+OaY5LLxYmxeoXynIoE6jannr9/Ucd1LL0hSSoafk5LTYG+FfqsyGt81Q6Zkybw==}
|
||||
|
||||
/@types/normalize-package-data@2.4.1:
|
||||
resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==}
|
||||
|
@ -1513,7 +1513,7 @@ packages:
|
|||
/@types/pg@8.6.6:
|
||||
resolution: {integrity: sha512-O2xNmXebtwVekJDD+02udOncjVcMZQuTEQEMpKJ0ZRf5E7/9JJX3izhKUcUifBkyKpljyUM6BTgy2trmviKlpw==}
|
||||
dependencies:
|
||||
'@types/node': 20.5.7
|
||||
'@types/node': 20.5.8
|
||||
pg-protocol: 1.6.0
|
||||
pg-types: 2.2.0
|
||||
dev: false
|
||||
|
@ -1541,7 +1541,7 @@ packages:
|
|||
/@types/responselike@1.0.0:
|
||||
resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==}
|
||||
dependencies:
|
||||
'@types/node': 20.5.7
|
||||
'@types/node': 20.5.8
|
||||
dev: false
|
||||
|
||||
/@types/scheduler@0.16.3:
|
||||
|
@ -1556,7 +1556,7 @@ packages:
|
|||
resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==}
|
||||
dependencies:
|
||||
'@types/mime': 1.3.2
|
||||
'@types/node': 20.5.7
|
||||
'@types/node': 20.5.8
|
||||
dev: false
|
||||
|
||||
/@types/serve-static@1.15.2:
|
||||
|
@ -1564,7 +1564,7 @@ packages:
|
|||
dependencies:
|
||||
'@types/http-errors': 2.0.1
|
||||
'@types/mime': 3.0.1
|
||||
'@types/node': 20.5.7
|
||||
'@types/node': 20.5.8
|
||||
dev: false
|
||||
|
||||
/@typescript-eslint/eslint-plugin@6.5.0(@typescript-eslint/parser@6.5.0)(eslint@8.48.0)(typescript@5.2.2):
|
||||
|
@ -1943,7 +1943,7 @@ packages:
|
|||
dependencies:
|
||||
browserslist: 4.21.10
|
||||
caniuse-lite: 1.0.30001525
|
||||
fraction.js: 4.3.4
|
||||
fraction.js: 4.3.6
|
||||
normalize-range: 0.1.2
|
||||
picocolors: 1.0.0
|
||||
postcss: 8.4.29
|
||||
|
@ -2044,7 +2044,7 @@ packages:
|
|||
hasBin: true
|
||||
dependencies:
|
||||
caniuse-lite: 1.0.30001525
|
||||
electron-to-chromium: 1.4.506
|
||||
electron-to-chromium: 1.4.508
|
||||
node-releases: 2.0.13
|
||||
update-browserslist-db: 1.0.11(browserslist@4.21.10)
|
||||
dev: false
|
||||
|
@ -2687,8 +2687,8 @@ packages:
|
|||
semver: 7.5.4
|
||||
dev: false
|
||||
|
||||
/electron-to-chromium@1.4.506:
|
||||
resolution: {integrity: sha512-xxGct4GPAKSRlrLBtJxJFYy74W11zX6PO9GyHgl/U+2s3Dp0ZEwAklDfNHXOWcvH7zWMpsmgbR0ggEuaYAVvHA==}
|
||||
/electron-to-chromium@1.4.508:
|
||||
resolution: {integrity: sha512-FFa8QKjQK/A5QuFr2167myhMesGrhlOBD+3cYNxO9/S4XzHEXesyTD/1/xF644gC8buFPz3ca6G1LOQD0tZrrg==}
|
||||
dev: false
|
||||
|
||||
/emoji-regex@9.2.2:
|
||||
|
@ -3352,8 +3352,8 @@ packages:
|
|||
mime-types: 2.1.35
|
||||
dev: false
|
||||
|
||||
/fraction.js@4.3.4:
|
||||
resolution: {integrity: sha512-pwiTgt0Q7t+GHZA4yaLjObx4vXmmdcS0iSJ19o8d/goUGgItX9UZWKWNnLHehxviD8wU2IWRsnR8cD5+yOJP2Q==}
|
||||
/fraction.js@4.3.6:
|
||||
resolution: {integrity: sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg==}
|
||||
dev: false
|
||||
|
||||
/fs-constants@1.0.0:
|
||||
|
|
|
@ -6,8 +6,7 @@ import packagejson from "../../../package.json";
|
|||
const Footer = () => {
|
||||
return (
|
||||
<footer className="footer footer-center h-12 p-2 bg-base-100 text-base-content">
|
||||
<div>
|
||||
<p>
|
||||
<div className="block">
|
||||
Made with{" "}
|
||||
<GiTechnoHeart className="inline-block text-primary text-lg animate-pulse" />{" "}
|
||||
by{" "}
|
||||
|
@ -22,13 +21,12 @@ const Footer = () => {
|
|||
-{" "}
|
||||
<a
|
||||
className="link link-primary link-hover"
|
||||
href={`https://github.com/atridadl/sprintpadawan/releases/tag/${packagejson.version}`}
|
||||
href={`https://github.com/atridadl/Atash/releases/tag/${packagejson.version}`}
|
||||
rel="noreferrer"
|
||||
target="_blank"
|
||||
>
|
||||
v{packagejson.version}
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
);
|
||||
|
|
|
@ -5,27 +5,30 @@ import Image from "next/image";
|
|||
import Link from "next/link";
|
||||
import { useRouter, usePathname } from "next/navigation";
|
||||
import { env } from "@/env.mjs";
|
||||
import Loading from "./Loading";
|
||||
|
||||
interface NavbarProps {
|
||||
title: string;
|
||||
}
|
||||
|
||||
export const dynamic = "force-dynamic";
|
||||
|
||||
const Navbar = ({ title }: NavbarProps) => {
|
||||
const { isSignedIn } = useUser();
|
||||
const { isLoaded, isSignedIn } = useUser();
|
||||
const router = useRouter();
|
||||
const pathname = usePathname();
|
||||
|
||||
const navigationMenu = () => {
|
||||
if (pathname !== "/dashboard" && isSignedIn) {
|
||||
return (
|
||||
<Link className="btn btn-secondary btn-outline mx-2" href="/dashboard">
|
||||
<Link className="btn btn-primary btn-outline mx-2" href="/dashboard">
|
||||
Dashboard
|
||||
</Link>
|
||||
);
|
||||
} else if (!isSignedIn) {
|
||||
return (
|
||||
<button
|
||||
className="btn btn-secondary"
|
||||
className="btn btn-primary"
|
||||
onClick={() => void router.push("/sign-in")}
|
||||
>
|
||||
Sign In
|
||||
|
@ -57,9 +60,8 @@ const Navbar = ({ title }: NavbarProps) => {
|
|||
</Link>
|
||||
</div>
|
||||
|
||||
{navigationMenu()}
|
||||
|
||||
<UserButton afterSignOutUrl="/" />
|
||||
{!isLoaded ? <Loading /> : navigationMenu()}
|
||||
<UserButton afterSignOutUrl="/" userProfileMode="modal" />
|
||||
</nav>
|
||||
);
|
||||
};
|
||||
|
|
|
@ -1,7 +1,11 @@
|
|||
"use client";
|
||||
|
||||
const Loading = () => {
|
||||
return <Loading />;
|
||||
return (
|
||||
<div className="flex items-center justify-center">
|
||||
<span className="loading loading-dots loading-lg"></span>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default Loading;
|
||||
|
|
|
@ -2,10 +2,9 @@
|
|||
|
||||
import Link from "next/link";
|
||||
import { configureAbly, useChannel } from "@ably-labs/react-hooks";
|
||||
import { useEffect, useState } from "react";
|
||||
import { useState } from "react";
|
||||
import { IoEnterOutline, IoTrashBinOutline } from "react-icons/io5";
|
||||
import { env } from "@/env.mjs";
|
||||
import { useOrganization } from "@clerk/nextjs";
|
||||
import { trpc } from "../_trpc/client";
|
||||
import Loading from "./Loading";
|
||||
|
||||
|
@ -14,8 +13,6 @@ export const revalidate = 0;
|
|||
export const fetchCache = "force-no-store";
|
||||
|
||||
const RoomList = ({ userId }: { userId: string }) => {
|
||||
const { organization } = useOrganization();
|
||||
|
||||
configureAbly({
|
||||
key: env.NEXT_PUBLIC_ABLY_PUBLIC_KEY,
|
||||
clientId: userId,
|
||||
|
@ -25,7 +22,7 @@ const RoomList = ({ userId }: { userId: string }) => {
|
|||
});
|
||||
|
||||
useChannel(
|
||||
`${env.NEXT_PUBLIC_APP_ENV}-${organization ? organization.id : userId}`,
|
||||
`${env.NEXT_PUBLIC_APP_ENV}-${userId}`,
|
||||
() => void refetchRoomsFromDb()
|
||||
);
|
||||
|
||||
|
@ -50,10 +47,6 @@ const RoomList = ({ userId }: { userId: string }) => {
|
|||
deleteRoom.mutate({ id: roomId });
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
void refetchRoomsFromDb();
|
||||
}, [organization]);
|
||||
|
||||
return (
|
||||
<div className="flex flex-col items-center justify-center gap-8">
|
||||
{/* Modal for Adding Rooms */}
|
||||
|
|
|
@ -6,6 +6,10 @@ import { createTRPCContext } from "@/server/trpc/trpc";
|
|||
export const runtime = "edge";
|
||||
export const preferredRegion = ["pdx1"];
|
||||
|
||||
export const dynamic = "force-dynamic";
|
||||
export const revalidate = 0;
|
||||
export const fetchCache = "force-no-store";
|
||||
|
||||
const handler = (req: Request) =>
|
||||
fetchRequestHandler({
|
||||
endpoint: "/api/trpc",
|
||||
|
|
|
@ -19,7 +19,7 @@ export default function RootLayout({
|
|||
<html lang="en" className="h-[100%] w-[100%] fixed overflow-y-auto">
|
||||
<body className="h-[100%] w-[100%] fixed overflow-y-auto">
|
||||
<ClerkLoaded>
|
||||
<Header title="Sprint Padawan" />
|
||||
<Header title={metadata.title} />
|
||||
<div className="flex flex-row items-center justify-center min-h-[calc(100%-114px)]">
|
||||
<Provider>{children}</Provider>
|
||||
</div>
|
||||
|
|
|
@ -1,18 +1,8 @@
|
|||
export const dynamic = "force-static";
|
||||
|
||||
const Home = () => {
|
||||
export default function Home() {
|
||||
return (
|
||||
<div className="flex flex-col text-center items-center justify-center px-4 py-16 gap-4">
|
||||
<HomePageBody />
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default Home;
|
||||
|
||||
const HomePageBody = () => {
|
||||
return (
|
||||
<>
|
||||
<h1 className="text-3xl sm:text-6xl font-bold">
|
||||
Sprint{" "}
|
||||
<span className="bg-gradient-to-br from-pink-600 to-cyan-400 bg-clip-text text-transparent box-decoration-clone">
|
||||
|
@ -47,6 +37,6 @@ const HomePageBody = () => {
|
|||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
}
|
||||
|
|
|
@ -31,7 +31,6 @@ export const roomRouter = createTRPCRouter({
|
|||
|
||||
const success = room.length > 0;
|
||||
if (room) {
|
||||
await invalidateCache(`kv_roomcount`);
|
||||
await invalidateCache(`kv_roomlist_${ctx.auth.userId}`);
|
||||
|
||||
await publishToChannel(
|
||||
|
@ -39,12 +38,6 @@ export const roomRouter = createTRPCRouter({
|
|||
EventTypes.ROOM_LIST_UPDATE,
|
||||
JSON.stringify(room)
|
||||
);
|
||||
|
||||
await publishToChannel(
|
||||
`stats`,
|
||||
EventTypes.STATS_UPDATE,
|
||||
JSON.stringify(room)
|
||||
);
|
||||
}
|
||||
return success;
|
||||
}),
|
||||
|
|
|
@ -1,21 +1,3 @@
|
|||
import { parse } from "json2csv";
|
||||
|
||||
export function downloadCSV(
|
||||
data: Record<string, unknown>[],
|
||||
filename: string
|
||||
): void {
|
||||
const csv = parse(data);
|
||||
const blob = new Blob([csv], { type: "text/csv;charset=utf-8;" });
|
||||
const url = URL.createObjectURL(blob);
|
||||
const link = document.createElement("a");
|
||||
link.setAttribute("href", url);
|
||||
link.setAttribute("download", filename);
|
||||
link.style.visibility = "hidden";
|
||||
document.body.appendChild(link);
|
||||
link.click();
|
||||
document.body.removeChild(link);
|
||||
}
|
||||
|
||||
export function isAdmin(meta: UserPublicMetadata | undefined) {
|
||||
return (meta?.isAdmin as boolean | undefined) || false;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue