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:
@@ -1,6 +1,7 @@
|
||||
import { describe, it, expect, beforeEach } from 'vitest';
|
||||
import { useFilterStore } from '../filter-store';
|
||||
import type { FilterRule } from '@/lib/jmap/sieve-types';
|
||||
import type { IJMAPClient } from '@/lib/jmap/client-interface';
|
||||
|
||||
const makeRule = (overrides: Partial<FilterRule> = {}): FilterRule => ({
|
||||
id: 'rule-1',
|
||||
@@ -156,7 +157,7 @@ describe('filter-store', () => {
|
||||
getSieveScripts: async () => [{ id: 's1', name: 'main', blobId: 'b1', isActive: true }],
|
||||
getSieveScriptContent: async () => 'require ["fileinto"];\nif header :contains "From" "x" { fileinto "Y"; }',
|
||||
};
|
||||
await useFilterStore.getState().fetchFilters(mockClient as any);
|
||||
await useFilterStore.getState().fetchFilters(mockClient as unknown as IJMAPClient);
|
||||
expect(useFilterStore.getState().isOpaque).toBe(true);
|
||||
expect(useFilterStore.getState().rules).toEqual([]);
|
||||
});
|
||||
@@ -170,7 +171,7 @@ describe('filter-store', () => {
|
||||
getSieveScripts: async () => [{ id: 's1', name: 'main', blobId: 'b1', isActive: true }],
|
||||
getSieveScriptContent: async () => script,
|
||||
};
|
||||
await useFilterStore.getState().fetchFilters(mockClient as any);
|
||||
await useFilterStore.getState().fetchFilters(mockClient as unknown as IJMAPClient);
|
||||
expect(useFilterStore.getState().isOpaque).toBe(false);
|
||||
expect(useFilterStore.getState().rules).toEqual(rules);
|
||||
});
|
||||
@@ -181,7 +182,7 @@ describe('filter-store', () => {
|
||||
getSieveScripts: async () => [],
|
||||
getSieveScriptContent: async () => '',
|
||||
};
|
||||
await useFilterStore.getState().fetchFilters(mockClient as any);
|
||||
await useFilterStore.getState().fetchFilters(mockClient as unknown as IJMAPClient);
|
||||
expect(useFilterStore.getState().rules).toEqual([]);
|
||||
expect(useFilterStore.getState().activeScriptId).toBeNull();
|
||||
});
|
||||
@@ -191,7 +192,7 @@ describe('filter-store', () => {
|
||||
getSieveCapabilities: () => null,
|
||||
getSieveScripts: async () => { throw new Error('Network error'); },
|
||||
};
|
||||
await useFilterStore.getState().fetchFilters(mockClient as any);
|
||||
await useFilterStore.getState().fetchFilters(mockClient as unknown as IJMAPClient);
|
||||
expect(useFilterStore.getState().error).toBe('Network error');
|
||||
expect(useFilterStore.getState().isLoading).toBe(false);
|
||||
});
|
||||
@@ -209,7 +210,7 @@ describe('filter-store', () => {
|
||||
rules: [makeRule()],
|
||||
isOpaque: false,
|
||||
});
|
||||
await useFilterStore.getState().saveFilters(mockClient as any);
|
||||
await useFilterStore.getState().saveFilters(mockClient as unknown as IJMAPClient);
|
||||
expect(calls).toHaveLength(1);
|
||||
expect(calls[0].method).toBe('updateSieveScript');
|
||||
expect(calls[0].args[0]).toBe('existing-id');
|
||||
@@ -230,7 +231,7 @@ describe('filter-store', () => {
|
||||
rules: [makeRule()],
|
||||
isOpaque: false,
|
||||
});
|
||||
await useFilterStore.getState().saveFilters(mockClient as any);
|
||||
await useFilterStore.getState().saveFilters(mockClient as unknown as IJMAPClient);
|
||||
expect(calls).toHaveLength(1);
|
||||
expect(calls[0].method).toBe('createSieveScript');
|
||||
expect(calls[0].args[2]).toBe(true); // activate flag
|
||||
@@ -248,7 +249,7 @@ describe('filter-store', () => {
|
||||
isOpaque: true,
|
||||
rawScript: 'require ["fileinto"];\nif header :contains "From" "x" { fileinto "Y"; }',
|
||||
});
|
||||
await useFilterStore.getState().saveFilters(mockClient as any);
|
||||
await useFilterStore.getState().saveFilters(mockClient as unknown as IJMAPClient);
|
||||
expect(savedContent).toContain('require ["fileinto"]');
|
||||
});
|
||||
|
||||
@@ -257,7 +258,7 @@ describe('filter-store', () => {
|
||||
updateSieveScript: async () => { throw new Error('Server error'); },
|
||||
};
|
||||
useFilterStore.setState({ activeScriptId: 'existing-id', rules: [makeRule()] });
|
||||
await expect(useFilterStore.getState().saveFilters(mockClient as any)).rejects.toThrow('Server error');
|
||||
await expect(useFilterStore.getState().saveFilters(mockClient as unknown as IJMAPClient)).rejects.toThrow('Server error');
|
||||
expect(useFilterStore.getState().error).toBe('Server error');
|
||||
expect(useFilterStore.getState().isSaving).toBe(false);
|
||||
});
|
||||
@@ -269,7 +270,7 @@ describe('filter-store', () => {
|
||||
};
|
||||
const rules = [makeRule({ name: 'My Filter' })];
|
||||
useFilterStore.setState({ activeScriptId: 'existing-id', rules, isOpaque: false });
|
||||
await useFilterStore.getState().saveFilters(mockClient as any);
|
||||
await useFilterStore.getState().saveFilters(mockClient as unknown as IJMAPClient);
|
||||
expect(savedContent).toContain('@metadata:begin');
|
||||
expect(savedContent).toContain('My Filter');
|
||||
expect(savedContent).toContain('fileinto "Archive"');
|
||||
@@ -280,7 +281,7 @@ describe('filter-store', () => {
|
||||
updateSieveScript: async () => {},
|
||||
};
|
||||
useFilterStore.setState({ activeScriptId: 'existing-id', rules: [makeRule()], isOpaque: false, rawScript: '' });
|
||||
await useFilterStore.getState().saveFilters(mockClient as any);
|
||||
await useFilterStore.getState().saveFilters(mockClient as unknown as IJMAPClient);
|
||||
expect(useFilterStore.getState().rawScript).toContain('@metadata:begin');
|
||||
});
|
||||
});
|
||||
@@ -311,7 +312,7 @@ describe('filter-store', () => {
|
||||
return generateScript(inactiveRules);
|
||||
},
|
||||
};
|
||||
await useFilterStore.getState().fetchFilters(mockClient as any);
|
||||
await useFilterStore.getState().fetchFilters(mockClient as unknown as IJMAPClient);
|
||||
expect(useFilterStore.getState().activeScriptId).toBe('s2');
|
||||
expect(useFilterStore.getState().rules[0].name).toBe('Active');
|
||||
});
|
||||
@@ -322,7 +323,7 @@ describe('filter-store', () => {
|
||||
getSieveCapabilities: () => caps,
|
||||
getSieveScripts: async () => [],
|
||||
};
|
||||
await useFilterStore.getState().fetchFilters(mockClient as any);
|
||||
await useFilterStore.getState().fetchFilters(mockClient as unknown as IJMAPClient);
|
||||
expect(useFilterStore.getState().sieveCapabilities).toEqual(caps);
|
||||
});
|
||||
|
||||
@@ -335,7 +336,7 @@ describe('filter-store', () => {
|
||||
getSieveScripts: async () => [{ id: 's1', name: 'main', blobId: 'b1', isActive: true }],
|
||||
getSieveScriptContent: async () => script,
|
||||
};
|
||||
await useFilterStore.getState().fetchFilters(mockClient as any);
|
||||
await useFilterStore.getState().fetchFilters(mockClient as unknown as IJMAPClient);
|
||||
expect(useFilterStore.getState().rawScript).toBe(script);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user