From 8eb34650ac81ec6156d7ea1dc82dd73437281235 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Jim=C3=A9nez=20Rivera?= Date: Fri, 9 Jan 2026 15:08:24 +0100 Subject: [PATCH 1/5] Use last id for recovery sync request --- .../renderer/hooks/antivirus/useAntivirus.tsx | 66 +++++++++---------- src/apps/shared/HttpClient/schema.ts | 10 +-- .../recovery-sync/common/recovery-sync.ts | 6 +- .../files/files-recovery-sync.ts | 6 +- 4 files changed, 49 insertions(+), 39 deletions(-) diff --git a/src/apps/renderer/hooks/antivirus/useAntivirus.tsx b/src/apps/renderer/hooks/antivirus/useAntivirus.tsx index a217c51254..45ec7e743d 100644 --- a/src/apps/renderer/hooks/antivirus/useAntivirus.tsx +++ b/src/apps/renderer/hooks/antivirus/useAntivirus.tsx @@ -16,8 +16,8 @@ export type UseAntivirusReturn = { showErrorState: boolean; onScanUserSystemButtonClicked: () => Promise; onScanAgainButtonClicked: () => void; - onCancelScan: () => void; - isUserElegible: () => void; + onCancelScan: () => Promise; + isUserElegible: () => Promise; onCustomScanButtonClicked: (scanType: ScanType) => Promise; onRemoveInfectedItems: (infectedFiles: string[]) => Promise; }; @@ -31,24 +31,24 @@ export const useAntivirus = (): UseAntivirusReturn => { const [isScanning, setIsScanning] = useState(false); const [isAntivirusAvailable, setIsAntivirusAvailable] = useState(false); const [showErrorState, setShowErrorState] = useState(false); - const [countFiles, setIsCountFiles] = useState(true); + const [countFiles, setCountFiles] = useState(true); const [view, setView] = useState('locked'); useEffect(() => { - window.electron.antivirus.onScanProgress(handleProgress); + globalThis.window.electron.antivirus.onScanProgress(handleProgress); return () => { - window.electron.antivirus.removeScanProgressListener(); + globalThis.window.electron.antivirus.removeScanProgressListener(); }; }, []); useEffect(() => { - isUserElegible(); + void isUserElegible(); }, []); - const isUserElegible = async () => { + async function isUserElegible() { try { setView('loading'); - const isAntivirusAvailable = await window.electron.antivirus.isAvailable(); + const isAntivirusAvailable = await globalThis.window.electron.antivirus.isAvailable(); if (!isAntivirusAvailable) { setView('locked'); @@ -61,18 +61,18 @@ export const useAntivirus = (): UseAntivirusReturn => { setIsAntivirusAvailable(false); setView('locked'); } - }; + } - const handleProgress = (progress: { + function handleProgress(progress: { scanId: string; currentScanPath: string; infectedFiles: string[]; progress: number; totalScannedFiles: number; done?: boolean; - }) => { + }) { if (!progress) return; - setIsCountFiles(false); + setCountFiles(false); setIsScanning(true); setCurrentScanPath(progress.currentScanPath); @@ -84,9 +84,9 @@ export const useAntivirus = (): UseAntivirusReturn => { setIsScanning(false); setIsScanCompleted(true); } - }; + } - const resetStates = () => { + function resetStates() { setCurrentScanPath(''); setCountScannedFiles(0); setProgressRatio(0); @@ -94,23 +94,23 @@ export const useAntivirus = (): UseAntivirusReturn => { setIsScanning(false); setIsScanCompleted(false); setShowErrorState(false); - setIsCountFiles(true); - }; + setCountFiles(true); + } - const onScanAgainButtonClicked = () => { + function onScanAgainButtonClicked() { setView('chooseItems'); resetStates(); - }; + } - const onSelectItemsButtonClicked = async (scanType: ScanType) => { + async function onSelectItemsButtonClicked(scanType: ScanType) { const getFiles = scanType === 'files'; - const items = await window.electron.antivirus.addItemsToScan(getFiles); + const items = await globalThis.window.electron.antivirus.addItemsToScan(getFiles); if (!items || items.length === 0) return; return items; - }; + } - const onCustomScanButtonClicked = async (scanType: ScanType) => { + async function onCustomScanButtonClicked(scanType: ScanType) { resetStates(); const items = await onSelectItemsButtonClicked(scanType); @@ -118,49 +118,49 @@ export const useAntivirus = (): UseAntivirusReturn => { setView('scan'); try { - await window.electron.antivirus.scanItems(items); + await globalThis.window.electron.antivirus.scanItems(items); setIsScanCompleted(true); } catch { setShowErrorState(true); } finally { setIsScanning(false); } - }; + } - const onScanUserSystemButtonClicked = async () => { + async function onScanUserSystemButtonClicked() { resetStates(); setView('scan'); try { - await window.electron.antivirus.scanItems(); + await globalThis.window.electron.antivirus.scanItems(); setIsScanCompleted(true); } catch { setShowErrorState(true); } finally { setIsScanning(false); } - }; + } - const onRemoveInfectedItems = async (infectedFiles: string[]) => { + async function onRemoveInfectedItems(infectedFiles: string[]) { setView('chooseItems'); resetStates(); try { - await window.electron.antivirus.removeInfectedFiles(infectedFiles); + await globalThis.window.electron.antivirus.removeInfectedFiles(infectedFiles); } catch (error) { console.log('ERROR WHILE REMOVING INFECTED ITEMS:', error); } - }; + } - const onCancelScan = async () => { + async function onCancelScan() { try { resetStates(); - await window.electron.antivirus.cancelScan(); + await globalThis.window.electron.antivirus.cancelScan(); setView('chooseItems'); } catch (error) { console.log('ERROR CANCELING SCAN: ', error); } - }; + } return { infectedFiles, diff --git a/src/apps/shared/HttpClient/schema.ts b/src/apps/shared/HttpClient/schema.ts index fad1e5725f..6c421e26e2 100644 --- a/src/apps/shared/HttpClient/schema.ts +++ b/src/apps/shared/HttpClient/schema.ts @@ -3062,7 +3062,7 @@ export interface components { */ bucket: string; /** - * @description The ID of the file (required when size > 0) + * @description The ID of the file (required when size > 0, must not be provided when size = 0) * @example file12345 */ fileId?: string; @@ -3168,7 +3168,7 @@ export interface components { }; ReplaceFileDto: { /** - * @description File id (required when size > 0) + * @description File id (required when size > 0, must not be provided when size = 0) * @example 651300a2da9b27001f63f384 */ fileId?: string; @@ -3904,7 +3904,7 @@ export interface components { */ bucket: string; /** - * @description The ID of the file (required when size > 0) + * @description The ID of the file (required when size > 0, must not be provided when size = 0) * @example file12345 */ fileId?: string; @@ -5121,6 +5121,8 @@ export interface operations { order?: 'ASC' | 'DESC'; /** @description Filter files updated after this date */ updatedAt?: string; + /** @description The last file uuid of the provided list in the previous call */ + lastId?: string; }; header?: never; path?: never; @@ -8697,7 +8699,7 @@ export interface operations { }; }; responses: { - /** @description Incomplete checkout email sent successfully */ + /** @description Incomplete checkout processed successfully */ 200: { headers: { [name: string]: unknown; diff --git a/src/backend/features/sync/recovery-sync/common/recovery-sync.ts b/src/backend/features/sync/recovery-sync/common/recovery-sync.ts index b5202f922e..ea66b9e93a 100644 --- a/src/backend/features/sync/recovery-sync/common/recovery-sync.ts +++ b/src/backend/features/sync/recovery-sync/common/recovery-sync.ts @@ -3,10 +3,13 @@ import { sleep } from '@/apps/main/util'; import { FETCH_LIMIT_1000 } from '@/apps/main/remote-sync/store'; import { filesRecoverySync } from '../files/files-recovery-sync'; import { foldersRecoverySync } from '../folders/folders-recovery-sync'; +import { FileUuid } from '@/apps/main/database/entities/DriveFile'; +import { FolderUuid } from '@/apps/main/database/entities/DriveFolder'; async function iterateRecoverySync(ctx: SyncContext, fn: typeof filesRecoverySync | typeof foldersRecoverySync) { let moreItems = true; let offset = 0; + let lastId: FileUuid | FolderUuid | undefined; while (moreItems) { if (ctx.abortController.signal.aborted) { @@ -15,10 +18,11 @@ async function iterateRecoverySync(ctx: SyncContext, fn: typeof filesRecoverySyn } try { - const fileDtos = await fn({ ctx, offset }); + const fileDtos = await fn({ ctx, offset, lastId }); moreItems = fileDtos.length === FETCH_LIMIT_1000; offset += FETCH_LIMIT_1000; + lastId = fileDtos.at(-1)?.uuid; await sleep(30 * 1000); } catch (error) { diff --git a/src/backend/features/sync/recovery-sync/files/files-recovery-sync.ts b/src/backend/features/sync/recovery-sync/files/files-recovery-sync.ts index e2aeb96fc2..d95db7a42f 100644 --- a/src/backend/features/sync/recovery-sync/files/files-recovery-sync.ts +++ b/src/backend/features/sync/recovery-sync/files/files-recovery-sync.ts @@ -7,19 +7,23 @@ import { SqliteModule } from '@/infra/sqlite/sqlite.module'; import { getItemsToSync } from '../common/get-items-to-sync'; import { getDeletedItems } from '../common/get-deleted-items'; import { GetFilesQuery } from '@/infra/drive-server-wip/services/files.service'; +import { FileUuid } from '@/apps/main/database/entities/DriveFile'; +import { FolderUuid } from '@/apps/main/database/entities/DriveFolder'; type Props = { ctx: SyncContext; offset: number; + lastId: FileUuid | FolderUuid | undefined; }; -export async function filesRecoverySync({ ctx, offset }: Props) { +export async function filesRecoverySync({ ctx, offset, lastId }: Props) { const query: GetFilesQuery = { limit: FETCH_LIMIT_1000, offset, status: 'EXISTS', sort: 'uuid', order: 'ASC', + lastId, }; const { data: remotes } = ctx.workspaceId From 9d02f395945c7c995f2874bc65bc826762a2221d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 22 Jan 2026 00:03:05 +0000 Subject: [PATCH 2/5] Bump lodash from 4.17.21 to 4.17.23 Bumps [lodash](https://github.com/lodash/lodash) from 4.17.21 to 4.17.23. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.17.21...4.17.23) --- updated-dependencies: - dependency-name: lodash dependency-version: 4.17.23 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 59 +++++++++++++++++------------------------------ 1 file changed, 21 insertions(+), 38 deletions(-) diff --git a/package-lock.json b/package-lock.json index ec7b53a9d2..1a25818b22 100644 --- a/package-lock.json +++ b/package-lock.json @@ -185,7 +185,6 @@ "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", @@ -2464,6 +2463,7 @@ "dev": true, "license": "BSD-2-Clause", "optional": true, + "peer": true, "dependencies": { "cross-dirname": "^0.1.0", "debug": "^4.3.4", @@ -2485,6 +2485,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -2501,6 +2502,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "universalify": "^2.0.0" }, @@ -2515,6 +2517,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">= 10.0.0" } @@ -5482,7 +5485,6 @@ "integrity": "sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/core": "^7.19.6", "@svgr/babel-preset": "^6.5.1", @@ -5809,7 +5811,6 @@ "integrity": "sha512-fYDQA9e6yTNmA13TLVSA+WMQRc5Bn/c0EUBditUHNfMMxN7M82c38b1kEggVE3pLpZ0FwkwJkUEKMiOi52JXFA==", "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "@babel/generator": "^7.26.5", "@babel/parser": "^7.26.7", @@ -5984,7 +5985,6 @@ "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -6203,7 +6203,6 @@ "integrity": "sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "undici-types": "~6.21.0" } @@ -6271,7 +6270,6 @@ "integrity": "sha512-P9beVR/x06U9rCJzSxtENnOr4BrbJ6VrsrDTc+73TtHv9XHhryXKbjGRB+6oooB2r0G/pQkD/S4dHo/7jUfwFw==", "devOptional": true, "license": "MIT", - "peer": true, "dependencies": { "@types/prop-types": "*", "@types/scheduler": "^0.16", @@ -6284,7 +6282,6 @@ "integrity": "sha512-Z+2VcYXJwOqQ79HreLU/1fyQ88eXSSFh6I3JdrEHQIfYSI0kCQpTGvOrbE6jFGGYXKsHuwY9tBa/w5Uo6KzrEg==", "devOptional": true, "license": "MIT", - "peer": true, "peerDependencies": { "@types/react": "^17.0.0" } @@ -6525,7 +6522,6 @@ "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "5.62.0", "@typescript-eslint/types": "5.62.0", @@ -7174,7 +7170,6 @@ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -7261,7 +7256,6 @@ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -8111,7 +8105,6 @@ "integrity": "sha512-EwhOpyXiOEL/lKzHz9AW1msWFNzGc/z+LzeB3/jnFJpxu+th2yqvzsSWas1v9jgs9+xiXJcD5A8CJxAG2TaghQ==", "hasInstallScript": true, "license": "MIT", - "peer": true, "dependencies": { "bindings": "^1.5.0", "prebuild-install": "^7.1.1" @@ -8320,7 +8313,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "baseline-browser-mapping": "^2.8.25", "caniuse-lite": "^1.0.30001754", @@ -9611,7 +9603,8 @@ "integrity": "sha512-+R08/oI0nl3vfPcqftZRpytksBXDzOUveBq/NBVx0sUp1axwzPQrKinNx5yd5sxPu8j1wIy8AfnVQ+5eFdha6Q==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/cross-env": { "version": "7.0.3", @@ -10418,7 +10411,6 @@ "integrity": "sha512-59CAAjAhTaIMCN8y9kD573vDkxbs1uhDcrFLHSgutYdPcGOU35Rf95725snvzEOy4BFB7+eLJ8djCNPmGwG67w==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "app-builder-lib": "26.0.12", "builder-util": "26.0.11", @@ -11228,6 +11220,7 @@ "dev": true, "hasInstallScript": true, "license": "MIT", + "peer": true, "dependencies": { "@electron/asar": "^3.2.1", "debug": "^4.1.1", @@ -11248,6 +11241,7 @@ "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", @@ -11742,7 +11736,6 @@ "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -11799,7 +11792,6 @@ "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", "dev": true, "license": "MIT", - "peer": true, "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -12012,7 +12004,6 @@ "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.9", @@ -16085,9 +16076,9 @@ } }, "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", "license": "MIT" }, "node_modules/lodash.debounce": { @@ -18582,7 +18573,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -19305,6 +19295,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "commander": "^9.4.0" }, @@ -19322,6 +19313,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": "^12.20.0 || >=14" } @@ -19368,7 +19360,6 @@ "integrity": "sha512-pBiBj/gjRY9Qpk1b7cDda6Rbwvkaggos779AHQ0Ek/odwDx6xG6DRBxtnp1QmxbuD7pAO8/SQ8vuhtGv9LoLWA==", "dev": true, "license": "MIT", - "peer": true, "bin": { "prettier": "bin/prettier.cjs" }, @@ -19795,7 +19786,6 @@ "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", "license": "MIT", - "peer": true, "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" @@ -19818,7 +19808,6 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", "license": "MIT", - "peer": true, "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -19882,7 +19871,6 @@ "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -20250,8 +20238,7 @@ "version": "0.1.14", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.14.tgz", "integrity": "sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==", - "license": "Apache-2.0", - "peer": true + "license": "Apache-2.0" }, "node_modules/reflect.getprototypeof": { "version": "1.0.10", @@ -20943,7 +20930,6 @@ "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -21871,8 +21857,7 @@ "resolved": "https://registry.npmjs.org/sql.js/-/sql.js-1.13.0.tgz", "integrity": "sha512-RJbVP1HRDlUUXahJ7VMTcu9Rm1Nzw+EBpoPr94vnbD4LwR715F3CcxE2G2k45PewcaZ57pjetYa+LoSJLAASgA==", "devOptional": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/ssri": { "version": "9.0.1", @@ -22649,6 +22634,7 @@ "integrity": "sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "mkdirp": "^0.5.1", "rimraf": "~2.6.2" @@ -22713,6 +22699,7 @@ "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -22734,6 +22721,7 @@ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -22747,6 +22735,7 @@ "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "minimist": "^1.2.6" }, @@ -22761,6 +22750,7 @@ "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "glob": "^7.1.3" }, @@ -23425,8 +23415,7 @@ "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD", - "peer": true + "license": "0BSD" }, "node_modules/tsutils": { "version": "3.21.0", @@ -23457,7 +23446,6 @@ "integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "esbuild": "~0.27.0", "get-tsconfig": "^4.7.5" @@ -24290,7 +24278,6 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -24645,7 +24632,6 @@ "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", @@ -24764,7 +24750,6 @@ "integrity": "sha512-dfqAsNqRGUc8hB9OVR2P0w8PZPEckti2+5rdZip0WIz9WW0MnImJ8XiR61QhqLa92EQzKP2uPkzenKOAHyEIbA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@vitest/expect": "3.0.8", "@vitest/mocker": "3.0.8", @@ -24916,7 +24901,6 @@ "integrity": "sha512-HU1JOuV1OavsZ+mfigY0j8d1TgQgbZ6M+J75zDkpEAwYeXjWSqrGJtgnPblJjd/mAyTNQ7ygw0MiKOn6etz8yw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.8", @@ -25184,7 +25168,6 @@ "integrity": "sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/bonjour": "^3.5.13", "@types/connect-history-api-fallback": "^1.5.4", From f97aeee51467da5193b1d922b9a0a4448e878816 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Jim=C3=A9nez=20Rivera?= Date: Thu, 22 Jan 2026 10:26:27 +0100 Subject: [PATCH 3/5] Update package-lock.json --- package-lock.json | 53 +++++++++++++++++++++++++++++++---------------- 1 file changed, 35 insertions(+), 18 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1a25818b22..e7fcb3e15f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -185,6 +185,7 @@ "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", @@ -2463,7 +2464,6 @@ "dev": true, "license": "BSD-2-Clause", "optional": true, - "peer": true, "dependencies": { "cross-dirname": "^0.1.0", "debug": "^4.3.4", @@ -2485,7 +2485,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -2502,7 +2501,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "universalify": "^2.0.0" }, @@ -2517,7 +2515,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">= 10.0.0" } @@ -5485,6 +5482,7 @@ "integrity": "sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/core": "^7.19.6", "@svgr/babel-preset": "^6.5.1", @@ -5811,6 +5809,7 @@ "integrity": "sha512-fYDQA9e6yTNmA13TLVSA+WMQRc5Bn/c0EUBditUHNfMMxN7M82c38b1kEggVE3pLpZ0FwkwJkUEKMiOi52JXFA==", "dev": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "@babel/generator": "^7.26.5", "@babel/parser": "^7.26.7", @@ -5985,6 +5984,7 @@ "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -6203,6 +6203,7 @@ "integrity": "sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "undici-types": "~6.21.0" } @@ -6270,6 +6271,7 @@ "integrity": "sha512-P9beVR/x06U9rCJzSxtENnOr4BrbJ6VrsrDTc+73TtHv9XHhryXKbjGRB+6oooB2r0G/pQkD/S4dHo/7jUfwFw==", "devOptional": true, "license": "MIT", + "peer": true, "dependencies": { "@types/prop-types": "*", "@types/scheduler": "^0.16", @@ -6282,6 +6284,7 @@ "integrity": "sha512-Z+2VcYXJwOqQ79HreLU/1fyQ88eXSSFh6I3JdrEHQIfYSI0kCQpTGvOrbE6jFGGYXKsHuwY9tBa/w5Uo6KzrEg==", "devOptional": true, "license": "MIT", + "peer": true, "peerDependencies": { "@types/react": "^17.0.0" } @@ -6522,6 +6525,7 @@ "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", "dev": true, "license": "BSD-2-Clause", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "5.62.0", "@typescript-eslint/types": "5.62.0", @@ -7170,6 +7174,7 @@ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -7256,6 +7261,7 @@ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -8105,6 +8111,7 @@ "integrity": "sha512-EwhOpyXiOEL/lKzHz9AW1msWFNzGc/z+LzeB3/jnFJpxu+th2yqvzsSWas1v9jgs9+xiXJcD5A8CJxAG2TaghQ==", "hasInstallScript": true, "license": "MIT", + "peer": true, "dependencies": { "bindings": "^1.5.0", "prebuild-install": "^7.1.1" @@ -8313,6 +8320,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "baseline-browser-mapping": "^2.8.25", "caniuse-lite": "^1.0.30001754", @@ -9603,8 +9611,7 @@ "integrity": "sha512-+R08/oI0nl3vfPcqftZRpytksBXDzOUveBq/NBVx0sUp1axwzPQrKinNx5yd5sxPu8j1wIy8AfnVQ+5eFdha6Q==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/cross-env": { "version": "7.0.3", @@ -10411,6 +10418,7 @@ "integrity": "sha512-59CAAjAhTaIMCN8y9kD573vDkxbs1uhDcrFLHSgutYdPcGOU35Rf95725snvzEOy4BFB7+eLJ8djCNPmGwG67w==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "app-builder-lib": "26.0.12", "builder-util": "26.0.11", @@ -11220,7 +11228,6 @@ "dev": true, "hasInstallScript": true, "license": "MIT", - "peer": true, "dependencies": { "@electron/asar": "^3.2.1", "debug": "^4.1.1", @@ -11241,7 +11248,6 @@ "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", @@ -11736,6 +11742,7 @@ "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -11792,6 +11799,7 @@ "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", "dev": true, "license": "MIT", + "peer": true, "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -12004,6 +12012,7 @@ "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.9", @@ -18573,6 +18582,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -19295,7 +19305,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "commander": "^9.4.0" }, @@ -19313,7 +19322,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": "^12.20.0 || >=14" } @@ -19360,6 +19368,7 @@ "integrity": "sha512-pBiBj/gjRY9Qpk1b7cDda6Rbwvkaggos779AHQ0Ek/odwDx6xG6DRBxtnp1QmxbuD7pAO8/SQ8vuhtGv9LoLWA==", "dev": true, "license": "MIT", + "peer": true, "bin": { "prettier": "bin/prettier.cjs" }, @@ -19786,6 +19795,7 @@ "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", "license": "MIT", + "peer": true, "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" @@ -19808,6 +19818,7 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", "license": "MIT", + "peer": true, "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -19871,6 +19882,7 @@ "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -20238,7 +20250,8 @@ "version": "0.1.14", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.14.tgz", "integrity": "sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==", - "license": "Apache-2.0" + "license": "Apache-2.0", + "peer": true }, "node_modules/reflect.getprototypeof": { "version": "1.0.10", @@ -20930,6 +20943,7 @@ "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -21857,7 +21871,8 @@ "resolved": "https://registry.npmjs.org/sql.js/-/sql.js-1.13.0.tgz", "integrity": "sha512-RJbVP1HRDlUUXahJ7VMTcu9Rm1Nzw+EBpoPr94vnbD4LwR715F3CcxE2G2k45PewcaZ57pjetYa+LoSJLAASgA==", "devOptional": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/ssri": { "version": "9.0.1", @@ -22634,7 +22649,6 @@ "integrity": "sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "mkdirp": "^0.5.1", "rimraf": "~2.6.2" @@ -22699,7 +22713,6 @@ "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -22721,7 +22734,6 @@ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -22735,7 +22747,6 @@ "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "minimist": "^1.2.6" }, @@ -22750,7 +22761,6 @@ "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "glob": "^7.1.3" }, @@ -23415,7 +23425,8 @@ "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" + "license": "0BSD", + "peer": true }, "node_modules/tsutils": { "version": "3.21.0", @@ -23446,6 +23457,7 @@ "integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "esbuild": "~0.27.0", "get-tsconfig": "^4.7.5" @@ -24278,6 +24290,7 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -24632,6 +24645,7 @@ "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", @@ -24750,6 +24764,7 @@ "integrity": "sha512-dfqAsNqRGUc8hB9OVR2P0w8PZPEckti2+5rdZip0WIz9WW0MnImJ8XiR61QhqLa92EQzKP2uPkzenKOAHyEIbA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@vitest/expect": "3.0.8", "@vitest/mocker": "3.0.8", @@ -24901,6 +24916,7 @@ "integrity": "sha512-HU1JOuV1OavsZ+mfigY0j8d1TgQgbZ6M+J75zDkpEAwYeXjWSqrGJtgnPblJjd/mAyTNQ7ygw0MiKOn6etz8yw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.8", @@ -25168,6 +25184,7 @@ "integrity": "sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/bonjour": "^3.5.13", "@types/connect-history-api-fallback": "^1.5.4", From 56672d67baa0d206edbc98123cc4988916b9c5df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Jim=C3=A9nez=20Rivera?= Date: Thu, 22 Jan 2026 10:31:26 +0100 Subject: [PATCH 4/5] Update useAntivirus.tsx --- .../renderer/hooks/antivirus/useAntivirus.tsx | 62 +++++++++---------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/src/apps/renderer/hooks/antivirus/useAntivirus.tsx b/src/apps/renderer/hooks/antivirus/useAntivirus.tsx index a217c51254..a8f00abb0d 100644 --- a/src/apps/renderer/hooks/antivirus/useAntivirus.tsx +++ b/src/apps/renderer/hooks/antivirus/useAntivirus.tsx @@ -16,8 +16,8 @@ export type UseAntivirusReturn = { showErrorState: boolean; onScanUserSystemButtonClicked: () => Promise; onScanAgainButtonClicked: () => void; - onCancelScan: () => void; - isUserElegible: () => void; + onCancelScan: () => Promise; + isUserElegible: () => Promise; onCustomScanButtonClicked: (scanType: ScanType) => Promise; onRemoveInfectedItems: (infectedFiles: string[]) => Promise; }; @@ -31,13 +31,13 @@ export const useAntivirus = (): UseAntivirusReturn => { const [isScanning, setIsScanning] = useState(false); const [isAntivirusAvailable, setIsAntivirusAvailable] = useState(false); const [showErrorState, setShowErrorState] = useState(false); - const [countFiles, setIsCountFiles] = useState(true); + const [countFiles, setCountFiles] = useState(true); const [view, setView] = useState('locked'); useEffect(() => { - window.electron.antivirus.onScanProgress(handleProgress); + globalThis.window.electron.antivirus.onScanProgress(handleProgress); return () => { - window.electron.antivirus.removeScanProgressListener(); + globalThis.window.electron.antivirus.removeScanProgressListener(); }; }, []); @@ -45,7 +45,7 @@ export const useAntivirus = (): UseAntivirusReturn => { isUserElegible(); }, []); - const isUserElegible = async () => { + async function isUserElegible() { try { setView('loading'); const isAntivirusAvailable = await window.electron.antivirus.isAvailable(); @@ -61,18 +61,18 @@ export const useAntivirus = (): UseAntivirusReturn => { setIsAntivirusAvailable(false); setView('locked'); } - }; + } - const handleProgress = (progress: { + function handleProgress(progress: { scanId: string; currentScanPath: string; infectedFiles: string[]; progress: number; totalScannedFiles: number; done?: boolean; - }) => { + }) { if (!progress) return; - setIsCountFiles(false); + setCountFiles(false); setIsScanning(true); setCurrentScanPath(progress.currentScanPath); @@ -84,9 +84,9 @@ export const useAntivirus = (): UseAntivirusReturn => { setIsScanning(false); setIsScanCompleted(true); } - }; + } - const resetStates = () => { + function resetStates() { setCurrentScanPath(''); setCountScannedFiles(0); setProgressRatio(0); @@ -94,23 +94,23 @@ export const useAntivirus = (): UseAntivirusReturn => { setIsScanning(false); setIsScanCompleted(false); setShowErrorState(false); - setIsCountFiles(true); - }; + setCountFiles(true); + } - const onScanAgainButtonClicked = () => { + function onScanAgainButtonClicked() { setView('chooseItems'); resetStates(); - }; + } - const onSelectItemsButtonClicked = async (scanType: ScanType) => { + async function onSelectItemsButtonClicked(scanType: ScanType) { const getFiles = scanType === 'files'; - const items = await window.electron.antivirus.addItemsToScan(getFiles); + const items = await globalThis.window.electron.antivirus.addItemsToScan(getFiles); if (!items || items.length === 0) return; return items; - }; + } - const onCustomScanButtonClicked = async (scanType: ScanType) => { + async function onCustomScanButtonClicked(scanType: ScanType) { resetStates(); const items = await onSelectItemsButtonClicked(scanType); @@ -118,49 +118,49 @@ export const useAntivirus = (): UseAntivirusReturn => { setView('scan'); try { - await window.electron.antivirus.scanItems(items); + await globalThis.window.electron.antivirus.scanItems(items); setIsScanCompleted(true); } catch { setShowErrorState(true); } finally { setIsScanning(false); } - }; + } - const onScanUserSystemButtonClicked = async () => { + async function onScanUserSystemButtonClicked() { resetStates(); setView('scan'); try { - await window.electron.antivirus.scanItems(); + await globalThis.window.electron.antivirus.scanItems(); setIsScanCompleted(true); } catch { setShowErrorState(true); } finally { setIsScanning(false); } - }; + } - const onRemoveInfectedItems = async (infectedFiles: string[]) => { + async function onRemoveInfectedItems(infectedFiles: string[]) { setView('chooseItems'); resetStates(); try { - await window.electron.antivirus.removeInfectedFiles(infectedFiles); + await globalThis.window.electron.antivirus.removeInfectedFiles(infectedFiles); } catch (error) { console.log('ERROR WHILE REMOVING INFECTED ITEMS:', error); } - }; + } - const onCancelScan = async () => { + async function onCancelScan() { try { resetStates(); - await window.electron.antivirus.cancelScan(); + await globalThis.window.electron.antivirus.cancelScan(); setView('chooseItems'); } catch (error) { console.log('ERROR CANCELING SCAN: ', error); } - }; + } return { infectedFiles, From 7a8f329db327148779c1323e262bb9cf87689339 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Jim=C3=A9nez=20Rivera?= Date: Thu, 22 Jan 2026 10:33:42 +0100 Subject: [PATCH 5/5] Update useAntivirus.tsx --- src/apps/renderer/hooks/antivirus/useAntivirus.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/apps/renderer/hooks/antivirus/useAntivirus.tsx b/src/apps/renderer/hooks/antivirus/useAntivirus.tsx index a8f00abb0d..45ec7e743d 100644 --- a/src/apps/renderer/hooks/antivirus/useAntivirus.tsx +++ b/src/apps/renderer/hooks/antivirus/useAntivirus.tsx @@ -42,13 +42,13 @@ export const useAntivirus = (): UseAntivirusReturn => { }, []); useEffect(() => { - isUserElegible(); + void isUserElegible(); }, []); async function isUserElegible() { try { setView('loading'); - const isAntivirusAvailable = await window.electron.antivirus.isAvailable(); + const isAntivirusAvailable = await globalThis.window.electron.antivirus.isAvailable(); if (!isAntivirusAvailable) { setView('locked');