今天做了好多工作啊
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
2025-12-04 21:07:54 +08:00
parent fcc20fc2e0
commit 41005a4aac
27 changed files with 733 additions and 6294 deletions

View File

@@ -6,10 +6,10 @@ import { useEffect, useState } from "react";
import { redirect, useRouter } from "next/navigation";
import Container from "@/components/cards/Container";
import {
createTextPair,
deleteTextPairById,
getTextPairsByFolderId,
} from "@/lib/actions/services/textPairService";
createPair,
deletePairById,
getPairsByFolderId,
} from "@/lib/actions/services/pairService";
import AddTextPairModal from "./AddTextPairModal";
import TextPairCard from "./TextPairCard";
import LightButton from "@/components/buttons/LightButton";
@@ -34,7 +34,7 @@ export default function InFolder({ folderId }: { folderId: number }) {
const fetchTextPairs = async () => {
setLoading(true);
try {
const data = await getTextPairsByFolderId(folderId);
const data = await getPairsByFolderId(folderId);
setTextPairs(data as TextPair[]);
} catch (error) {
console.error("Failed to fetch text pairs:", error);
@@ -47,7 +47,7 @@ export default function InFolder({ folderId }: { folderId: number }) {
const refreshTextPairs = async () => {
try {
const data = await getTextPairsByFolderId(folderId);
const data = await getPairsByFolderId(folderId);
setTextPairs(data as TextPair[]);
} catch (error) {
console.error("Failed to fetch text pairs:", error);
@@ -118,7 +118,7 @@ export default function InFolder({ folderId }: { folderId: number }) {
key={textPair.id}
textPair={textPair}
onDel={() => {
deleteTextPairById(textPair.id);
deletePairById(textPair.id);
refreshTextPairs();
}}
refreshTextPairs={refreshTextPairs}
@@ -137,12 +137,12 @@ export default function InFolder({ folderId }: { folderId: number }) {
locale1: string,
locale2: string,
) => {
await createTextPair({
await createPair({
text1: text1,
text2: text2,
locale1: locale1,
locale2: locale2,
folders: {
folder: {
connect: {
id: folderId,
},

View File

@@ -1,10 +1,10 @@
import { Edit, Trash2 } from "lucide-react";
import { TextPair } from "./InFolder";
import { updateTextPairById } from "@/lib/actions/services/textPairService";
import { updatePairById } from "@/lib/actions/services/pairService";
import { useState } from "react";
import { text_pairUpdateInput } from "../../../../generated/prisma/models";
import UpdateTextPairModal from "./UpdateTextPairModal";
import { useTranslations } from "next-intl";
import { PairUpdateInput } from "../../../../generated/prisma/models";
interface TextPairCardProps {
textPair: TextPair;
@@ -66,8 +66,8 @@ export default function TextPairCard({
<UpdateTextPairModal
isOpen={openUpdateModal}
onClose={() => setOpenUpdateModal(false)}
onUpdate={async (id: number, data: text_pairUpdateInput) => {
await updateTextPairById(id, data);
onUpdate={async (id: number, data: PairUpdateInput) => {
await updatePairById(id, data);
setOpenUpdateModal(false);
refreshTextPairs();
}}

View File

@@ -2,7 +2,7 @@ import LightButton from "@/components/buttons/LightButton";
import Input from "@/components/Input";
import { X } from "lucide-react";
import { useRef } from "react";
import { text_pairUpdateInput } from "../../../../generated/prisma/models";
import { PairUpdateInput } from "../../../../generated/prisma/models";
import { TextPair } from "./InFolder";
import { useTranslations } from "next-intl";
@@ -10,7 +10,7 @@ interface UpdateTextPairModalProps {
isOpen: boolean;
onClose: () => void;
textPair: TextPair;
onUpdate: (id: number, tp: text_pairUpdateInput) => void;
onUpdate: (id: number, tp: PairUpdateInput) => void;
}
export default function UpdateTextPairModal({

View File

@@ -1,24 +1,23 @@
import { redirect } from "next/navigation";
import { getServerSession } from "next-auth";
import { getTranslations } from "next-intl/server";
import InFolder from "./InFolder";
import { getOwnerByFolderId } from "@/lib/actions/services/folderService";
import { getUserIdByFolderId } from "@/lib/actions/services/folderService";
import { auth } from "@/auth";
export default async function FoldersPage({
params,
}: {
params: Promise<{ folder_id: number }>;
}) {
const session = await getServerSession();
const session = await auth();
const { folder_id } = await params;
const id = Number(folder_id);
const t = await getTranslations("folder_id");
if (!id) {
if (!folder_id) {
redirect("/folders");
}
if (!session?.user?.name) redirect(`/login?redirect=/folders/${id}`);
if ((await getOwnerByFolderId(id)) !== session.user.name) {
if (!session?.user?.id) redirect(`/login?redirect=/folders/${folder_id}`);
if ((await getUserIdByFolderId(Number(folder_id))) !== Number(session.user.id)) {
return <p>{t("unauthorized")}</p>;
}
return <InFolder folderId={id} />;
return <InFolder folderId={Number(folder_id)} />;
}