feat: electron only

This commit is contained in:
shano
2025-09-10 01:11:06 +08:00
parent 2a8d0f2066
commit 08f7e5adfe
5 changed files with 37 additions and 18 deletions

View File

@@ -275,6 +275,28 @@ export function initializeFileManager() {
}
}
});
// 搜索建议
ipcMain.handle('get-search-suggestions', async (_, keyword: string) => {
if (!keyword || !keyword.trim()) {
return [];
}
try {
console.log(`[Main Process Proxy] Forwarding suggestion request for: ${keyword}`);
const response = await axios.get('http://msearchcdn.kugou.com/new/app/i/search.php', {
params: {
cmd: 302,
keyword: keyword,
},
timeout: 5000
});
return response.data;
} catch (error: any) {
console.error('[Main Process Proxy] Failed to fetch search suggestions:', error.message);
return [];
}
});
}
/**

View File

@@ -22,6 +22,7 @@ interface API {
onLanguageChanged: (callback: (locale: string) => void) => void;
removeDownloadListeners: () => void;
invoke: (channel: string, ...args: any[]) => Promise<any>;
getSearchSuggestions: (keyword: string) => Promise<any>;
}
// 自定义IPC渲染进程通信接口

View File

@@ -54,7 +54,9 @@ const api = {
return ipcRenderer.invoke(channel, ...args);
}
return Promise.reject(new Error(`未授权的 IPC 通道: ${channel}`));
}
},
// 搜索建议
getSearchSuggestions: (keyword: string) => ipcRenderer.invoke('get-search-suggestions', keyword),
};
// 创建带类型的ipcRenderer对象暴露给渲染进程

View File

@@ -1,5 +1,5 @@
import request from '@/utils/request';
import axios from 'axios';
import { isElectron } from '@/utils';
interface IParams {
keywords: string;
@@ -39,15 +39,16 @@ export const getSearchSuggestions = async (keyword: string) => {
console.log(`[API] getSearchSuggestions: 准备请求,关键词: "${keyword}"`);
try {
const response = await axios.get<KugouSuggestionResponse>('/kugou/new/app/i/search.php', {
params: {
cmd: 302,
keyword: keyword,
},
});
let responseData: KugouSuggestionResponse;
if (isElectron) {
console.log('[API] Running in Electron, using IPC proxy.');
responseData = await window.api.getSearchSuggestions(keyword);
} else {
return [];
}
if (response.data && Array.isArray(response.data.data)) {
const suggestions = response.data.data.map(item => item.keyword).slice(0, 8);
if (responseData && Array.isArray(responseData.data)) {
const suggestions = responseData.data.map(item => item.keyword).slice(0, 10);
console.log('[API] getSearchSuggestions: 成功解析建议:', suggestions);
return suggestions;
}