fix: Folder limit cannot be empty #97

This commit is contained in:
rustmailer
2026-01-05 21:32:00 +08:00
parent 0bf2003670
commit 55e97510c4
7 changed files with 29 additions and 10 deletions
@@ -128,6 +128,7 @@ const getAccountSchema = (isEdit: boolean, t: (key: string) => string) =>
.number({ invalid_type_error: t('validation.folderLimitMustBeNumber') })
.int()
.min(100, { message: t('validation.folderLimitMustBeAtLeast100') })
.nullable()
.optional(),
sync_interval_min: z.number({ invalid_type_error: t('validation.incrementalSyncMustBeNumber') }).int().min(10, { message: t('validation.incrementalSyncMustBeAtLeast10') }),
sync_batch_size: z
@@ -221,7 +222,7 @@ export function AccountActionDialog({ currentRow, open, onOpenChange }: Props) {
const accountSchema = getAccountSchema(isEdit, t);
const form = useForm<Account>({
mode: "all",
mode: "onChange",
defaultValues: isEdit ? mapCurrentRowToFormValues(currentRow) : defaultValues,
resolver: zodResolver(accountSchema),
});
@@ -291,9 +292,11 @@ export function AccountActionDialog({ currentRow, open, onOpenChange }: Props) {
};
if (isEdit) {
const isAllMode = !data.date_since && !data.date_before;
const clear_folder_limit = !data.folder_limit;
updateMutation.mutate({
...commonData,
...(isAllMode ? { clear_date_range: true } : {})
...(isAllMode ? { clear_date_range: true } : {}),
...(clear_folder_limit ? { clear_folder_limit: true } : {})
});
} else {
createMutation.mutate({ ...commonData, account_type: "IMAP" });
@@ -116,11 +116,11 @@ export function useColumns(): ColumnDef<AccountModel>[] {
cell: ({ row }) => {
const { created_user_name, created_user_email } = row.original;
return (
<div className="flex flex-col py-1 text-center">
<span className="text-sm font-medium text-foreground">
<div className="flex flex-col items-center leading-[1.1]">
<span className="text-[13px] font-medium text-foreground leading-none">
{created_user_name}
</span>
<span className="text-[11px] text-muted-foreground font-mono">
<span className="text-[11px] text-muted-foreground font-mono leading-none">
{created_user_email}
</span>
</div>
@@ -82,7 +82,7 @@ export function NoSyncAccountDialog({ currentRow, open, onOpenChange }: Props) {
const { toast } = useToast();
const form = useForm<NoSyncAccount>({
mode: "all",
mode: "onChange",
defaultValues: isEdit ? mapCurrentRowToFormValues(currentRow) : defaultValues,
resolver: zodResolver(accountSchema(t)),
});
@@ -178,7 +178,6 @@ export default function Step3() {
onSelect={(date) => field.onChange(date?.toLocaleDateString('en-CA'))}
disabled={(date) => date > new Date() || date < new Date("1900-01-01")}
locale={dateLocale}
initialFocus
/>
</PopoverContent>
</Popover>
@@ -244,8 +243,11 @@ export default function Step3() {
<Input
type="number"
placeholder={t('accounts.folderLimitPlaceholder')}
{...field}
onChange={(e) => field.onChange(e.target.value ? parseInt(e.target.value, 10) : undefined)}
value={field.value ?? ''}
onChange={(e) => {
const value = e.target.value;
field.onChange(value === '' ? null : Number(value));
}}
/>
</FormControl>
<FormMessage />
@@ -148,7 +148,7 @@ export function Oauth2Table({ columns, data }: DataTableProps) {
</TableBody>
</Table>
</div>
<DataTablePagination table={table} showSelected={true} showPageSizeSelector={true} />
<DataTablePagination table={table} showPageSizeSelector={true} />
</div>
)
}