Add site-grouped device list in sidebar

Fetch device sites from /api/v1/deviceSites in parallel with devices,
then group cameras by site with collapsible headers. Search now also
matches site names. Falls back to flat list if sites API is unavailable.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-26 22:27:05 +00:00
parent 14ce5c728d
commit c3c3fc83e3
4 changed files with 253 additions and 30 deletions
+27
View File
@@ -218,6 +218,33 @@ ipcMain.handle('api-get-devices', async (event, { deploymentUrl, cookies }) => {
}
});
ipcMain.handle('api-get-device-sites', async (event, { deploymentUrl, cookies }) => {
try {
const sitesUrl = `${deploymentUrl}/api/v1/deviceSites`;
const axiosInstance = axios.create({
timeout: 10000,
headers: {
'Cookie': cookies ? cookies.join('; ') : ''
}
});
const response = await axiosInstance.get(sitesUrl);
return {
success: true,
sites: response.data
};
} catch (error) {
console.error('Get device sites error:', error);
return {
success: false,
sites: [],
message: error.response?.data?.message || error.message || 'Failed to get device sites'
};
}
});
ipcMain.handle('api-get-auth-info', async (event, { deploymentUrl, cookies }) => {
try {
const authUrl = `${deploymentUrl}/api/v1/auth`;