Skip to content

Commit 5c76c92

Browse files
authored
fix: automatic update of service list (#913)
* fix: automatic update of service list * docs: add release note
1 parent f03ad8a commit 5c76c92

9 files changed

Lines changed: 38 additions & 21 deletions

File tree

docs/content.en/docs/release-notes/_index.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ feat: support switching groups via keyboard shortcuts #911
1717

1818
### 🐛 Bug fix
1919

20+
fix: automatic update of service list #913
21+
2022
### ✈️ Improvements
2123

2224
refactor: improve sorting logic of search results #910

src/components/Assistant/AssistantList.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,19 +30,23 @@ export function AssistantList({ assistantIDs = [] }: AssistantListProps) {
3030
const setCurrentAssistant = useConnectStore((state) => {
3131
return state.setCurrentAssistant;
3232
});
33+
const assistantList = useConnectStore((state) => state.assistantList);
34+
3335
const aiAssistant = useShortcutsStore((state) => state.aiAssistant);
36+
3437
const [assistants, setAssistants] = useState<any[]>([]);
3538
const [isRefreshing, setIsRefreshing] = useState(false);
3639
const popoverRef = useRef<HTMLDivElement>(null);
3740
const popoverButtonRef = useRef<HTMLButtonElement>(null);
3841
const searchInputRef = useRef<HTMLInputElement>(null);
3942
const [keyword, setKeyword] = useState("");
43+
4044
const debounceKeyword = useDebounce(keyword, { wait: 500 });
45+
4146
const askAiAssistantId = useSearchStore((state) => state.askAiAssistantId);
4247
const setAskAiAssistantId = useSearchStore((state) => {
4348
return state.setAskAiAssistantId;
4449
});
45-
const assistantList = useConnectStore((state) => state.assistantList);
4650

4751
const { fetchAssistant } = AssistantFetcher({
4852
debounceKeyword,

src/components/Assistant/ServerList.tsx

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,10 @@ import StatusIndicator from "@/components/Cloud/StatusIndicator";
1818
import { useAuthStore } from "@/stores/authStore";
1919
import { useSearchStore } from "@/stores/searchStore";
2020
import { useServers } from "@/hooks/useServers";
21-
import { getCurrentWindowService, setCurrentWindowService } from "@/commands/windowService";
21+
import {
22+
getCurrentWindowService,
23+
setCurrentWindowService,
24+
} from "@/commands/windowService";
2225

2326
interface ServerListProps {
2427
clearChat: () => void;
@@ -33,10 +36,9 @@ export function ServerList({ clearChat }: ServerListProps) {
3336
);
3437
const setEndpoint = useAppStore((state) => state.setEndpoint);
3538
const isTauri = useAppStore((state) => state.isTauri);
39+
3640
const currentService = useConnectStore((state) => state.currentService);
37-
const cloudSelectService = useConnectStore((state) => {
38-
return state.cloudSelectService;
39-
});
41+
const serverList = useConnectStore((state) => state.serverList);
4042

4143
const { setMessages } = useChatStore();
4244

@@ -55,7 +57,6 @@ export function ServerList({ clearChat }: ServerListProps) {
5557
const serverListButtonRef = useRef<HTMLButtonElement>(null);
5658

5759
const { refreshServerList } = useServers();
58-
const serverList = useConnectStore((state) => state.serverList);
5960

6061
const switchServer = async (server: IServer) => {
6162
if (!server) return;
@@ -95,8 +96,10 @@ export function ServerList({ clearChat }: ServerListProps) {
9596
} else {
9697
switchServer(enabledServers[enabledServers.length - 1]);
9798
}
99+
} else {
100+
setCurrentWindowService({});
98101
}
99-
}, [currentService?.id, cloudSelectService?.id, serverList]);
102+
}, [serverList]);
100103

101104
useEffect(() => {
102105
if (!askAiServerId || serverList.length === 0) return;

src/components/Assistant/SessionFile.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,6 @@ const SessionFile = (props: SessionFileProps) => {
3737

3838
const getUploadedFiles = async () => {
3939
if (isTauri) {
40-
console.log("sessionId", sessionId);
41-
4240
const response: any = await platformAdapter.commands(
4341
"get_attachment_by_ids",
4442
{

src/components/Search/AskAi.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ const AskAi: FC<AskAiProps> = (props) => {
107107
unlisten.current = await platformAdapter.listenEvent(
108108
"quick-ai-access-client-id",
109109
({ payload }) => {
110-
console.log("ask_ai", JSON.parse(payload));
110+
// console.log("ask_ai", JSON.parse(payload));
111111

112112
const chunkData = JSON.parse(payload);
113113

src/hooks/useServers.ts

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,6 @@ import {
1111

1212
export const useServers = () => {
1313
const setServerList = useConnectStore((state) => state.setServerList);
14-
const currentService = useConnectStore((state) => state.currentService);
15-
const cloudSelectService = useConnectStore((state) => {
16-
return state.cloudSelectService;
17-
});
1814

1915
const getAllServerList = async () => {
2016
try {
@@ -73,15 +69,15 @@ export const useServers = () => {
7369
await setCurrentWindowService({ ...service, enabled });
7470
await getAllServerList();
7571
},
76-
[currentService, cloudSelectService]
72+
[]
7773
);
7874

7975
const removeServer = useCallback(
8076
async (id: string) => {
8177
await platformAdapter.commands("remove_coco_server", id);
8278
await getAllServerList();
8379
},
84-
[currentService?.id, cloudSelectService?.id]
80+
[]
8581
);
8682

8783
const logoutServer = useCallback(async (id: string) => {
@@ -92,7 +88,7 @@ export const useServers = () => {
9288

9389
useEffect(() => {
9490
getAllServerList();
95-
}, [currentService?.enabled, cloudSelectService?.enabled]);
91+
}, []);
9692

9793
return {
9894
getAllServerList,

src/hooks/useSyncStore.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,8 @@ export const useSyncStore = () => {
117117
const setShowTooltip = useAppStore((state) => state.setShowTooltip);
118118
const setEndpoint = useAppStore((state) => state.setEndpoint);
119119
const setLanguage = useAppStore((state) => state.setLanguage);
120-
const { setCurrentService } = useConnectStore();
120+
121+
const setServerListSilently = useConnectStore((state) => state.setServerListSilently);
121122

122123
useEffect(() => {
123124
if (!resetFixedWindow) {
@@ -185,7 +186,6 @@ export const useSyncStore = () => {
185186
connectionTimeout,
186187
querySourceTimeout,
187188
allowSelfSignature,
188-
currentService,
189189
} = payload;
190190
if (isNumber(connectionTimeout)) {
191191
setConnectionTimeout(connectionTimeout);
@@ -194,7 +194,6 @@ export const useSyncStore = () => {
194194
setQueryTimeout(querySourceTimeout);
195195
}
196196
setAllowSelfSignature(allowSelfSignature);
197-
setCurrentService(currentService);
198197
}),
199198

200199
platformAdapter.listenEvent("change-appearance-store", ({ payload }) => {
@@ -235,6 +234,10 @@ export const useSyncStore = () => {
235234
setEndpoint(endpoint);
236235
setLanguage(language);
237236
}),
237+
238+
platformAdapter.listenEvent("server-list-changed", ({ payload }) => {
239+
setServerListSilently(payload);
240+
}),
238241
]);
239242

240243
return () => {

src/stores/connectStore.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ type keyArrayObject = {
1515
export type IConnectStore = {
1616
serverList: Server[];
1717
setServerList: (servers: Server[]) => void;
18+
setServerListSilently: (servers: Server[]) => void;
1819
currentService: Server;
1920
setCurrentService: (service: Server) => void;
2021
cloudSelectService: Server;
@@ -44,7 +45,15 @@ export const useConnectStore = create<IConnectStore>()(
4445
persist(
4546
(set) => ({
4647
serverList: [],
47-
setServerList: (serverList: Server[]) => {
48+
setServerList: async(serverList: Server[]) => {
49+
set(
50+
produce((draft) => {
51+
draft.serverList = serverList;
52+
})
53+
);
54+
await platformAdapter.emitEvent("server-list-changed", serverList);
55+
},
56+
setServerListSilently: (serverList: Server[]) => {
4857
set(
4958
produce((draft) => {
5059
draft.serverList = serverList;

src/types/platform.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { AppTheme } from "@/types/index";
77
import { SearchDocument } from "./search";
88
import { IAppStore } from "@/stores/appStore";
99
import { ExtensionPermission } from "@/components/Settings/Extensions";
10+
import type { Server } from "@/types/server";
1011

1112
export interface EventPayloads {
1213
"theme-changed": string;
@@ -49,6 +50,7 @@ export interface EventPayloads {
4950
oauth_success: any;
5051
extension_install_success: any;
5152
"open_view_extension": [string, ExtensionPermission];
53+
"server-list-changed": Server[];
5254
}
5355

5456
// Window operation interface

0 commit comments

Comments
 (0)