Skip to content

Commit

Permalink
fix: properly reset workspace when disconnecting EvoThread
Browse files Browse the repository at this point in the history
  • Loading branch information
dOrgJelli committed Dec 21, 2023
1 parent 0921a60 commit 6c7c3d9
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 14 deletions.
12 changes: 4 additions & 8 deletions apps/browser/components/Workspace.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { DownloadSimple, FilePlus } from "@phosphor-icons/react";
import Button from "./Button";
import { useWorkspaceUploadDrop } from "@/lib/hooks/useWorkspaceUploadDrop";
import { useAtom } from "jotai";
import { workspaceFilesAtom, workspaceUploadsAtom, welcomeModalAtom } from "@/lib/store";
import { workspaceFilesAtom, isChatLoadingAtom, welcomeModalAtom } from "@/lib/store";
import { useDownloadWorkspaceAsZip } from "@/lib/hooks/useDownloadWorkspaceAsZip";
import { useFirstTimeUser } from "@/lib/hooks/useFirstTimeUser";

Expand All @@ -20,7 +20,7 @@ function Workspace({ onUpload }: WorkspaceProps) {
const { getRootProps, getInputProps, isDragAccept, open } =
useWorkspaceUploadDrop(onUpload);
const [workspaceFiles] = useAtom(workspaceFilesAtom);
const [workspaceUploads] = useAtom(workspaceUploadsAtom);
const [isChatLoading] = useAtom(isChatLoadingAtom);
const downloadFilesAsZip = useDownloadWorkspaceAsZip();
const [showFile, setShowFile] = useState<InMemoryFile | null>(null);
const [showFileModal, setShowFileModal] = useState<boolean>(false);
Expand All @@ -40,8 +40,6 @@ function Workspace({ onUpload }: WorkspaceProps) {
open();
}

const workspaceLoading = workspaceUploads.length > 0;

const handleFileClick = (file: InMemoryFile | null) => {
setShowFile(file);
setShowFileModal(true);
Expand Down Expand Up @@ -70,10 +68,8 @@ function Workspace({ onUpload }: WorkspaceProps) {
</div>
</div>
<div className="relative h-full max-h-[24vh] overflow-y-auto [scrollbar-gutter:stable]">
{workspaceLoading ? (
<div className="flex h-full w-full items-center justify-center">
<div className="h-9 w-9 animate-spin rounded-full border-4 border-black/10 border-l-cyan-600" />
</div>
{isChatLoading ? (
<div className="mt-1 h-24 w-full animate-pulse rounded-lg bg-zinc-700" />
) : (
<>
{workspaceFiles.length === 0 ? (
Expand Down
2 changes: 1 addition & 1 deletion apps/browser/lib/hooks/useEvoService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ export const useEvoService = (
return workspace;
};

const setWorkspace = async (workspace: Workspace) => {
const setWorkspace = async (workspace: Workspace | undefined) => {
setWorkspaceAtom(workspace);
await workspaceFilesUpdate(workspace);
};
Expand Down
7 changes: 6 additions & 1 deletion apps/browser/lib/hooks/useWorkspaceFilesUpdate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,12 @@ import { workspaceFilesAtom } from "@/lib/store";
export const useWorkspaceFilesUpdate = () => {
const [, setWorkspaceFiles] = useAtom(workspaceFilesAtom);

return async (workspace: Workspace) => {
return async (workspace: Workspace | undefined) => {
if (!workspace) {
setWorkspaceFiles([]);
return;
}

const files: InMemoryFile[] = [];
const encoder = new TextEncoder();
const entries = await workspace.readdir("./");
Expand Down
8 changes: 4 additions & 4 deletions apps/browser/lib/services/evo/EvoThread.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ export interface EvoThreadCallbacks {
setStatus: (status?: string) => void;
setIsRunning: (value: boolean) => void;
setChatLog: (chatLog: ChatLog[]) => void;
setWorkspace: (workspace: Workspace) => void;
setWorkspace: (workspace: Workspace | undefined) => Promise<void>;
onGoalCapReached: () => void;
onError: (error: string) => void;
}
Expand Down Expand Up @@ -78,11 +78,11 @@ export class EvoThread {
return;
}

// Dispatch init values
// Dispatch reset values
this._callbacks.setStatus(INIT_STATE.status);
this._callbacks.setIsRunning(INIT_STATE.isRunning);
this._callbacks.setChatLog(INIT_STATE.logs);
this._callbacks.setWorkspace(INIT_STATE.workspace);
this._callbacks.setWorkspace(undefined);

// Disconnect all callbacks
this._callbacks = undefined;
Expand All @@ -103,7 +103,7 @@ export class EvoThread {
this._callbacks.setStatus(this._state.status);
this._callbacks.setIsRunning(this._state.isRunning);
this._callbacks.setChatLog(this._state.logs);
this._callbacks.setWorkspace(this._state.workspace);
await this._callbacks.setWorkspace(this._state.workspace);
}

async start(options: EvoThreadStartOptions): Promise<void> {
Expand Down

0 comments on commit 6c7c3d9

Please sign in to comment.