From 1b1661a3e49d3b499f1e22160d1efaac49590ba9 Mon Sep 17 00:00:00 2001 From: Mohammad Rad Date: Thu, 17 Oct 2024 16:48:17 -0700 Subject: [PATCH] Refactor: move getWorkflowLog logic from log-view to pull-request --- app/(dashboard)/dashboard/log-view.tsx | 16 +++------------- app/(dashboard)/dashboard/pull-request.tsx | 20 ++++++++++++++++---- app/(dashboard)/dashboard/types.ts | 7 +++---- 3 files changed, 22 insertions(+), 21 deletions(-) diff --git a/app/(dashboard)/dashboard/log-view.tsx b/app/(dashboard)/dashboard/log-view.tsx index 90b6d4dc..dd21b8a1 100644 --- a/app/(dashboard)/dashboard/log-view.tsx +++ b/app/(dashboard)/dashboard/log-view.tsx @@ -2,24 +2,14 @@ import { useRef, useMemo, useState } from 'react' import { Loader2, ChevronRight, ChevronDown } from 'lucide-react' -import { getWorkflowLogs } from '@/lib/github' -import useSWR from 'swr' -import { LogViewProps, LogGroup } from './types' +import { LogGroup, LogViewProps } from './types' -export function LogView({ owner, repo, runId }: LogViewProps) { + +export function LogView({ logs, error, isLoading }: LogViewProps) { const logContainerRef = useRef(null) const [expandedGroups, setExpandedGroups] = useState>({}) - const { data: logs, error, isLoading } = useSWR( - runId ? ['workflowLogs', owner, repo, runId] : null, - () => getWorkflowLogs(owner, repo, runId!), - { - revalidateOnFocus: false, - revalidateOnReconnect: false, - } - ) - const parsedLogs = useMemo(() => { if (!logs) return []; diff --git a/app/(dashboard)/dashboard/pull-request.tsx b/app/(dashboard)/dashboard/pull-request.tsx index d6341b06..11ef7569 100644 --- a/app/(dashboard)/dashboard/pull-request.tsx +++ b/app/(dashboard)/dashboard/pull-request.tsx @@ -28,7 +28,8 @@ import { getPullRequestInfo, getFailingTests, getLatestRunId, - fetchBuildStatus + fetchBuildStatus, + getWorkflowLogs } from "@/lib/github"; import { LogView } from "./log-view"; import { PullRequest, TestFile } from "./types"; @@ -84,6 +85,17 @@ export function PullRequestItem({ ) ); + const { data: logs, error: logsError } = useSWR( + showLogs && latestRunId + ? ['workflowLogs', pullRequest.repository.owner.login, pullRequest.repository.name, latestRunId] + : null, + () => getWorkflowLogs(pullRequest.repository.owner.login, pullRequest.repository.name, latestRunId!), + { + revalidateOnFocus: false, + revalidateOnReconnect: false, + } + ); + const [testFiles, setTestFiles] = useState([]); const [oldTestFiles, setOldTestFiles] = useState([]); const [selectedFiles, setSelectedFiles] = useState>( @@ -476,9 +488,9 @@ export function PullRequestItem({ {showLogs && latestRunId && (
)} diff --git a/app/(dashboard)/dashboard/types.ts b/app/(dashboard)/dashboard/types.ts index 4180b434..65cfb1f3 100644 --- a/app/(dashboard)/dashboard/types.ts +++ b/app/(dashboard)/dashboard/types.ts @@ -29,11 +29,10 @@ export type CommitChangesToPullRequest = ( commitMessage: string ) => Promise; - export interface LogViewProps { - owner: string; - repo: string; - runId: string | null; + logs: string | undefined; + error: Error | undefined; + isLoading: boolean; } export interface LogGroup {