Skip to content

Commit babc9b7

Browse files
authored
feat: Make it so users can edit queued messages (up arrow) (#742)
1 parent f7d1848 commit babc9b7

2 files changed

Lines changed: 22 additions & 0 deletions

File tree

apps/twig/src/renderer/features/message-editor/tiptap/useTiptapEditor.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { getSessionActions } from "@features/sessions/stores/sessionStore";
12
import { trpcVanilla } from "@renderer/trpc/client";
23
import { toast } from "@renderer/utils/toast";
34
import { useSettingsStore } from "@stores/settingsStore";
@@ -143,6 +144,18 @@ export function useTiptapEditor(options: UseTiptapEditorOptions) {
143144
const isAtEnd = from === view.state.doc.content.size - 1;
144145

145146
if (event.key === "ArrowUp" && (isEmpty || isAtStart)) {
147+
const queuedContent =
148+
getSessionActions().popQueuedMessagesAsText(taskId);
149+
if (queuedContent !== null && queuedContent !== undefined) {
150+
event.preventDefault();
151+
view.dispatch(
152+
view.state.tr
153+
.delete(1, view.state.doc.content.size - 1)
154+
.insertText(queuedContent, 1),
155+
);
156+
return true;
157+
}
158+
146159
const newText = historyActions.navigateUp(taskId, currentText);
147160
if (newText !== null) {
148161
event.preventDefault();

apps/twig/src/renderer/features/sessions/stores/sessionStore.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ interface SessionActions {
127127
clearSessionError: (taskId: string) => Promise<void>;
128128
removeQueuedMessage: (taskId: string, queueId: string) => void;
129129
popAllQueuedMessages: (taskId: string) => QueuedMessage[];
130+
popQueuedMessagesAsText: (taskId: string) => string | null;
130131
}
131132

132133
interface AuthCredentials {
@@ -1402,6 +1403,14 @@ const useStore = create<SessionStore>()(
14021403

14031404
return messages;
14041405
},
1406+
1407+
popQueuedMessagesAsText: (taskId: string): string | null => {
1408+
const messages = useStore
1409+
.getState()
1410+
.actions.popAllQueuedMessages(taskId);
1411+
if (messages.length === 0) return null;
1412+
return messages.map((msg) => msg.content).join("\n\n");
1413+
},
14051414
},
14061415
};
14071416
}),

0 commit comments

Comments
 (0)