This commit is contained in:
Leon
2025-09-21 19:38:58 +02:00
parent a5d511eaf3
commit 429b9f256b
4 changed files with 11 additions and 4 deletions

View File

@@ -113,6 +113,9 @@ def create_or_update_settings(db: Session, settings: SettingsCreate):
db_settings.auth_password_hash = get_password_hash(value)
else:
db_settings.auth_password_hash = None
elif key == "imap_password":
if value: # Only update password if a new one is provided
setattr(db_settings, key, value)
elif hasattr(db_settings, key):
setattr(db_settings, key, value)

View File

@@ -19,7 +19,7 @@ class SettingsBase(BaseModel):
class SettingsCreate(SettingsBase):
"""Schema for creating or updating settings, including the IMAP password."""
imap_password: str
imap_password: str | None = None
auth_password: str | None = None

View File

@@ -68,7 +68,11 @@ export function SettingsDialog({
const handleSave = async () => {
if (!currentSettings) return
try {
await updateSettings(currentSettings)
const payload: SettingsCreate = { ...currentSettings }
if (payload.imap_password === "") {
delete payload.imap_password
}
await updateSettings(payload)
toast.success("Settings saved successfully!")
onOpenChange(false)
onSuccess()
@@ -140,7 +144,7 @@ export function SettingsDialog({
<Input
id="imap-password"
type="password"
value={currentSettings.imap_password}
value={currentSettings.imap_password ?? ""}
onChange={(e) =>
handleSettingsChange("imap_password", e.target.value)
}

View File

@@ -51,7 +51,7 @@ export interface Settings {
export interface SettingsCreate {
imap_server: string;
imap_username: string;
imap_password?: string;
imap_password?: string | null;
search_folder: string;
move_to_folder?: string | null;
mark_as_read: boolean;