Fix various eslint issues

This commit is contained in:
2025-05-23 23:03:05 +02:00
parent ad2334c414
commit 78de42d195
24 changed files with 65 additions and 61 deletions

View File

@@ -17,14 +17,16 @@ const LoginPage: React.FC = () => {
const [loading, setLoading] = useState<boolean>(false);
const { login } = useAuth();
const handleSubmit = async (e: FormEvent<HTMLElement>): Promise<void> => {
const handleSubmit = (e: FormEvent<HTMLElement>): void => {
e.preventDefault();
setLoading(true);
try {
await login(email, password);
} finally {
login(email, password)
.catch((error) => {
console.error('Login failed:', error);
})
.finally(() => {
setLoading(false);
}
});
};
return (

View File

@@ -4,7 +4,7 @@ import FileActions from '../files/FileActions';
import FileTree from '../files/FileTree';
import { useGitOperations } from '../../hooks/useGitOperations';
import { useWorkspace } from '../../contexts/WorkspaceContext';
import type { FileNode } from '@/types/fileApi';
import type { FileNode } from '@/types/models';
interface SidebarProps {
selectedFile: string | null;
@@ -23,7 +23,7 @@ const Sidebar: React.FC<SidebarProps> = ({
const { handlePull } = useGitOperations();
useEffect(() => {
loadFileList();
void loadFileList();
}, [loadFileList]);
return (

View File

@@ -50,7 +50,7 @@ const DeleteAccountModal: React.FC<DeleteAccountModalProps> = ({
<Button
color="red"
onClick={() => {
onConfirm(password);
void onConfirm(password);
setPassword('');
}}
>

View File

@@ -48,7 +48,7 @@ const EmailPasswordModal: React.FC<EmailPasswordModalProps> = ({
</Button>
<Button
onClick={() => {
onConfirm(password);
void onConfirm(password);
setPassword('');
}}
>

View File

@@ -42,7 +42,7 @@ const CreateFileModal: React.FC<CreateFileModalProps> = ({ onCreateFile }) => {
>
Cancel
</Button>
<Button onClick={handleSubmit}>Create</Button>
<Button onClick={() => void handleSubmit()}>Create</Button>
</Group>
</Box>
</Modal>

View File

@@ -28,7 +28,7 @@ const DeleteFileModal: React.FC<DeleteFileModalProps> = ({
title="Delete File"
centered
>
<Text>Are you sure you want to delete "{selectedFile}"?</Text>
<Text>Are you sure you want to delete &quot;{selectedFile}&quot;?</Text>
<Group justify="flex-end" mt="xl">
<Button
variant="default"
@@ -36,7 +36,7 @@ const DeleteFileModal: React.FC<DeleteFileModalProps> = ({
>
Cancel
</Button>
<Button color="red" onClick={handleConfirm}>
<Button color="red" onClick={() => void handleConfirm()}>
Delete
</Button>
</Group>

View File

@@ -45,7 +45,7 @@ const CommitMessageModal: React.FC<CommitMessageModalProps> = ({
>
Cancel
</Button>
<Button onClick={handleSubmit}>Commit</Button>
<Button onClick={() => void handleSubmit()}>Commit</Button>
</Group>
</Box>
</Modal>

View File

@@ -8,8 +8,8 @@ import {
Button,
Group,
} from '@mantine/core';
import type { CreateUserRequest } from '@/types/adminApi';
import { UserRole } from '@/types/authApi';
import type { CreateUserRequest } from '@/types/api';
import { UserRole } from '@/types/models';
interface CreateUserModalProps {
opened: boolean;
@@ -85,7 +85,7 @@ const CreateUserModal: React.FC<CreateUserModalProps> = ({
<Button variant="default" onClick={onClose}>
Cancel
</Button>
<Button onClick={handleSubmit} loading={loading}>
<Button onClick={() => void handleSubmit} loading={loading}>
Create User
</Button>
</Group>

View File

@@ -1,6 +1,6 @@
import React from 'react';
import { Modal, Text, Button, Group, Stack } from '@mantine/core';
import type { User } from '@/types/authApi';
import type { User } from '@/types/models';
interface DeleteUserModalProps {
opened: boolean;
@@ -26,14 +26,15 @@ const DeleteUserModal: React.FC<DeleteUserModalProps> = ({
>
<Stack>
<Text>
Are you sure you want to delete user "{user?.email}"? This action cannot
be undone and all associated data will be permanently deleted.
Are you sure you want to delete user &quot;{user?.email}&quot;? This
action cannot be undone and all associated data will be permanently
deleted.
</Text>
<Group justify="flex-end" mt="xl">
<Button variant="default" onClick={onClose}>
Cancel
</Button>
<Button color="red" onClick={onConfirm} loading={loading}>
<Button color="red" onClick={() => void onConfirm()} loading={loading}>
Delete User
</Button>
</Group>

View File

@@ -9,9 +9,8 @@ import {
PasswordInput,
Text,
} from '@mantine/core';
import type { UpdateUserRequest } from '@/types/adminApi';
import type { User} from '@/types/authApi';
import { UserRole } from '@/types/authApi';
import type { UpdateUserRequest } from '@/types/api';
import { type User, UserRole } from '@/types/models';
interface EditUserModalProps {
opened: boolean;
@@ -114,7 +113,7 @@ const EditUserModal: React.FC<EditUserModalProps> = ({
<Button variant="default" onClick={onClose}>
Cancel
</Button>
<Button onClick={handleSubmit} loading={loading}>
<Button onClick={() => void handleSubmit} loading={loading}>
Save Changes
</Button>
</Group>

View File

@@ -2,7 +2,7 @@ import React, { useState } from 'react';
import { Modal, TextInput, Button, Group, Box } from '@mantine/core';
import { useModalContext } from '../../../contexts/ModalContext';
import { notifications } from '@mantine/notifications';
import type { Workspace } from '@/types/workspace';
import type { Workspace } from '@/types/models';
import { createWorkspace } from '@/api/workspace';
interface CreateWorkspaceModalProps {
@@ -38,9 +38,9 @@ const CreateWorkspaceModal: React.FC<CreateWorkspaceModalProps> = ({
setName('');
setCreateWorkspaceModalVisible(false);
if (onWorkspaceCreated) {
onWorkspaceCreated(workspace);
await onWorkspaceCreated(workspace);
}
} catch (error) {
} catch (_error) {
notifications.show({
title: 'Error',
message: 'Failed to create workspace',
@@ -77,7 +77,7 @@ const CreateWorkspaceModal: React.FC<CreateWorkspaceModalProps> = ({
>
Cancel
</Button>
<Button onClick={handleSubmit} loading={loading}>
<Button onClick={() => void handleSubmit} loading={loading}>
Create
</Button>
</Group>

View File

@@ -23,15 +23,15 @@ const DeleteWorkspaceModal: React.FC<DeleteUserModalProps> = ({
>
<Stack>
<Text>
Are you sure you want to delete workspace "{workspaceName}"? This action
cannot be undone and all files in this workspace will be permanently
deleted.
Are you sure you want to delete workspace &quot;{workspaceName}&quot;?
This action cannot be undone and all files in this workspace will be
permanently deleted.
</Text>
<Group justify="flex-end" mt="xl">
<Button variant="default" onClick={onClose}>
Cancel
</Button>
<Button color="red" onClick={onConfirm}>
<Button color="red" onClick={() => void onConfirm}>
Delete Workspace
</Button>
</Group>

View File

@@ -26,8 +26,8 @@ const UserMenu: React.FC = () => {
const [opened, setOpened] = useState<boolean>(false);
const { user, logout } = useAuth();
const handleLogout = (): void => {
logout();
const handleLogout = async (): Promise<void> => {
await logout();
};
return (

View File

@@ -19,7 +19,7 @@ import { useWorkspace } from '../../contexts/WorkspaceContext';
import { useModalContext } from '../../contexts/ModalContext';
import { listWorkspaces } from '../../api/workspace';
import CreateWorkspaceModal from '../modals/workspace/CreateWorkspaceModal';
import type { Workspace } from '../../types/workspace';
import type { Workspace } from '@/types/models';
const WorkspaceSwitcher: React.FC = () => {
const { currentWorkspace, switchWorkspace } = useWorkspace();

View File

@@ -16,13 +16,12 @@ import SecuritySettings from './SecuritySettings';
import ProfileSettings from './ProfileSettings';
import DangerZoneSettings from './DangerZoneSettings';
import AccordionControl from '../AccordionControl';
import type {
UserProfileSettings,
ProfileSettingsState,
SettingsAction} from '../../../types/settings';
import {
SettingsActionType
} from '../../../types/settings';
type UserProfileSettings,
type ProfileSettingsState,
type SettingsAction,
SettingsActionType,
} from '@/types/models';
interface AccountSettingsProps {
opened: boolean;

View File

@@ -13,7 +13,7 @@ const DangerZoneSettings: React.FC = () => {
const success = await deleteAccount(password);
if (success) {
setDeleteModalOpened(false);
logout();
await logout();
}
};

View File

@@ -1,6 +1,6 @@
import React from 'react';
import { Box, Stack, TextInput } from '@mantine/core';
import type { UserProfileSettings } from '../../../types/settings';
import type { UserProfileSettings } from '@/types/models';
interface ProfileSettingsProps {
settings: UserProfileSettings;

View File

@@ -1,6 +1,6 @@
import React, { useState } from 'react';
import { Box, PasswordInput, Stack, Text } from '@mantine/core';
import type { UserProfileSettings } from '@/types/settings';
import type { UserProfileSettings } from '@/types/models';
interface SecuritySettingsProps {
settings: UserProfileSettings;
@@ -66,7 +66,7 @@ const SecuritySettings: React.FC<SecuritySettingsProps> = ({
/>
<Text size="xs" c="dimmed">
Password must be at least 8 characters long. Leave password fields
empty if you don't want to change it.
empty if you don&apos;t want to change it.
</Text>
</Stack>
</Box>

View File

@@ -20,8 +20,8 @@ import { useUserAdmin } from '../../../hooks/useUserAdmin';
import CreateUserModal from '../../modals/user/CreateUserModal';
import EditUserModal from '../../modals/user/EditUserModal';
import DeleteUserModal from '../../modals/user/DeleteUserModal';
import type { User } from '../../../types/authApi';
import type { CreateUserRequest, UpdateUserRequest } from '../../../types/adminApi';
import type { User } from '@/types/models';
import type { CreateUserRequest, UpdateUserRequest } from '@/types/api';
interface AdminUsersTabProps {
currentUser: User;

View File

@@ -3,7 +3,7 @@ import { Table, Group, Text, Box, LoadingOverlay, Alert } from '@mantine/core';
import { IconAlertCircle } from '@tabler/icons-react';
import { useAdminData } from '../../../hooks/useAdminData';
import { formatBytes } from '../../../utils/formatBytes';
import type { FileCountStats, WorkspaceStats } from '../../../types/adminApi';
import type { FileCountStats, WorkspaceStats } from '@/types/models';
const AdminWorkspacesTab: React.FC = () => {
const {

View File

@@ -1,7 +1,7 @@
import React from 'react';
import { Text, Switch, Group, Box } from '@mantine/core';
import { useWorkspace } from '../../../contexts/WorkspaceContext';
import { Theme } from '@/types/theme';
import { Theme } from '@/types/models';
interface AppearanceSettingsProps {
onThemeChange: (newTheme: Theme) => void;

View File

@@ -1,6 +1,6 @@
import React from 'react';
import { Box, TextInput, Text, Grid } from '@mantine/core';
import type { Workspace } from '@/types/workspace';
import type { Workspace } from '@/types/models';
interface GeneralSettingsProps {
name: string;

View File

@@ -8,7 +8,7 @@ import {
Group,
Grid,
} from '@mantine/core';
import type { Workspace } from '@/types/workspace';
import type { Workspace } from '@/types/models';
interface GitSettingsProps {
gitEnabled: boolean;
@@ -19,7 +19,7 @@ interface GitSettingsProps {
gitCommitMsgTemplate: string;
gitCommitName: string;
gitCommitEmail: string;
onInputChange: (key: keyof Workspace, value: any) => void;
onInputChange: (key: keyof Workspace, value: string | boolean) => void;
}
const GitSettings: React.FC<GitSettingsProps> = ({

View File

@@ -17,10 +17,12 @@ import GeneralSettings from './GeneralSettings';
import { useModalContext } from '../../../contexts/ModalContext';
import DangerZoneSettings from './DangerZoneSettings';
import AccordionControl from '../AccordionControl';
import type { SettingsAction } from '../../../types/settings';
import { SettingsActionType } from '../../../types/settings';
import type { Workspace } from '../../../types/workspace';
import {
type Theme,
type Workspace,
type SettingsAction,
SettingsActionType,
} from '@/types/models';
// State and reducer for workspace settings
interface WorkspaceSettingsState {
localSettings: Partial<Workspace>;
@@ -46,7 +48,7 @@ function settingsReducer(
initialSettings: action.payload || {},
hasUnsavedChanges: false,
};
case SettingsActionType.UPDATE_LOCAL_SETTINGS:
case SettingsActionType.UPDATE_LOCAL_SETTINGS: {
const newLocalSettings = { ...state.localSettings, ...action.payload };
const hasChanges =
JSON.stringify(newLocalSettings) !==
@@ -56,6 +58,7 @@ function settingsReducer(
localSettings: newLocalSettings,
hasUnsavedChanges: hasChanges,
};
}
case SettingsActionType.MARK_SAVED:
return {
...state,
@@ -95,7 +98,7 @@ const WorkspaceSettings: React.FC = () => {
}, [currentWorkspace]);
const handleInputChange = useCallback(
(key: keyof Workspace, value: any): void => {
<K extends keyof Workspace>(key: K, value: Workspace[K]): void => {
dispatch({
type: SettingsActionType.UPDATE_LOCAL_SETTINGS,
payload: { [key]: value } as Partial<Workspace>,
@@ -194,7 +197,7 @@ const WorkspaceSettings: React.FC = () => {
<Accordion.Panel>
<AppearanceSettings
onThemeChange={(newTheme: string) =>
handleInputChange('theme', newTheme)
handleInputChange('theme', newTheme as Theme)
}
/>
</Accordion.Panel>
@@ -247,7 +250,7 @@ const WorkspaceSettings: React.FC = () => {
<Button variant="default" onClick={handleClose}>
Cancel
</Button>
<Button onClick={handleSubmit}>Save Changes</Button>
<Button onClick={() => void handleSubmit}>Save Changes</Button>
</Group>
</Stack>
</Modal>