Edgy
This commit is contained in:
parent
d41014e1fd
commit
d6fcc50262
6 changed files with 30 additions and 42 deletions
|
@ -28,9 +28,9 @@
|
|||
"@upstash/ratelimit": "^0.4.4",
|
||||
"@upstash/redis": "^1.22.0",
|
||||
"autoprefixer": "^10.4.15",
|
||||
"csv42": "^4.0.0",
|
||||
"dotenv": "^16.3.1",
|
||||
"drizzle-orm": "^0.28.5",
|
||||
"json2csv": "6.0.0-alpha.2",
|
||||
"next": "^13.4.19",
|
||||
"nextjs-cors": "^2.1.2",
|
||||
"postcss": "^8.4.29",
|
||||
|
|
33
pnpm-lock.yaml
generated
33
pnpm-lock.yaml
generated
|
@ -50,15 +50,15 @@ dependencies:
|
|||
autoprefixer:
|
||||
specifier: ^10.4.15
|
||||
version: 10.4.15(postcss@8.4.29)
|
||||
csv42:
|
||||
specifier: ^4.0.0
|
||||
version: 4.0.0
|
||||
dotenv:
|
||||
specifier: ^16.3.1
|
||||
version: 16.3.1
|
||||
drizzle-orm:
|
||||
specifier: ^0.28.5
|
||||
version: 0.28.5(@neondatabase/serverless@0.6.0)(pg@8.11.3)
|
||||
json2csv:
|
||||
specifier: 6.0.0-alpha.2
|
||||
version: 6.0.0-alpha.2
|
||||
next:
|
||||
specifier: ^13.4.19
|
||||
version: 13.4.19(react-dom@18.2.0)(react@18.2.0)
|
||||
|
@ -1122,10 +1122,6 @@ packages:
|
|||
engines: {node: '>=10'}
|
||||
dev: false
|
||||
|
||||
/@streamparser/json@0.0.6:
|
||||
resolution: {integrity: sha512-vL9EVn/v+OhZ+Wcs6O4iKE9EUpwHUqHmCtNUMWjqp+6dr85+XPOSGTEsqYNq1Vn04uk9SWlOVmx9J48ggJVT2Q==}
|
||||
dev: false
|
||||
|
||||
/@swc/helpers@0.5.1:
|
||||
resolution: {integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==}
|
||||
dependencies:
|
||||
|
@ -2114,11 +2110,6 @@ packages:
|
|||
engines: {node: '>= 6'}
|
||||
dev: false
|
||||
|
||||
/commander@6.2.1:
|
||||
resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==}
|
||||
engines: {node: '>= 6'}
|
||||
dev: false
|
||||
|
||||
/commander@9.4.1:
|
||||
resolution: {integrity: sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==}
|
||||
engines: {node: ^12.20.0 || >=14}
|
||||
|
@ -2201,6 +2192,10 @@ packages:
|
|||
resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==}
|
||||
dev: true
|
||||
|
||||
/csv42@4.0.0:
|
||||
resolution: {integrity: sha512-9sHplbzkaJ1MIbitR+w381TjUl2xFWVDby0bvbf1Qg5EYHNBJEQmFRuA/3tmO/sdzlgA2O1wpTulXDoo3Z1rwQ==}
|
||||
dev: false
|
||||
|
||||
/d@1.0.1:
|
||||
resolution: {integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==}
|
||||
dependencies:
|
||||
|
@ -3835,16 +3830,6 @@ packages:
|
|||
resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
|
||||
dev: true
|
||||
|
||||
/json2csv@6.0.0-alpha.2:
|
||||
resolution: {integrity: sha512-nJ3oP6QxN8z69IT1HmrJdfVxhU1kLTBVgMfRnNZc37YEY+jZ4nU27rBGxT4vaqM/KUCavLRhntmTuBFqZLBUcA==}
|
||||
engines: {node: '>= 12', npm: '>= 6.13.0'}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
'@streamparser/json': 0.0.6
|
||||
commander: 6.2.1
|
||||
lodash.get: 4.4.2
|
||||
dev: false
|
||||
|
||||
/json5@1.0.2:
|
||||
resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==}
|
||||
hasBin: true
|
||||
|
@ -3936,10 +3921,6 @@ packages:
|
|||
p-locate: 5.0.0
|
||||
dev: true
|
||||
|
||||
/lodash.get@4.4.2:
|
||||
resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==}
|
||||
dev: false
|
||||
|
||||
/lodash.merge@4.6.2:
|
||||
resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
|
||||
dev: true
|
||||
|
|
|
@ -21,7 +21,7 @@ import Link from "next/link";
|
|||
import { FaShieldAlt } from "react-icons/fa";
|
||||
import { RiVipCrownFill } from "react-icons/ri";
|
||||
import { env } from "@/env.mjs";
|
||||
import { isAdmin, isVIP } from "@/utils/helpers";
|
||||
import { isAdmin, isVIP, jsonToCsv } from "@/utils/helpers";
|
||||
import type { PresenceItem } from "@/utils/types";
|
||||
import { trpc } from "@/app/_trpc/client";
|
||||
import Loading from "@/app/_components/Loading";
|
||||
|
@ -162,16 +162,7 @@ const VoteUI = ({ user }: { user: Partial<User> }) => {
|
|||
}),
|
||||
});
|
||||
|
||||
const csv = parse(jsonObject);
|
||||
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", `sp_${roomId}.csv`);
|
||||
link.style.visibility = "hidden";
|
||||
document.body.appendChild(link);
|
||||
link.click();
|
||||
document.body.removeChild(link);
|
||||
jsonToCsv(jsonObject, `sp_${roomId}.csv`);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -4,9 +4,8 @@ import { GiStarFormation } from "react-icons/gi";
|
|||
import { isAdmin, isVIP } from "@/utils/helpers";
|
||||
import { currentUser } from "@clerk/nextjs";
|
||||
|
||||
export const dynamic = "force-dynamic";
|
||||
export const revalidate = 0;
|
||||
export const fetchCache = "force-no-store";
|
||||
export const runtime = "edge";
|
||||
export const preferredRegion = ["pdx1"];
|
||||
|
||||
export default async function Dashboard() {
|
||||
const user = await currentUser();
|
||||
|
|
|
@ -2,7 +2,8 @@ import { currentUser } from "@clerk/nextjs";
|
|||
import Loading from "@/app/_components/Loading";
|
||||
import VoteUI from "@/app/_components/VoteUI";
|
||||
|
||||
export const dynamic = "force-dynamic";
|
||||
export const runtime = "edge";
|
||||
export const preferredRegion = ["pdx1"];
|
||||
|
||||
export default async function Room() {
|
||||
const user = await currentUser();
|
||||
|
|
|
@ -1,3 +1,19 @@
|
|||
import { json2csv } from "csv42";
|
||||
|
||||
export function jsonToCsv(jsonObject: Array<object>, fileName: string) {
|
||||
const csv = json2csv(jsonObject);
|
||||
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