This commit is contained in:
oiov
2025-03-28 17:11:08 +08:00
parent c9129f50c8
commit 9dbbb80963
18 changed files with 23 additions and 68 deletions
+4 -4
View File
@@ -312,8 +312,8 @@ export default function UserUrlsList({ user, action }: UrlListProps) {
)}
<Table>
<TableHeader className="bg-gray-100/50 dark:bg-primary-foreground">
<TableRow className="grid grid-cols-3 items-center sm:grid-cols-9">
<TableHead className="col-span-1 flex items-center font-bold">
<TableRow className="grid grid-cols-3 items-center sm:grid-cols-10">
<TableHead className="col-span-1 flex items-center font-bold sm:col-span-2">
Url
</TableHead>
<TableHead className="col-span-1 flex items-center font-bold sm:col-span-2">
@@ -350,9 +350,9 @@ export default function UserUrlsList({ user, action }: UrlListProps) {
<>
<TableRow
key={short.id}
className="grid animate-fade-in grid-cols-3 items-center animate-in sm:grid-cols-9"
className="grid animate-fade-in grid-cols-3 items-center animate-in sm:grid-cols-10"
>
<TableCell className="col-span-1 flex items-center gap-1">
<TableCell className="col-span-1 flex items-center gap-1 sm:col-span-2">
<Link
className="overflow-hidden overflow-ellipsis whitespace-normal text-slate-600 hover:text-blue-400 hover:underline dark:text-slate-400"
href={`https://${short.prefix}/s/${short.url}`}
+2 -7
View File
@@ -31,14 +31,14 @@ export async function POST(req: Request) {
// Check quota: 若是管理员则不检查,否则检查
const user_records_count = await getUserRecordCount(user.id);
if (
user.role !== "ADMIN" &&
Number(NEXT_PUBLIC_FREE_RECORD_QUOTA) > 0 &&
user_records_count >= Number(NEXT_PUBLIC_FREE_RECORD_QUOTA)
// Number(NEXT_PUBLIC_FREE_RECORD_QUOTA) > 0 &&
) {
return Response.json("Your records have reached the free limit.", {
status: 409,
statusText: "Your records have reached the free limit.",
});
}
@@ -56,7 +56,6 @@ export async function POST(req: Request) {
if (reservedDomains.includes(record_name)) {
return Response.json("Domain name is reserved", {
status: 403,
statusText: "Domain name is reserved",
});
}
@@ -70,7 +69,6 @@ export async function POST(req: Request) {
if (user_record && user_record.length > 0) {
return Response.json("Record already exists", {
status: 403,
statusText: "Record already exists",
});
}
@@ -83,7 +81,6 @@ export async function POST(req: Request) {
if (!data.success || !data.result?.id) {
return Response.json(data.errors, {
status: 501,
statusText: `An error occurred. ${data.errors}`,
});
} else {
const res = await createUserRecord(user.id, {
@@ -105,7 +102,6 @@ export async function POST(req: Request) {
if (res.status !== "success") {
return Response.json(res.status, {
status: 502,
statusText: `An error occurred. ${res.status}`,
});
}
return Response.json(res.data);
@@ -114,7 +110,6 @@ export async function POST(req: Request) {
console.error("[错误]", error);
return Response.json(error?.statusText || error, {
status: error?.status || 500,
statusText: error?.statusText || "Server error",
});
}
}
+1 -7
View File
@@ -11,7 +11,6 @@ export async function POST(req: Request) {
if (user.role !== "ADMIN") {
return Response.json("Unauthorized", {
status: 401,
statusText: "Unauthorized",
});
}
@@ -19,7 +18,6 @@ export async function POST(req: Request) {
if (!record_id || !userId) {
return Response.json("RecordId and userId are required", {
status: 400,
statusText: "RecordId and userId are required",
});
}
@@ -27,7 +25,6 @@ export async function POST(req: Request) {
if (!CLOUDFLARE_ZONE_ID || !CLOUDFLARE_API_KEY || !CLOUDFLARE_EMAIL) {
return Response.json("API key、zone iD and email are required", {
status: 400,
statusText: "API key、zone iD and email are required",
});
}
@@ -43,18 +40,15 @@ export async function POST(req: Request) {
await deleteUserRecord(userId, record_id, zone_id, active);
return Response.json("success", {
status: 200,
statusText: "success",
});
}
return Response.json({
return Response.json("Not Implemented", {
status: 501,
statusText: "Not Implemented",
});
} catch (error) {
console.error(error);
return Response.json(error?.statusText || error, {
status: error.status || 500,
statusText: error.statusText || "Server error",
});
}
}
-2
View File
@@ -10,7 +10,6 @@ export async function GET(req: Request) {
if (user.role !== "ADMIN") {
return Response.json("Unauthorized", {
status: 401,
statusText: "Unauthorized",
});
}
@@ -30,7 +29,6 @@ export async function GET(req: Request) {
} catch (error) {
return Response.json(error?.statusText || error, {
status: error.status || 500,
statusText: error.statusText || "Server error",
});
}
}
-6
View File
@@ -11,7 +11,6 @@ export async function POST(req: Request) {
if (user.role !== "ADMIN") {
return Response.json("Unauthorized", {
status: 401,
statusText: "Unauthorized",
});
}
@@ -19,7 +18,6 @@ export async function POST(req: Request) {
if (!CLOUDFLARE_ZONE_ID || !CLOUDFLARE_API_KEY || !CLOUDFLARE_EMAIL) {
return Response.json("API key、zone iD and email are required", {
status: 400,
statusText: "API key、zone iD and email are required",
});
}
@@ -27,7 +25,6 @@ export async function POST(req: Request) {
if (!recordId || !userId) {
return Response.json("RecordId and userId are required", {
status: 400,
statusText: "RecordId and userId are required",
});
}
@@ -41,7 +38,6 @@ export async function POST(req: Request) {
if (!data.success || !data.result?.id) {
return Response.json(data.errors, {
status: 501,
statusText: `An error occurred. ${data.errors}`,
});
} else {
const res = await updateUserRecord(userId, {
@@ -62,7 +58,6 @@ export async function POST(req: Request) {
if (res.status !== "success") {
return Response.json(res.status, {
status: 502,
statusText: `An error occurred. ${res.status}`,
});
}
return Response.json(res.data);
@@ -70,7 +65,6 @@ export async function POST(req: Request) {
} catch (error) {
return Response.json(error?.statusText || error, {
status: error?.status || 500,
statusText: error?.statusText || "Server error",
});
}
}
-1
View File
@@ -15,7 +15,6 @@ export async function POST(req: Request) {
if (!CLOUDFLARE_ZONE_ID || !CLOUDFLARE_API_KEY || !CLOUDFLARE_EMAIL) {
return Response.json("API key、zone iD and email are required", {
status: 400,
statusText: "API key、zone iD and email are required",
});
}
-1
View File
@@ -23,7 +23,6 @@ export async function GET(req: Request) {
} catch (error) {
return Response.json(error?.statusText || error, {
status: error.status || 500,
statusText: error.statusText || "Server error",
});
}
}
+6 -17
View File
@@ -16,10 +16,7 @@ export async function POST(req: Request) {
const { CLOUDFLARE_ZONE_ID, CLOUDFLARE_API_KEY, CLOUDFLARE_EMAIL } = env;
if (!CLOUDFLARE_ZONE_ID || !CLOUDFLARE_API_KEY || !CLOUDFLARE_EMAIL) {
return Response.json(
{ statusText: "API key andzone id are required." },
{ status: 401 },
);
return Response.json("API key andzone id are required.", { status: 401 });
}
const { record, recordId } = await req.json();
@@ -30,7 +27,6 @@ export async function POST(req: Request) {
if (reservedDomains.includes(record_name)) {
return Response.json("Domain name is reserved", {
status: 403,
statusText: "Domain name is reserved",
});
}
@@ -44,7 +40,6 @@ export async function POST(req: Request) {
if (!data.success || !data.result?.id) {
return Response.json(data.errors, {
status: 501,
statusText: `An error occurred. ${data.errors}`,
});
} else {
const res = await updateUserRecord(user.id, {
@@ -65,7 +60,6 @@ export async function POST(req: Request) {
if (res.status !== "success") {
return Response.json(res.status, {
status: 502,
statusText: `An error occurred. ${res.status}`,
});
}
return Response.json(res.data);
@@ -74,7 +68,6 @@ export async function POST(req: Request) {
console.error(error);
return Response.json(error?.statusText || error, {
status: error?.status || 500,
statusText: error?.statusText || "Server error",
});
}
}
@@ -87,10 +80,9 @@ export async function PUT(req: Request) {
const { CLOUDFLARE_ZONE_ID, CLOUDFLARE_API_KEY, CLOUDFLARE_EMAIL } = env;
if (!CLOUDFLARE_ZONE_ID || !CLOUDFLARE_API_KEY || !CLOUDFLARE_EMAIL) {
return Response.json(
{ statusText: "API key and zone id are required." },
{ status: 401 },
);
return Response.json("API key and zone id are required.", {
status: 401,
});
}
const { zone_id, record_id, target, active } = await req.json();
@@ -112,16 +104,13 @@ export async function PUT(req: Request) {
);
if (!res) {
return Response.json(
{ statusText: "An error occurred." },
{ status: 502 },
);
return Response.json("An error occurred.", { status: 502 });
}
return Response.json(
isTargetAccessible ? "Target is accessible!" : "Target is unaccessible!",
);
} catch (error) {
console.error(error);
return Response.json({ statusText: "Server error" }, { status: 500 });
return Response.json(`An error occurred. ${error}`, { status: 500 });
}
}
-3
View File
@@ -19,7 +19,6 @@ export async function POST(req: Request) {
) {
return Response.json("Your short urls have reached the free limit.", {
status: 409,
statusText: "Your short urls have reached the free limit.",
});
}
@@ -40,14 +39,12 @@ export async function POST(req: Request) {
if (res.status !== "success") {
return Response.json(res.status, {
status: 502,
statusText: `An error occurred. ${res.status}`,
});
}
return Response.json(res.data);
} catch (error) {
return Response.json(error?.statusText || error, {
status: error.status || 500,
statusText: error.statusText || "Server error",
});
}
}
-2
View File
@@ -13,7 +13,6 @@ export async function POST(req: Request) {
if (!url_id) {
return Response.json("url id is required", {
status: 400,
statusText: "url id is required",
});
}
@@ -22,7 +21,6 @@ export async function POST(req: Request) {
} catch (error) {
return Response.json(error?.statusText || error, {
status: error.status || 500,
statusText: error.statusText || "Server error",
});
}
}
-2
View File
@@ -13,7 +13,6 @@ export async function GET(req: Request) {
if (!urlId) {
return Response.json("url id is required", {
status: 400,
statusText: "url id is required",
});
}
@@ -23,7 +22,6 @@ export async function GET(req: Request) {
} catch (error) {
return Response.json(error?.statusText || error, {
status: error.status || 500,
statusText: error.statusText || "Server error",
});
}
}
-1
View File
@@ -29,7 +29,6 @@ export async function GET(req: Request) {
} catch (error) {
return Response.json(error?.statusText || error, {
status: error.status || 500,
statusText: error.statusText || "Server error",
});
}
}
+1 -3
View File
@@ -25,16 +25,14 @@ export async function POST(req: Request) {
const res = await updateUserShortUrlActive(user.id, id, active, user.role);
if (res.status !== "success") {
return Response.json(res.status, {
return Response.json("Update failed", {
status: 400,
statusText: `An error occurred. ${res.status}`,
});
}
return Response.json(res.data);
} catch (error) {
return Response.json(error?.statusText || error, {
status: error.status || 500,
statusText: error.statusText || "Server error",
});
}
}
-3
View File
@@ -14,7 +14,6 @@ export async function POST(req: Request) {
if (!data?.id) {
return Response.json(`Url id is required`, {
status: 400,
statusText: `Url id is required`,
});
}
@@ -34,14 +33,12 @@ export async function POST(req: Request) {
if (res.status !== "success") {
return Response.json(res.status, {
status: 400,
statusText: `An error occurred. ${res.status}`,
});
}
return Response.json(res.data);
} catch (error) {
return Response.json(error?.statusText || error, {
status: error.status || 500,
statusText: error.statusText || "Server error",
});
}
}
+4 -4
View File
@@ -90,12 +90,12 @@ export function RecordForm({
records: [data],
}),
});
if (!response.ok || response.status !== 200) {
toast.error("Created Failed!", {
description: response.statusText,
description: await response.json(),
});
} else {
// const res = await response.json();
toast.success(`Created successfully!`);
setShowForm(false);
onRefresh();
@@ -116,7 +116,7 @@ export function RecordForm({
});
if (!response.ok || response.status !== 200) {
toast.error("Update Failed", {
description: response.statusText,
description: await response.json(),
});
} else {
const res = await response.json();
@@ -142,7 +142,7 @@ export function RecordForm({
});
if (!response.ok || response.status !== 200) {
toast.error("Delete Failed", {
description: response.statusText,
description: await response.json(),
});
} else {
await response.json();
+3 -3
View File
@@ -88,7 +88,7 @@ export function UrlForm({
});
if (!response.ok || response.status !== 200) {
toast.error("Created Failed!", {
description: response.statusText,
description: await response.json(),
});
} else {
// const res = await response.json();
@@ -108,7 +108,7 @@ export function UrlForm({
});
if (!response.ok || response.status !== 200) {
toast.error("Update Failed", {
description: response.statusText,
description: await response.json(),
});
} else {
const res = await response.json();
@@ -132,7 +132,7 @@ export function UrlForm({
});
if (!response.ok || response.status !== 200) {
toast.error("Delete Failed", {
description: response.statusText,
description: await response.json(),
});
} else {
await response.json();
+1 -1
View File
@@ -42,7 +42,7 @@ export const PricingSection = () => {
icon: <Icons.mousePointerClick className="size-4" />,
},
{
text: "10k new links/mo",
text: "1k new links/mo",
checked: true,
icon: <Icons.link className="size-4" />,
},
+1 -1
View File
File diff suppressed because one or more lines are too long