diff --git a/e2e/captureSnapshot/session-detail.ts b/e2e/captureSnapshot/session-detail.ts index 2c1dd14..2ddf8ad 100644 --- a/e2e/captureSnapshot/session-detail.ts +++ b/e2e/captureSnapshot/session-detail.ts @@ -86,5 +86,22 @@ export const sessionDetailCapture = defineCapture({ } }, }, + + { + name: "sidechain-task-modal", + setup: async (page) => { + const sidechainTaskButton = page + .locator('[data-testid="sidechain-task-button"]') + .first(); + if (await sidechainTaskButton.isVisible()) { + await sidechainTaskButton.click(); + await page.waitForTimeout(1000); + + // モーダルが開いたことを確認 + const modal = page.locator('[data-testid="sidechain-task-modal"]'); + await modal.waitFor({ state: "visible", timeout: 3000 }); + } + }, + }, ], }); diff --git a/src/app/projects/[projectId]/sessions/[sessionId]/components/conversationModal/SidechainConversationModal.tsx b/src/app/projects/[projectId]/sessions/[sessionId]/components/conversationModal/SidechainConversationModal.tsx index e9bfae6..12b526a 100644 --- a/src/app/projects/[projectId]/sessions/[sessionId]/components/conversationModal/SidechainConversationModal.tsx +++ b/src/app/projects/[projectId]/sessions/[sessionId]/components/conversationModal/SidechainConversationModal.tsx @@ -67,6 +67,7 @@ export const SidechainConversationModal: FC< variant="outline" size="sm" className="w-full mb-3 items-center justify-start" + data-testid="sidechain-task-button" >
@@ -76,7 +77,10 @@ export const SidechainConversationModal: FC<
- + {title.length > 100 ? `${title.slice(0, 100)}...` : title} diff --git a/src/server/core/git/presentation/GitController.ts b/src/server/core/git/presentation/GitController.ts index 200830a..4f90a35 100644 --- a/src/server/core/git/presentation/GitController.ts +++ b/src/server/core/git/presentation/GitController.ts @@ -1,4 +1,4 @@ -import { Context, Effect, Layer } from "effect"; +import { Context, Effect, Either, Layer } from "effect"; import type { ControllerResponse } from "../../../lib/effect/toEffectResponse"; import type { InferEffect } from "../../../lib/effect/types"; import { ProjectRepository } from "../../project/infrastructure/ProjectRepository"; @@ -23,9 +23,19 @@ const LayerImpl = Effect.gen(function* () { } const projectPath = project.meta.projectPath; - const branches = yield* gitService.getBranches(projectPath); + const branches = yield* Effect.either( + gitService.getBranches(projectPath), + ); + + if (Either.isLeft(branches)) { + return { + response: [], + status: 200, + } as const satisfies ControllerResponse; + } + return { - response: branches, + response: branches.right, status: 200, } as const satisfies ControllerResponse; }); @@ -45,9 +55,17 @@ const LayerImpl = Effect.gen(function* () { const projectPath = project.meta.projectPath; - const commits = yield* gitService.getCommits(projectPath); + const commits = yield* Effect.either(gitService.getCommits(projectPath)); + + if (Either.isLeft(commits)) { + return { + response: [], + status: 200, + } as const satisfies ControllerResponse; + } + return { - response: commits, + response: commits.right, status: 200, } as const satisfies ControllerResponse; });