fix: dates show incorrectly

This commit is contained in:
dvelo 2024-08-13 20:57:37 -05:00
parent 579ce15832
commit 0a347d3eac
3 changed files with 73 additions and 17 deletions

@ -30,12 +30,16 @@ import { useEffectOnce } from "@/lib/useEffectOnce";
import { useClerk, useUser } from "@clerk/nextjs"; import { useClerk, useUser } from "@clerk/nextjs";
import { useRouter } from "@/lib/useRouter"; import { useRouter } from "@/lib/useRouter";
import type { SVGProps } from "react"; import type { SVGProps } from "react";
import { favoriteServer, getAccountFavorites, serverOwned } from "@/lib/api"; import {
favoriteServer,
getAccountFavorites,
isFavorited,
serverOwned,
} from "@/lib/api";
import IconDisplay from "./IconDisplay"; import IconDisplay from "./IconDisplay";
import ServerSingle from "@/lib/single"; import ServerSingle from "@/lib/single";
import toast from "react-hot-toast"; import toast from "react-hot-toast";
import { ServerResponse, OnlineServer } from "@/lib/types/mh-server"; import { ServerResponse, OnlineServer } from "@/lib/types/mh-server";
import { m } from "framer-motion";
import { import {
Dialog, Dialog,
DialogContent, DialogContent,
@ -164,6 +168,8 @@ export function OfflineServerCB() {
const [obj, setObj] = useState<ServerResponse | object>({}); const [obj, setObj] = useState<ServerResponse | object>({});
const [vb, setVB] = useState(false); const [vb, setVB] = useState(false);
const router = useRouter(); const router = useRouter();
const [starred, setStarred] = useState(false);
const { resolvedTheme } = useTheme();
useEffect(() => { useEffect(() => {
events.on("cmd-offline", (info: ServerResponse) => { events.on("cmd-offline", (info: ServerResponse) => {
@ -184,6 +190,7 @@ export function OfflineServerCB() {
}); });
}); });
} else { } else {
isFavorited(info.name).then((b) => setStarred(b));
setVB(false); setVB(false);
setOpen(true); setOpen(true);
setObj(info); setObj(info);
@ -208,6 +215,7 @@ export function OfflineServerCB() {
}); });
}); });
} else { } else {
isFavorited(info.name).then((b) => setStarred(b));
setOpen(true); setOpen(true);
setVB(true); setVB(true);
setObj(info); setObj(info);
@ -258,13 +266,23 @@ export function OfflineServerCB() {
</CommandItem> </CommandItem>
<CommandItem <CommandItem
onSelect={() => { onSelect={() => {
favoriteServer((obj as ServerResponse).name).then(() => favoriteServer((obj as ServerResponse).name).then(() => {
toast.success("Done!") setStarred(!starred);
); toast.success("Done!");
});
}} }}
> >
<Star className="mr-2 h-4 w-4" /> <Star
Favorite Server className="mr-2 h-4 w-4"
fill={
starred == true
? resolvedTheme == "dark"
? "white"
: "black"
: "transparent"
}
/>
{!starred ? "F" : "Unf"}avorite Server
</CommandItem> </CommandItem>
<CommandItem <CommandItem
onSelect={() => onSelect={() =>
@ -311,7 +329,9 @@ export function ServerCommandBar() {
const [obj, setObj] = useState<OnlineServer | object>({}); const [obj, setObj] = useState<OnlineServer | object>({});
const [vb, setVB] = useState(false); const [vb, setVB] = useState(false);
const router = useRouter(); const router = useRouter();
const { resolvedTheme } = useTheme();
const [owned, setOwned] = useState(false); const [owned, setOwned] = useState(false);
const [starred, setStarred] = useState(false);
const [serverSingle, setSingle] = useState<ServerSingle>( const [serverSingle, setSingle] = useState<ServerSingle>(
new ServerSingle(serverName) new ServerSingle(serverName)
); );
@ -321,6 +341,7 @@ export function ServerCommandBar() {
serverSingle.setName(info.serverName); serverSingle.setName(info.serverName);
if (serverSingle != undefined) if (serverSingle != undefined)
(serverSingle as ServerSingle).init(true).then(() => { (serverSingle as ServerSingle).init(true).then(() => {
isFavorited(info.serverName).then((b) => setStarred(b));
setServerName(info.serverName); setServerName(info.serverName);
setObj(info.serverObject); setObj(info.serverObject);
setOpen(true); setOpen(true);
@ -392,11 +413,23 @@ export function ServerCommandBar() {
</CommandItem> </CommandItem>
<CommandItem <CommandItem
onSelect={() => { onSelect={() => {
favoriteServer(serverName).then(() => toast.success("Done!")); favoriteServer(serverName).then(() => {
setStarred(!starred);
toast.success("Done!");
});
}} }}
> >
<Star className="mr-2 h-4 w-4" /> <Star
Favorite Server className="mr-2 h-4 w-4"
fill={
starred == true
? resolvedTheme == "dark"
? "white"
: "black"
: "transparent"
}
/>
{!starred ? "F" : "Unf"}avorite Server
</CommandItem> </CommandItem>
<CommandItem <CommandItem
onSelect={() => onSelect={() =>

@ -41,7 +41,7 @@ export function NewChart({ server }: { server: string }) {
const allNums = { player_count: joins, favorites }; const allNums = { player_count: joins, favorites };
useEffectOnce(() => { useEffectOnce(() => {
getShortTermData(server, ["player_count", "favorites", "time"]).then( getShortTermData(server, ["player_count", "favorites", "date"]).then(
(c) => { (c) => {
setChartData(c); setChartData(c);
getCommunityServerFavorites(server).then((b) => setFavorites(b)); getCommunityServerFavorites(server).then((b) => setFavorites(b));
@ -101,14 +101,13 @@ export function NewChart({ server }: { server: string }) {
> >
<CartesianGrid vertical={false} /> <CartesianGrid vertical={false} />
<XAxis <XAxis
dataKey="time" dataKey="date"
tickLine={false} tickLine={false}
axisLine={false} axisLine={false}
tickMargin={8} tickMargin={8}
minTickGap={32} minTickGap={32}
tickFormatter={(value) => { tickFormatter={(value) => {
const date = new Date(value); return new Date(value).toLocaleTimeString("en-US", {
return date.toLocaleTimeString("en-US", {
timeStyle: "short", timeStyle: "short",
}); });
}} }}

@ -73,7 +73,7 @@ export async function isFavorited(server: string): Promise<boolean> {
} }
); );
return (await response.json()).data; return (await response.json()).result;
} catch { } catch {
throw Error("Not authenticated with a user."); throw Error("Not authenticated with a user.");
} }
@ -128,7 +128,7 @@ export async function getHistoricalData(
export async function getShortTermData( export async function getShortTermData(
server: string, server: string,
scopes: Array<"player_count" | "favorites" | "server" | "time"> scopes: Array<"player_count" | "favorites" | "server" | "date">
): Promise< ): Promise<
Array<{ Array<{
player_count?: number; player_count?: number;
@ -152,7 +152,7 @@ export async function getShortTermData(
} }
export async function getMetaShortTerm( export async function getMetaShortTerm(
scopes: Array<"total_players" | "total_servers" | "unix"> scopes: Array<"total_players" | "total_servers" | "date">
): Promise< ): Promise<
Array<{ Array<{
total_players?: number; total_players?: number;
@ -355,3 +355,27 @@ export async function getCustomization(server: string): Promise<any> {
throw Error("Error while running API"); throw Error("Error while running API");
} }
} }
export async function sortedFavorites(): Promise<
Array<{ server: string; favorites: number }> | boolean
> {
try {
const response = await fetch(
connector(`/sorting/favorites`, { version: 0 }),
{
method: "POST",
headers: {
"Content-Type": "application/json",
},
}
);
if (response.status == 400) {
return false;
}
return (await response.json()).results;
} catch {
throw Error("Error while running API");
}
}