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

@ -41,7 +41,7 @@ export function NewChart({ server }: { server: string }) {
const allNums = { player_count: joins, favorites };
useEffectOnce(() => {
getShortTermData(server, ["player_count", "favorites", "time"]).then(
getShortTermData(server, ["player_count", "favorites", "date"]).then(
(c) => {
setChartData(c);
getCommunityServerFavorites(server).then((b) => setFavorites(b));
@ -101,14 +101,13 @@ export function NewChart({ server }: { server: string }) {
>
<CartesianGrid vertical={false} />
<XAxis
dataKey="time"
dataKey="date"
tickLine={false}
axisLine={false}
tickMargin={8}
minTickGap={32}
tickFormatter={(value) => {
const date = new Date(value);
return date.toLocaleTimeString("en-US", {
return new Date(value).toLocaleTimeString("en-US", {
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 {
throw Error("Not authenticated with a user.");
}
@ -128,7 +128,7 @@ export async function getHistoricalData(
export async function getShortTermData(
server: string,
scopes: Array<"player_count" | "favorites" | "server" | "time">
scopes: Array<"player_count" | "favorites" | "server" | "date">
): Promise<
Array<{
player_count?: number;
@ -152,7 +152,7 @@ export async function getShortTermData(
}
export async function getMetaShortTerm(
scopes: Array<"total_players" | "total_servers" | "unix">
scopes: Array<"total_players" | "total_servers" | "date">
): Promise<
Array<{
total_players?: number;
@ -355,3 +355,27 @@ export async function getCustomization(server: string): Promise<any> {
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");
}
}