Skip to content

Commit d153b3b

Browse files
authored
feat(chat): create new conversation after initialization (Issue #2351) (#2404)
1 parent f5147eb commit d153b3b

File tree

3 files changed

+24
-14
lines changed

3 files changed

+24
-14
lines changed

apps/chat/src/store/conversations/conversations.epics.ts

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -134,25 +134,18 @@ const initSelectedConversationsEpic: AppEpic = (action$, state$) =>
134134
state$.value,
135135
);
136136

137-
return concat(
138-
iif(
139-
() => !isOverlay,
140-
of(ConversationsActions.getSelectedConversations()),
141-
EMPTY,
142-
),
143-
iif(
144-
() => isOverlay && !!optionsReceived,
145-
of(ConversationsActions.getSelectedConversations()),
146-
EMPTY,
147-
),
137+
return iif(
138+
() => !isOverlay || !!optionsReceived,
139+
of(ConversationsActions.getSelectedConversations({ createNew: true })),
140+
EMPTY,
148141
);
149142
}),
150143
);
151144

152145
const getSelectedConversationsEpic: AppEpic = (action$, state$) =>
153146
action$.pipe(
154147
filter(ConversationsActions.getSelectedConversations.match),
155-
switchMap(() =>
148+
switchMap(({ payload }) =>
156149
ConversationService.getSelectedConversationsIds().pipe(
157150
switchMap((selectedConversationsIds) => {
158151
const overlayConversationId =
@@ -192,7 +185,12 @@ const getSelectedConversationsEpic: AppEpic = (action$, state$) =>
192185
}),
193186
map(({ selectedConversations, selectedIds }) => {
194187
const conversations = selectedConversations
195-
.filter(Boolean)
188+
.filter(
189+
(conv) =>
190+
!!conv &&
191+
(!payload?.createNew ||
192+
!conv.messages.filter((m) => m.role !== Role.System).length),
193+
)
196194
.map((conv) => regenerateConversationId(conv!));
197195
if (!selectedIds.length || !conversations.length) {
198196
return {
@@ -364,6 +362,7 @@ const createNewConversationsEpic: AppEpic = (action$, state$) =>
364362
switchMap(({ names, lastConversation, conversations }) => {
365363
return state$.pipe(
366364
startWith(state$.value),
365+
filter(ModelsSelectors.selectIsRecentModelsLoaded),
367366
map((state) => {
368367
const isIsolatedView = SettingsSelectors.selectIsIsolatedView(state);
369368
const isolatedModelId =

apps/chat/src/store/conversations/conversations.reducers.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,10 @@ export const conversationsSlice = createSlice({
7575
initFoldersAndConversationsSuccess: (state) => {
7676
state.conversationsLoaded = true;
7777
},
78-
getSelectedConversations: (state) => state,
78+
getSelectedConversations: (
79+
state,
80+
_action: PayloadAction<{ createNew: boolean } | undefined>,
81+
) => state,
7982
saveConversation: (state, _action: PayloadAction<Conversation>) => state,
8083
saveConversationSuccess: (state) => {
8184
if (state.isMessageSending) {

apps/chat/src/store/models/models.reducers.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ export interface ModelsState {
1919
models: DialAIEntityModel[];
2020
modelsMap: ModelsMap;
2121
recentModelsIds: string[];
22+
recentModelsStatus: UploadStatus;
2223
}
2324

2425
const initialState: ModelsState = {
@@ -27,6 +28,7 @@ const initialState: ModelsState = {
2728
models: [],
2829
modelsMap: {},
2930
recentModelsIds: [],
31+
recentModelsStatus: UploadStatus.UNINITIALIZED,
3032
};
3133

3234
export const modelsSlice = createSlice({
@@ -96,6 +98,7 @@ export const modelsSlice = createSlice({
9698
0,
9799
RECENT_MODELS_COUNT,
98100
);
101+
state.recentModelsStatus = UploadStatus.LOADED;
99102
},
100103
updateRecentModels: (
101104
state,
@@ -147,6 +150,10 @@ const selectModelsError = createSelector([rootSelector], (state) => {
147150
return state.error;
148151
});
149152

153+
const selectIsRecentModelsLoaded = createSelector([rootSelector], (state) => {
154+
return state.recentModelsStatus === UploadStatus.LOADED;
155+
});
156+
150157
const selectModels = createSelector([rootSelector], (state) => {
151158
return state.models;
152159
});
@@ -183,6 +190,7 @@ export const ModelsSelectors = {
183190
selectModelsMap,
184191
selectRecentModelsIds,
185192
selectRecentModels,
193+
selectIsRecentModelsLoaded,
186194
selectModel,
187195
selectModelsOnly,
188196
};

0 commit comments

Comments
 (0)