Skip to content

Commit

Permalink
fix: updateCurrentSession => updateTargetSession
Browse files Browse the repository at this point in the history
  • Loading branch information
Dogtiti committed Nov 6, 2024
1 parent 00d6cb2 commit c4e19db
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 53 deletions.
80 changes: 45 additions & 35 deletions app/components/chat.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,8 @@ export function SessionConfigModel(props: { onClose: () => void }) {
text={Locale.Chat.Config.Reset}
onClick={async () => {
if (await showConfirm(Locale.Memory.ResetConfirm)) {
chatStore.updateCurrentSession(
chatStore.updateTargetSession(
session,
(session) => (session.memoryPrompt = ""),
);
}
Expand All @@ -173,7 +174,10 @@ export function SessionConfigModel(props: { onClose: () => void }) {
updateMask={(updater) => {
const mask = { ...session.mask };
updater(mask);
chatStore.updateCurrentSession((session) => (session.mask = mask));
chatStore.updateTargetSession(
session,
(session) => (session.mask = mask),
);
}}
shouldSyncFromGlobal
extraListItems={
Expand Down Expand Up @@ -345,12 +349,14 @@ export function PromptHints(props: {

function ClearContextDivider() {
const chatStore = useChatStore();
const session = chatStore.currentSession();

return (
<div
className={styles["clear-context"]}
onClick={() =>
chatStore.updateCurrentSession(
chatStore.updateTargetSession(
session,
(session) => (session.clearContextIndex = undefined),
)
}
Expand Down Expand Up @@ -460,6 +466,7 @@ export function ChatActions(props: {
const navigate = useNavigate();
const chatStore = useChatStore();
const pluginStore = usePluginStore();
const session = chatStore.currentSession();

// switch themes
const theme = config.theme;
Expand All @@ -476,10 +483,9 @@ export function ChatActions(props: {
const stopAll = () => ChatControllerPool.stopAll();

// switch model
const currentModel = chatStore.currentSession().mask.modelConfig.model;
const currentModel = session.mask.modelConfig.model;
const currentProviderName =
chatStore.currentSession().mask.modelConfig?.providerName ||
ServiceProvider.OpenAI;
session.mask.modelConfig?.providerName || ServiceProvider.OpenAI;
const allModels = useAllModels();
const models = useMemo(() => {
const filteredModels = allModels.filter((m) => m.available);
Expand Down Expand Up @@ -513,12 +519,9 @@ export function ChatActions(props: {
const dalle3Sizes: DalleSize[] = ["1024x1024", "1792x1024", "1024x1792"];
const dalle3Qualitys: DalleQuality[] = ["standard", "hd"];
const dalle3Styles: DalleStyle[] = ["vivid", "natural"];
const currentSize =
chatStore.currentSession().mask.modelConfig?.size ?? "1024x1024";
const currentQuality =
chatStore.currentSession().mask.modelConfig?.quality ?? "standard";
const currentStyle =
chatStore.currentSession().mask.modelConfig?.style ?? "vivid";
const currentSize = session.mask.modelConfig?.size ?? "1024x1024";
const currentQuality = session.mask.modelConfig?.quality ?? "standard";
const currentStyle = session.mask.modelConfig?.style ?? "vivid";

const isMobileScreen = useMobileScreen();

Expand All @@ -536,7 +539,7 @@ export function ChatActions(props: {
if (isUnavailableModel && models.length > 0) {
// show next model to default model if exist
let nextModel = models.find((model) => model.isDefault) || models[0];
chatStore.updateCurrentSession((session) => {
chatStore.updateTargetSession(session, (session) => {
session.mask.modelConfig.model = nextModel.name;
session.mask.modelConfig.providerName = nextModel?.provider
?.providerName as ServiceProvider;
Expand All @@ -547,7 +550,7 @@ export function ChatActions(props: {
: nextModel.name,
);
}
}, [chatStore, currentModel, models]);
}, [chatStore, currentModel, models, session]);

return (
<div className={styles["chat-input-actions"]}>
Expand Down Expand Up @@ -614,7 +617,7 @@ export function ChatActions(props: {
text={Locale.Chat.InputActions.Clear}
icon={<BreakIcon />}
onClick={() => {
chatStore.updateCurrentSession((session) => {
chatStore.updateTargetSession(session, (session) => {
if (session.clearContextIndex === session.messages.length) {
session.clearContextIndex = undefined;
} else {
Expand Down Expand Up @@ -646,7 +649,7 @@ export function ChatActions(props: {
onSelection={(s) => {
if (s.length === 0) return;
const [model, providerName] = s[0].split("@");
chatStore.updateCurrentSession((session) => {
chatStore.updateTargetSession(session, (session) => {
session.mask.modelConfig.model = model as ModelType;
session.mask.modelConfig.providerName =
providerName as ServiceProvider;
Expand Down Expand Up @@ -684,7 +687,7 @@ export function ChatActions(props: {
onSelection={(s) => {
if (s.length === 0) return;
const size = s[0];
chatStore.updateCurrentSession((session) => {
chatStore.updateTargetSession(session, (session) => {
session.mask.modelConfig.size = size;
});
showToast(size);
Expand All @@ -711,7 +714,7 @@ export function ChatActions(props: {
onSelection={(q) => {
if (q.length === 0) return;
const quality = q[0];
chatStore.updateCurrentSession((session) => {
chatStore.updateTargetSession(session, (session) => {
session.mask.modelConfig.quality = quality;
});
showToast(quality);
Expand All @@ -738,7 +741,7 @@ export function ChatActions(props: {
onSelection={(s) => {
if (s.length === 0) return;
const style = s[0];
chatStore.updateCurrentSession((session) => {
chatStore.updateTargetSession(session, (session) => {
session.mask.modelConfig.style = style;
});
showToast(style);
Expand Down Expand Up @@ -769,7 +772,7 @@ export function ChatActions(props: {
}))}
onClose={() => setShowPluginSelector(false)}
onSelection={(s) => {
chatStore.updateCurrentSession((session) => {
chatStore.updateTargetSession(session, (session) => {
session.mask.plugin = s as string[];
});
}}
Expand Down Expand Up @@ -812,7 +815,8 @@ export function EditMessageModal(props: { onClose: () => void }) {
icon={<ConfirmIcon />}
key="ok"
onClick={() => {
chatStore.updateCurrentSession(
chatStore.updateTargetSession(
session,
(session) => (session.messages = messages),
);
props.onClose();
Expand All @@ -829,7 +833,8 @@ export function EditMessageModal(props: { onClose: () => void }) {
type="text"
value={session.topic}
onInput={(e) =>
chatStore.updateCurrentSession(
chatStore.updateTargetSession(
session,
(session) => (session.topic = e.currentTarget.value),
)
}
Expand Down Expand Up @@ -990,7 +995,8 @@ function _Chat() {
prev: () => chatStore.nextSession(-1),
next: () => chatStore.nextSession(1),
clear: () =>
chatStore.updateCurrentSession(
chatStore.updateTargetSession(
session,
(session) => (session.clearContextIndex = session.messages.length),
),
fork: () => chatStore.forkSession(),
Expand Down Expand Up @@ -1061,7 +1067,7 @@ function _Chat() {
};

useEffect(() => {
chatStore.updateCurrentSession((session) => {
chatStore.updateTargetSession(session, (session) => {
const stopTiming = Date.now() - REQUEST_TIMEOUT_MS;
session.messages.forEach((m) => {
// check if should stop all stale messages
Expand All @@ -1087,7 +1093,7 @@ function _Chat() {
}
});
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
}, [session]);

// check if should send message
const onInputKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {
Expand Down Expand Up @@ -1118,7 +1124,8 @@ function _Chat() {
};

const deleteMessage = (msgId?: string) => {
chatStore.updateCurrentSession(
chatStore.updateTargetSession(
session,
(session) =>
(session.messages = session.messages.filter((m) => m.id !== msgId)),
);
Expand Down Expand Up @@ -1185,7 +1192,7 @@ function _Chat() {
};

const onPinMessage = (message: ChatMessage) => {
chatStore.updateCurrentSession((session) =>
chatStore.updateTargetSession(session, (session) =>
session.mask.context.push(message),
);

Expand Down Expand Up @@ -1711,14 +1718,17 @@ function _Chat() {
});
}
}
chatStore.updateCurrentSession((session) => {
const m = session.mask.context
.concat(session.messages)
.find((m) => m.id === message.id);
if (m) {
m.content = newContent;
}
});
chatStore.updateTargetSession(
session,
(session) => {
const m = session.mask.context
.concat(session.messages)
.find((m) => m.id === message.id);
if (m) {
m.content = newContent;
}
},
);
}}
></IconButton>
</div>
Expand Down
29 changes: 11 additions & 18 deletions app/store/chat.ts
Original file line number Diff line number Diff line change
Expand Up @@ -357,7 +357,7 @@ export const useChatStore = createPersistStore(
session.messages = session.messages.concat();
session.lastUpdate = Date.now();
});
get().updateStat(message);
get().updateStat(message, targetSession);
get().summarizeSession(false, targetSession);
},

Expand Down Expand Up @@ -396,10 +396,10 @@ export const useChatStore = createPersistStore(
// get recent messages
const recentMessages = get().getMessagesWithMemory();
const sendMessages = recentMessages.concat(userMessage);
const messageIndex = get().currentSession().messages.length + 1;
const messageIndex = session.messages.length + 1;

// save user's and bot's message
get().updateCurrentSession((session) => {
get().updateTargetSession(session, (session) => {
const savedUserMessage = {
...userMessage,
content: mContent,
Expand All @@ -420,7 +420,7 @@ export const useChatStore = createPersistStore(
if (message) {
botMessage.content = message;
}
get().updateCurrentSession((session) => {
get().updateTargetSession(session, (session) => {
session.messages = session.messages.concat();
});
},
Expand All @@ -434,7 +434,7 @@ export const useChatStore = createPersistStore(
},
onBeforeTool(tool: ChatMessageTool) {
(botMessage.tools = botMessage?.tools || []).push(tool);
get().updateCurrentSession((session) => {
get().updateTargetSession(session, (session) => {
session.messages = session.messages.concat();
});
},
Expand All @@ -444,7 +444,7 @@ export const useChatStore = createPersistStore(
tools[i] = { ...tool };
}
});
get().updateCurrentSession((session) => {
get().updateTargetSession(session, (session) => {
session.messages = session.messages.concat();
});
},
Expand All @@ -459,7 +459,7 @@ export const useChatStore = createPersistStore(
botMessage.streaming = false;
userMessage.isError = !isAborted;
botMessage.isError = !isAborted;
get().updateCurrentSession((session) => {
get().updateTargetSession(session, (session) => {
session.messages = session.messages.concat();
});
ChatControllerPool.remove(
Expand Down Expand Up @@ -591,8 +591,8 @@ export const useChatStore = createPersistStore(
set(() => ({ sessions }));
},

resetSession() {
get().updateCurrentSession((session) => {
resetSession(session: ChatSession) {
get().updateTargetSession(session, (session) => {
session.messages = [];
session.memoryPrompt = "";
});
Expand Down Expand Up @@ -736,19 +736,12 @@ export const useChatStore = createPersistStore(
}
},

updateStat(message: ChatMessage) {
get().updateCurrentSession((session) => {
updateStat(message: ChatMessage, session: ChatSession) {
get().updateTargetSession(session, (session) => {
session.stat.charCount += message.content.length;
// TODO: should update chat count and word count
});
},

updateCurrentSession(updater: (session: ChatSession) => void) {
const sessions = get().sessions;
const index = get().currentSessionIndex;
updater(sessions[index]);
set(() => ({ sessions }));
},
updateTargetSession(
targetSession: ChatSession,
updater: (session: ChatSession) => void,
Expand Down

0 comments on commit c4e19db

Please sign in to comment.