diff --git a/public/fonts/Lexend/Lexend.ttf b/public/fonts/Lexend/Lexend.ttf new file mode 100644 index 0000000..e895baf Binary files /dev/null and b/public/fonts/Lexend/Lexend.ttf differ diff --git a/src/components/CelesteBox/CelesteBox.module.css b/src/components/CelesteBox/CelesteBox.module.css index 5d3b9b8..fada1a2 100644 --- a/src/components/CelesteBox/CelesteBox.module.css +++ b/src/components/CelesteBox/CelesteBox.module.css @@ -59,7 +59,8 @@ flex-direction: row; align-items: center; justify-content: center; - font-family: "Renogare", "Poppins"; + font-family: "Renogare", "Lexend"; + /* font-weight: 700; */ color: white; font-size: 28px; line-height: 35px; diff --git a/src/components/cards/ClanCard/ClanCard.tsx b/src/components/cards/ClanCard/ClanCard.tsx index f23e8d3..379f98d 100644 --- a/src/components/cards/ClanCard/ClanCard.tsx +++ b/src/components/cards/ClanCard/ClanCard.tsx @@ -24,9 +24,7 @@ export default function ClanCard({ theme: clan.color ? Color3.fromRGB(...clan.color) : undefined }} > - +
- +

- 0 - } - > +
{clan.flairs?.map(flair => ( @@ -89,7 +83,7 @@ export default function ClanCard({ .join(", ")}

- +

link @@ -102,7 +96,7 @@ export default function ClanCard({

- 0}> +

description diff --git a/src/components/cards/SignCard/SignCard.module.css b/src/components/cards/SignCard/SignCard.module.css index 726fd2a..696af37 100644 --- a/src/components/cards/SignCard/SignCard.module.css +++ b/src/components/cards/SignCard/SignCard.module.css @@ -32,7 +32,7 @@ drop-shadow(-1px 1px 0 currentcolor); } .SignCard.Skeleton .topImagePlaceholder { - font-family: "Renogare", "Poppins", "Space Grotesk", "Fira Code", + font-family: "Renogare", "Lexend", "Space Grotesk", "Fira Code", "Courier New", monospace; font-size: 52px; width: 52px; diff --git a/src/components/template/credits.tsx b/src/components/template/credits.tsx index b4aea73..7b61646 100644 --- a/src/components/template/credits.tsx +++ b/src/components/template/credits.tsx @@ -63,6 +63,15 @@ export default function Credits() { {" "} font by Indian Type Foundry. + + + Lexend (Deca) + {" "} + font by Superunion. + (object: T) { return cut as T; } +export function cutArrayBlank(array: T[]) { + const cut: any[] = []; + array.forEach((value, i) => { + if (value == null) return; + else if ( + (typeof value == "string" || Array.isArray(value)) && + value.length <= 0 + ) + cut[i] = undefined; + else if (Array.isArray(value)) cut[i] = cutArrayBlank(value); + else if (typeof value == "object") cut[i] = cutObjectBlank(value); + else cut[i] = value; + }); + return cut as T[]; +} + +export function cutObjectBlank(object: T) { + const keys = Object.keys(object); + let cut: { [key: string]: any } = {}; + keys.forEach(key => { + var val = object[key]; + if (val == null) return; + else if ( + (typeof val == "string" || Array.isArray(val)) && + val.length <= 0 + ) + cut[key] = undefined; + else if (Array.isArray(val)) cut[key] = cutArrayBlank(val); + else if (typeof val == "object") cut[key] = cutObjectBlank(val); + else cut[key] = val; + }); + return cut as T; +} + export function sanitize>( serverType: Type ): Omit { diff --git a/src/pages/api/clan/.../[[...page]]/index.ts b/src/pages/api/clan/.../[[...page]]/index.ts index 1a590b9..163b19d 100644 --- a/src/pages/api/clan/.../[[...page]]/index.ts +++ b/src/pages/api/clan/.../[[...page]]/index.ts @@ -1,6 +1,7 @@ import { ClanGET } from "@/lib/trollcall/api/clan"; import { getManyPagedClans } from "@/lib/trollcall/clan"; import { ServerClanToClientClan } from "@/lib/trollcall/convert/clan"; +import { cutObjectBlank } from "@/lib/trollcall/utility/merge"; import { ClientClan } from "@/types/clan"; import { NextApiRequest, NextApiResponse } from "next"; @@ -22,7 +23,7 @@ export default async function handler( // ServerFlairToClientFlair // ) // ); - return thisClan; + return cutObjectBlank(thisClan); }, 5, page diff --git a/src/pages/api/message/[clan]/.../[[...page]]/index.ts b/src/pages/api/message/[clan]/.../[[...page]]/index.ts index f482542..b48af8d 100644 --- a/src/pages/api/message/[clan]/.../[[...page]]/index.ts +++ b/src/pages/api/message/[clan]/.../[[...page]]/index.ts @@ -2,6 +2,7 @@ import { ClanGET } from "@/lib/trollcall/api/clan"; import { getSingleClan } from "@/lib/trollcall/clan"; import { ServerMessageToClientMessage } from "@/lib/trollcall/convert/message"; import { getManyPagedMessages } from "@/lib/trollcall/message"; +import { cutObjectBlank } from "@/lib/trollcall/utility/merge"; import { NextApiRequest, NextApiResponse } from "next"; export default async function handler( @@ -40,7 +41,7 @@ export default async function handler( } thisMessage.from = clientFrom; - return thisMessage; + return cutObjectBlank(thisMessage); }, 5, page diff --git a/src/pages/api/troll/.../[[...page]]/index.ts b/src/pages/api/troll/.../[[...page]]/index.ts index 341b1c5..eb149fe 100644 --- a/src/pages/api/troll/.../[[...page]]/index.ts +++ b/src/pages/api/troll/.../[[...page]]/index.ts @@ -3,7 +3,7 @@ import { ServerFlairToClientFlair } from "@/lib/trollcall/convert/flair"; import { ServerTrollToClientTroll } from "@/lib/trollcall/convert/troll"; import { getManyFlairs } from "@/lib/trollcall/flair"; import { getManyPagedTrolls } from "@/lib/trollcall/troll"; -import { cutArray } from "@/lib/trollcall/utility/merge"; +import { cutArray, cutObjectBlank } from "@/lib/trollcall/utility/merge"; import { ClientClan } from "@/types/clan"; import { NextApiRequest, NextApiResponse } from "next"; @@ -14,13 +14,23 @@ export default async function handler( const { method, query } = req; const page = query.page ? query.page[0] : 0; if (method === "GET") { + const owners: { [key: string]: any } = {}; + const trolls = await getManyPagedTrolls( {}, async (troll: any) => { const thisTroll = await ServerTrollToClientTroll(troll); - thisTroll.owner = (await ClanGET({ - _id: troll.owner - })) as ClientClan; + let clientOwner; + if (owners[troll.owner.toString()] != null) + clientOwner = owners[troll.owner.toString()]; + else { + clientOwner = (await ClanGET({ + _id: troll.owner + })) as ClientClan; + if (clientOwner == null) return res.status(404).end(); + owners[troll.owner.toString()] = clientOwner; + } + thisTroll.owner = clientOwner; if (troll.flairs != null) thisTroll.flairs = cutArray( await getManyFlairs( @@ -28,8 +38,7 @@ export default async function handler( ServerFlairToClientFlair ) ); - - return thisTroll; + return cutObjectBlank(thisTroll); }, 5, page diff --git a/src/pages/api/troll/[clan]/.../[[...page]]/index.ts b/src/pages/api/troll/[clan]/.../[[...page]]/index.ts index e7ce8d2..dea921c 100644 --- a/src/pages/api/troll/[clan]/.../[[...page]]/index.ts +++ b/src/pages/api/troll/[clan]/.../[[...page]]/index.ts @@ -4,7 +4,7 @@ import { ServerFlairToClientFlair } from "@/lib/trollcall/convert/flair"; import { ServerTrollToClientTroll } from "@/lib/trollcall/convert/troll"; import { getManyFlairs } from "@/lib/trollcall/flair"; import { getManyPagedTrolls } from "@/lib/trollcall/troll"; -import { cutArray } from "@/lib/trollcall/utility/merge"; +import { cutArray, cutObjectBlank } from "@/lib/trollcall/utility/merge"; import { NextApiRequest, NextApiResponse } from "next"; export default async function handler( @@ -35,7 +35,7 @@ export default async function handler( ) ); - return thisTroll; + return cutObjectBlank(thisTroll); }, 5, page diff --git a/src/styles/fonts.css b/src/styles/fonts.css index cf8b7c6..9727b49 100644 --- a/src/styles/fonts.css +++ b/src/styles/fonts.css @@ -8,7 +8,7 @@ format("opentype"); } -/* ANY usage of the Renogare font should also specify a fallback! Try the Poppins font. */ +/* ANY usage of the Renogare font should also specify a fallback! Try the Lexend font. */ /* @font-face { font-family: "Renogare"; src: url("../../public/fonts/Renogare/Renogare.woff") format("woff"), @@ -21,6 +21,11 @@ src: url("../../public/fonts/Poppins/Poppins.ttf") format("truetype"); } +@font-face { + font-family: "Lexend"; + src: url("../../public/fonts/Lexend/Lexend.ttf") format("truetype"); +} + @font-face { font-family: "Flow Circular"; src: url("../../public/fonts/FlowCircular/FlowCircular.ttf")