Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions apps/app/languine.lock
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,9 @@ files:
sidebar.settings: f4f70727dc34561dfde1a3c529b6205c
sidebar.evidence: 63b1eb1a39194d82271ec937fba19714
sidebar.people: 78386ec8f2845742c324a3d7d3e800ff
sub_pages.evidence.title: c7b2a4d55fbea4d044644cf5b2b45d29
sub_pages.evidence.list: d2b5512c16318cc8738eff7dbe7de9ca
sub_pages.evidence.overview: 376eeb70e956ecef2611d88a28269c5b
sub_pages.risk.overview: 7228bb53bb7855d458965d2f15fc6cd7
sub_pages.risk.register: e4c28136d96146bd5fe9dfe41214138c
sub_pages.risk.risk_overview: 5226ebb7d548f2d3a8f8c4fd08851405
Expand Down Expand Up @@ -494,6 +497,8 @@ files:
editor.ai_selector.discard: d94b42030b9785fd754d5c1754961269
evidence.title: 63b1eb1a39194d82271ec937fba19714
evidence.description: c8fcd9bc15a38dcd7f6d0cbdeb65f33c
evidence.dashboard: 2938c7f7e560ed972f8a4f68e80ff834
evidence.list: ed2c6e00de11f3eb621cd348bb8f5806
src/locales/es.ts:
language.title: c88b33a3250b4e28f34e1ececba69206
language.description: b74d060770289b75ba34d38ea1e05251
Expand Down
2 changes: 1 addition & 1 deletion apps/app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
"crypto": "^1.0.1",
"d3": "^7.9.0",
"dub": "^0.46.29",
"framer-motion": "^11.18.2",
"framer-motion": "^12.4.7",
"geist": "^1.3.1",
"highlight.js": "^11.11.1",
"ky": "^1.7.5",
Expand Down
20 changes: 18 additions & 2 deletions apps/app/src/actions/framework/select-frameworks-action.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ export const selectFrameworksAction = authActionClient
await createOrganizationPolicy(user as User, frameworkIds);

// Create organization evidence first
await createOrganizationEvidence(user as User);
await createOrganizationEvidence(user as User, frameworkIds);

// Create control requirements after evidence is created
await createOrganizationControlRequirements(
Expand Down Expand Up @@ -273,7 +273,10 @@ const createOrganizationControlRequirements = async (
return controlRequirements;
};

const createOrganizationEvidence = async (user: User) => {
const createOrganizationEvidence = async (
user: User,
frameworkIds: string[]
) => {
if (!user.organizationId) {
throw new Error("Not authorized - no organization found");
}
Expand All @@ -282,6 +285,17 @@ const createOrganizationEvidence = async (user: User) => {
where: {
type: RequirementType.evidence,
},
include: {
control: {
include: {
frameworkCategory: {
include: {
framework: true,
},
},
},
},
},
});

const organizationEvidence = await db.organizationEvidence.createMany({
Expand All @@ -291,6 +305,8 @@ const createOrganizationEvidence = async (user: User) => {
name: evidence.name,
description: evidence.description,
frequency: evidence.frequency,
frameworkId: evidence.control.frameworkCategory?.framework.id || "",
assigneeId: user.id,
})),
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,6 @@ export function EvidenceList() {
const t = useI18n();
const { evidenceTasks = [], isLoading, error } = useEvidenceTable();

// Add more detailed logging to help debug
console.log("EvidenceList - evidenceTasks:", evidenceTasks);
console.log("EvidenceList - isLoading:", isLoading);
console.log("EvidenceList - error:", error);

if (error) return <div>Error: {error.message}</div>;

return (
Expand Down
Original file line number Diff line number Diff line change
@@ -1,26 +1,19 @@
"use client";

import { useEffect } from "react";
import { useRouter } from "next/navigation";
import { Button } from "@bubba/ui/button";
import { ArrowLeft, CheckCircle2, MoreVertical, XCircle } from "lucide-react";
import { Card, CardContent, CardHeader, CardTitle } from "@bubba/ui/card";
import { Card, CardContent, CardHeader } from "@bubba/ui/card";
import { Skeleton } from "@bubba/ui/skeleton";
import { useOrganizationEvidence } from "../hooks/useOrganizationEvidence";
import { FileSection } from "./FileSection";
import { UrlSection } from "./UrlSection";
import { ReviewSection } from "./ReviewSection";
import { publishEvidence } from "../Actions/publishEvidence";
import { ArrowLeft, CheckCircle2, XCircle } from "lucide-react";
import { useAction } from "next-safe-action/hooks";
import { useRouter } from "next/navigation";
import { useEffect } from "react";
import { toast } from "sonner";
import { publishEvidence } from "../Actions/publishEvidence";
import { useOrganizationEvidence } from "../hooks/useOrganizationEvidence";
import type { EvidenceDetailsProps } from "../types";
import { toggleRelevance } from "../Actions/toggleRelevance";
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuItem,
DropdownMenuTrigger,
} from "@bubba/ui/dropdown-menu";
import { FileSection } from "./FileSection";
import { ReviewSection } from "./ReviewSection";
import { UrlSection } from "./UrlSection";

export function EvidenceDetails({ id }: EvidenceDetailsProps) {
const router = useRouter();
Expand All @@ -29,7 +22,7 @@ export function EvidenceDetails({ id }: EvidenceDetailsProps) {
const { execute: publishAction, isExecuting } = useAction(publishEvidence, {
onSuccess: () => {
toast.success("Evidence published successfully");
mutate();
handleMutate();
},
onError: () => {
toast.error("Failed to publish evidence, please try again.");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ interface EvidenceTableContextType {
setRelevance: (value: string | null) => void;
setPage: (value: string) => void;
setPageSize: (value: string) => void;
mutate: () => void;

// Data
evidenceTasks: EvidenceTaskRow[] | undefined;
Expand Down Expand Up @@ -83,6 +84,7 @@ export function EvidenceTableProvider({ children }: { children: ReactNode }) {
pagination,
isLoading,
error,
mutate,
} = useOrganizationEvidenceTasks({
search,
status: status as "published" | "draft" | null,
Expand Down Expand Up @@ -174,6 +176,7 @@ export function EvidenceTableProvider({ children }: { children: ReactNode }) {
setRelevance,
setPage,
setPageSize,
mutate,

// Data
evidenceTasks,
Expand Down
10 changes: 10 additions & 0 deletions apps/app/src/app/[locale]/(app)/(dashboard)/evidence/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,16 @@ export default async function Layout({

return (
<div className="max-w-[1200px] m-auto">
<SecondaryMenu
items={[
{
path: "/evidence/overview",
label: t("evidence.dashboard"),
},
{ path: "/evidence/list", label: t("evidence.list") },
]}
/>

<main className="py-8">{children}</main>
</div>
);
Expand Down
10 changes: 10 additions & 0 deletions apps/app/src/app/[locale]/(app)/(dashboard)/evidence/list/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { EvidenceList } from "../Components/EvidenceList";
import { EvidenceTableProvider } from "../hooks/useEvidenceTableContext";

export default function EvidencePage() {
return (
<EvidenceTableProvider>
<EvidenceList />
</EvidenceTableProvider>
);
}
Loading