Integrate mobile chat workspace and OpenRouter agent flow
This commit is contained in:
@@ -79,7 +79,10 @@ export const useMobileProjectWorkspace = ({
|
||||
selectedWorkUnitId,
|
||||
signals,
|
||||
}),
|
||||
error: organization.error ?? chatAgent.error,
|
||||
error:
|
||||
organization.error ??
|
||||
chatAgent.error ??
|
||||
(projectWorkspace.error ? new Error(projectWorkspace.error) : undefined),
|
||||
organization,
|
||||
projectWorkspace,
|
||||
raiseIssue: projectWorkspace.raiseIssue,
|
||||
|
||||
@@ -19,6 +19,8 @@ export const useMobileWorkspace = ({
|
||||
const [issueBody, setIssueBody] = useState("");
|
||||
const [issueTitle, setIssueTitle] = useState("");
|
||||
const [expanded, setExpanded] = useState(initialExpanded);
|
||||
const [projectManagerOpen, setProjectManagerOpen] = useState(false);
|
||||
const [settingsOpen, setSettingsOpen] = useState(false);
|
||||
const [statusMessage, setStatusMessage] = useState<string>();
|
||||
|
||||
const handleComposerChange = (value: string) => {
|
||||
@@ -26,23 +28,32 @@ export const useMobileWorkspace = ({
|
||||
setStatusMessage(undefined);
|
||||
};
|
||||
|
||||
const handleComposerSubmit = (event: FormEvent<HTMLFormElement>) => {
|
||||
event.preventDefault();
|
||||
const message = composerValue.trim();
|
||||
if (!message) {
|
||||
const submitMessage = async (message: string) => {
|
||||
const trimmedMessage = message.trim();
|
||||
if (!trimmedMessage) {
|
||||
return;
|
||||
}
|
||||
setStatusMessage("Sending to Zopu…");
|
||||
const sendMessage = async () => {
|
||||
try {
|
||||
await onSend(trimmedMessage);
|
||||
setComposerValue("");
|
||||
setStatusMessage("Sent to Zopu");
|
||||
} catch (error) {
|
||||
setStatusMessage(errorMessage(error));
|
||||
throw error;
|
||||
}
|
||||
};
|
||||
|
||||
const handleComposerSubmit = (event: FormEvent<HTMLFormElement>) => {
|
||||
event.preventDefault();
|
||||
const sendCurrentMessage = async () => {
|
||||
try {
|
||||
await onSend(message);
|
||||
setComposerValue("");
|
||||
setStatusMessage("Sent to Zopu");
|
||||
} catch (error) {
|
||||
setStatusMessage(errorMessage(error));
|
||||
await submitMessage(composerValue);
|
||||
} catch {
|
||||
// submitMessage already exposes the failure through statusMessage.
|
||||
}
|
||||
};
|
||||
void sendMessage();
|
||||
void sendCurrentMessage();
|
||||
};
|
||||
|
||||
const handleCreateIssueSubmit = (event: FormEvent<HTMLFormElement>) => {
|
||||
@@ -70,13 +81,18 @@ export const useMobileWorkspace = ({
|
||||
composerValue,
|
||||
expanded,
|
||||
handleComposerChange,
|
||||
handleComposerMessageSubmit: submitMessage,
|
||||
handleComposerSubmit,
|
||||
handleCreateIssueSubmit,
|
||||
issueBody,
|
||||
issueTitle,
|
||||
projectManagerOpen,
|
||||
setExpanded,
|
||||
setIssueBody,
|
||||
setIssueTitle,
|
||||
setProjectManagerOpen,
|
||||
setSettingsOpen,
|
||||
settingsOpen,
|
||||
statusMessage,
|
||||
};
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user