fix: resolve all 69 ESLint warnings across 40 files

- Remove unused imports (Mail, CalendarIcon, Plus, Circle, cn, Link,
  MessageCircle, User, Tag, FolderUp, useEffect, LogOut, GripVertical,
  Check, X, HoverActionsMode, HoverActionsCorner, asn1js, Convert, etc.)
- Prefix unused variables/params with underscore to satisfy no-unused-vars
- Add missing React hook dependencies (exhaustive-deps)
- Wrap handleNavigateUp in useCallback and selectedGroupMembers in useMemo
- Remove unused eslint-disable directives in jmap/client.ts
- Replace as any with typed casts in filter-store and smime-store tests
- Remove dead code (macOk assignment, unused now variable)
This commit is contained in:
Linus Rath
2026-03-26 18:35:56 +01:00
parent 733e99f094
commit 7a191cf78b
40 changed files with 62 additions and 68 deletions
-2
View File
@@ -2,8 +2,6 @@ import type { Email } from '@/lib/jmap/types';
import { demoDate } from '../demo-utils';
export function createDemoEmails(): Email[] {
const now = new Date();
return [
// ── Inbox ───────────────────────────────────────────────────
{
+1 -3
View File
@@ -568,7 +568,6 @@ export class JMAPClient implements IJMAPClient {
let position = 0;
const batchSize = 100;
// eslint-disable-next-line no-constant-condition
while (true) {
const { emails, hasMore } = await this.getEmails(mailboxId, undefined, batchSize, position);
allEmails.push(...emails);
@@ -788,7 +787,6 @@ export class JMAPClient implements IJMAPClient {
let position = 0;
const batchSize = 100;
// eslint-disable-next-line no-constant-condition
while (true) {
const response = await this.request([
["Email/query", {
@@ -3836,7 +3834,7 @@ export class JMAPClient implements IJMAPClient {
blob: Blob,
identityId: string,
sentMailboxId: string,
draftMailboxId?: string,
_draftMailboxId?: string,
): Promise<void> {
// Upload the raw message
const file = new File([blob], 'message.eml', { type: 'message/rfc822' });
@@ -1,4 +1,4 @@
import { describe, it, expect, vi, beforeAll } from 'vitest';
import { describe, it, expect, beforeAll } from 'vitest';
import {
pemToDer,
derToPem,
+1 -1
View File
@@ -1,4 +1,4 @@
import { describe, it, expect, beforeEach, vi } from 'vitest';
import { describe, it, expect } from 'vitest';
import 'fake-indexeddb/auto';
// Each test file gets a fresh global indexedDB via fake-indexeddb/auto.
+2 -2
View File
@@ -21,7 +21,7 @@ vi.mock('@/lib/smime/certificate-utils', () => ({
}));
import { useSmimeStore } from '@/stores/smime-store';
import { listKeyRecords, listPublicCerts, saveKeyRecord, deleteKeyRecord, savePublicCert, deletePublicCert } from '@/lib/smime/key-storage';
import { listKeyRecords, listPublicCerts, saveKeyRecord, deleteKeyRecord, deletePublicCert } from '@/lib/smime/key-storage';
import { importPkcs12, unlockPrivateKey } from '@/lib/smime/pkcs12-import';
import type { SmimeKeyRecord, SmimePublicCert } from '@/lib/smime/types';
@@ -128,7 +128,7 @@ describe('smime-store', () => {
it('imports and adds key record', async () => {
vi.mocked(importPkcs12).mockResolvedValue({
keyRecord: mockKeyRecord,
certInfo: {} as any,
certInfo: {} as unknown as import('@/lib/smime/types').CertificateInfo,
});
const result = await useSmimeStore.getState().importPKCS12(
-2
View File
@@ -1,7 +1,6 @@
import * as asn1js from 'asn1js';
import * as pkijs from 'pkijs';
import {
parseCertificateDer,
extractCertificateInfo,
classifyCapabilities,
} from './certificate-utils';
@@ -36,7 +35,6 @@ export async function importPkcs12(
// Verify MAC if present
if (pfx.macData) {
const macOk = await pfx.parsedValue?.integrityMode === undefined || true;
// PKIjs handles MAC verification internally during parseInternalValues
}
-1
View File
@@ -1,4 +1,3 @@
import * as asn1js from 'asn1js';
import * as pkijs from 'pkijs';
import { parseCertificateDer } from './certificate-utils';
+4 -5
View File
@@ -1,6 +1,5 @@
import * as asn1js from 'asn1js';
import * as pkijs from 'pkijs';
import { Convert } from 'pvtsutils';
import { parseCertificateDer } from './certificate-utils';
/**
@@ -44,13 +43,13 @@ export async function smimeSign(
const algorithm = privateKey.algorithm;
const hashAlgorithm = 'SHA-256';
let signAlg: string;
let _signAlg: string;
if (algorithm.name === 'RSASSA-PKCS1-v1_5' || algorithm.name === 'RSA-PSS') {
signAlg = algorithm.name;
_signAlg = algorithm.name;
} else if (algorithm.name === 'ECDSA') {
signAlg = 'ECDSA';
_signAlg = 'ECDSA';
} else {
signAlg = 'RSASSA-PKCS1-v1_5';
_signAlg = 'RSASSA-PKCS1-v1_5';
}
// Sign
+1 -1
View File
@@ -1,4 +1,4 @@
import type { ContactCard, NameComponent, ContactMedia, ContactOnlineService, AnniversaryDate, PartialDate } from "@/lib/jmap/types";
import type { ContactCard, NameComponent, ContactOnlineService, AnniversaryDate, PartialDate } from "@/lib/jmap/types";
// Convert RFC 9553 AnniversaryDate (PartialDate|Timestamp|string) to vCard date string
function anniversaryDateToVcardString(date: AnniversaryDate): string {