260322:1648 Correct Coresspondence / Doing RFA / Correct CI
CI Pipeline / build (push) Failing after 12m41s
Build and Deploy / deploy (push) Failing after 2m44s

This commit is contained in:
admin
2026-03-22 16:48:12 +07:00
parent e5deedb42e
commit 11984bfa29
683 changed files with 105251 additions and 29068 deletions
+6 -10
View File
@@ -1,9 +1,9 @@
"use client";
'use client';
import { RFADetail } from "@/components/rfas/detail";
import { notFound, useParams } from "next/navigation";
import { useRFA } from "@/hooks/use-rfa";
import { Loader2 } from "lucide-react";
import { RFADetail } from '@/components/rfas/detail';
import { notFound, useParams } from 'next/navigation';
import { useRFA } from '@/hooks/use-rfa';
import { Loader2 } from 'lucide-react';
export default function RFADetailPage() {
const { uuid } = useParams();
@@ -22,11 +22,7 @@ export default function RFADetailPage() {
if (isError || !rfa) {
// Check if error is 404
return (
<div className="text-center py-20 text-red-500">
RFA not found or failed to load.
</div>
);
return <div className="text-center py-20 text-red-500">RFA not found or failed to load.</div>;
}
return <RFADetail data={rfa} />;
+2 -4
View File
@@ -1,4 +1,4 @@
import { RFAForm } from "@/components/rfas/form";
import { RFAForm } from '@/components/rfas/form';
// Force dynamic rendering to prevent build-time prerendering issues
export const dynamic = 'force-dynamic';
@@ -11,9 +11,7 @@ export default function NewRFAPage() {
<div className="max-w-4xl mx-auto py-6">
<div className="mb-8">
<h1 className="text-3xl font-bold">New RFA</h1>
<p className="text-muted-foreground mt-1">
Create a new Request for Approval.
</p>
<p className="text-muted-foreground mt-1">Create a new Request for Approval.</p>
</div>
<RFAForm />
+23 -28
View File
@@ -1,4 +1,4 @@
"use client";
'use client';
import { RFAList } from '@/components/rfas/list';
import { Button } from '@/components/ui/button';
@@ -11,8 +11,8 @@ import { Suspense } from 'react';
function RFAsContent() {
const searchParams = useSearchParams();
const page = parseInt(searchParams.get('page') || '1');
const statusId = searchParams.get('status') ? parseInt(searchParams.get('status')!) : undefined;
const page = Number(searchParams.get('page') || '1');
const statusId = searchParams.get('status') ? Number(searchParams.get('status')!) : undefined;
const search = searchParams.get('search') || undefined;
const projectId = searchParams.get('projectId') || undefined; // ADR-019: Pass UUID string directly
@@ -20,24 +20,21 @@ function RFAsContent() {
const { data, isLoading, isError } = useRFAs({ page, statusId, search, projectId, revisionStatus });
return (
<>
<div className="mb-4 flex gap-2">
{/* Simple Filter Buttons using standard Buttons for now, or use a Select if imported */}
<div className="flex gap-1 bg-muted p-1 rounded-md">
{['ALL', 'CURRENT', 'OLD'].map((status) => (
<Link key={status} href={`?${new URLSearchParams({...Object.fromEntries(searchParams.entries()), revisionStatus: status, page: '1'}).toString()}`}>
<Button
variant={revisionStatus === status ? 'default' : 'ghost'}
size="sm"
className="text-xs px-3"
>
{status === 'CURRENT' ? 'Latest' : status === 'OLD' ? 'Previous' : 'All'}
</Button>
</Link>
))}
{['ALL', 'CURRENT', 'OLD'].map((status) => (
<Link
key={status}
href={`?${new URLSearchParams({ ...Object.fromEntries(searchParams.entries()), revisionStatus: status, page: '1' }).toString()}`}
>
<Button variant={revisionStatus === status ? 'default' : 'ghost'} size="sm" className="text-xs px-3">
{status === 'CURRENT' ? 'Latest' : status === 'OLD' ? 'Previous' : 'All'}
</Button>
</Link>
))}
</div>
</div>
@@ -46,13 +43,11 @@ function RFAsContent() {
<Loader2 className="h-8 w-8 animate-spin" />
</div>
) : isError ? (
<div className="text-red-500 text-center py-8">
Failed to load RFAs.
</div>
<div className="text-red-500 text-center py-8">Failed to load RFAs.</div>
) : (
<>
<RFAList data={data?.data || []} />
<div className="mt-4">
<div className="mt-4">
<Pagination
currentPage={data?.meta?.page || 1}
totalPages={data?.meta?.totalPages || 1}
@@ -71,9 +66,7 @@ export default function RFAsPage() {
<div className="flex justify-between items-center">
<div>
<h1 className="text-3xl font-bold">RFAs (Request for Approval)</h1>
<p className="text-muted-foreground mt-1">
Manage approval requests and submissions
</p>
<p className="text-muted-foreground mt-1">Manage approval requests and submissions</p>
</div>
<Link href="/rfas/new">
<Button>
@@ -83,11 +76,13 @@ export default function RFAsPage() {
</Link>
</div>
<Suspense fallback={
<div className="flex justify-center py-8">
<Loader2 className="h-8 w-8 animate-spin" />
</div>
}>
<Suspense
fallback={
<div className="flex justify-center py-8">
<Loader2 className="h-8 w-8 animate-spin" />
</div>
}
>
<RFAsContent />
</Suspense>
</div>