show the errors from the api and not a custom error
All checks were successful
Deploy App / docker (ubuntu-latest) (push) Successful in 1m30s
All checks were successful
Deploy App / docker (ubuntu-latest) (push) Successful in 1m30s
This commit is contained in:
@ -5,9 +5,10 @@ import { generateEmbed } from "@/common/embed";
|
||||
import { formatNumber } from "@/common/number-utils";
|
||||
import { capitalizeFirstLetter } from "@/common/string-utils";
|
||||
import { getServer } from "mcutils-library";
|
||||
import { McUtilsAPIError } from "mcutils-library/dist/types/error";
|
||||
import BedrockMinecraftServer from "mcutils-library/dist/types/server/bedrockServer";
|
||||
import JavaMinecraftServer from "mcutils-library/dist/types/server/javaServer";
|
||||
import { ServerPlatform } from "mcutils-library/dist/types/server/platform";
|
||||
import { MinecraftServer } from "mcutils-library/dist/types/server/server";
|
||||
import { Metadata } from "next";
|
||||
import Image from "next/image";
|
||||
|
||||
@ -19,12 +20,20 @@ type Params = {
|
||||
};
|
||||
|
||||
export async function generateMetadata({ params: { platform, hostname } }: Params): Promise<Metadata> {
|
||||
const server = await getData(platform, hostname);
|
||||
if (server == null) {
|
||||
let error: string | undefined = undefined;
|
||||
let server: JavaMinecraftServer | BedrockMinecraftServer | undefined = undefined;
|
||||
|
||||
try {
|
||||
server = (await getServer(platform, hostname))?.server;
|
||||
} catch (err) {
|
||||
error = (err as McUtilsAPIError).message;
|
||||
}
|
||||
|
||||
if (error && server == undefined) {
|
||||
return generateEmbed({ title: "Unknown Server", description: "Server not responding" });
|
||||
}
|
||||
|
||||
const { hostname: serverHostname, players } = server;
|
||||
const { hostname: serverHostname, players } = server as JavaMinecraftServer | BedrockMinecraftServer;
|
||||
|
||||
let favicon = null; // Server favicon
|
||||
|
||||
@ -46,17 +55,29 @@ export async function generateMetadata({ params: { platform, hostname } }: Param
|
||||
});
|
||||
}
|
||||
|
||||
async function getData(platform: ServerPlatform, id: string): Promise<MinecraftServer | null> {
|
||||
try {
|
||||
const cachedServer = await getServer(platform, id);
|
||||
return cachedServer.server;
|
||||
} catch (error) {
|
||||
return null; // Server not found
|
||||
}
|
||||
/**
|
||||
* Gets the server's data from the hostname
|
||||
*
|
||||
* @param platform the server's platform
|
||||
* @param hostnamt the server's hostname
|
||||
* @returns the server's data or an error message
|
||||
*/
|
||||
async function getData(
|
||||
platform: ServerPlatform,
|
||||
hostname: string
|
||||
): Promise<JavaMinecraftServer | BedrockMinecraftServer | null> {
|
||||
return (await getServer(platform, hostname)).server;
|
||||
}
|
||||
|
||||
export default async function Page({ params: { platform, hostname } }: Params): Promise<JSX.Element> {
|
||||
const server = await getData(platform, hostname);
|
||||
let error: string | undefined = undefined;
|
||||
let server: JavaMinecraftServer | BedrockMinecraftServer | undefined = undefined;
|
||||
|
||||
try {
|
||||
server = (await getServer(platform, hostname))?.server;
|
||||
} catch (err) {
|
||||
error = (err as McUtilsAPIError).message;
|
||||
}
|
||||
|
||||
let favicon = null; // Server favicon
|
||||
|
||||
@ -76,7 +97,7 @@ export default async function Page({ params: { platform, hostname } }: Params):
|
||||
</div>
|
||||
|
||||
<Card className="w-max xs:w-fit">
|
||||
{server == null && <NotFound message="Server not responding" />}
|
||||
{error && <NotFound message={error} />}
|
||||
{server != null && (
|
||||
<div className="flex gap-4 flex-col">
|
||||
<div className="flex gap-4 flex-col xs:flex-row">
|
||||
|
Reference in New Issue
Block a user