fix(email): normalize folder refresh query defaults

This commit is contained in:
Matyas Fenyves 2026-07-31 11:14:32 +02:00
parent 9bff67c7ae
commit f6d944b082
2 changed files with 15 additions and 4 deletions

View file

@ -3860,14 +3860,24 @@ def setup_email_routes():
"""List IMAP folders."""
if _fixture_email_enabled():
return {"folders": ["INBOX", "Archive", "Sent"], "sync": {"source": "fixture"}}
cached = None if refresh else _folder_cache_get(account_id, owner)
try:
cached_only_enabled = bool(int(cached_only or 0))
except (TypeError, ValueError):
cached_only_enabled = False
if isinstance(refresh, str):
refresh_enabled = refresh.strip().lower() in {"1", "true", "yes", "on"}
elif isinstance(refresh, (bool, int)):
refresh_enabled = bool(refresh)
else:
refresh_enabled = False
cached = None if refresh_enabled else _folder_cache_get(account_id, owner)
if cached is not None:
payload = dict(cached)
sync_meta = dict(payload.get("sync") or {})
sync_meta["source"] = "folder_cache"
payload["sync"] = sync_meta
return payload
if cached_only:
if cached_only_enabled:
stale = _folder_cache_get_stale(account_id, owner)
if stale:
payload = dict(stale)

View file

@ -236,7 +236,7 @@ async def test_list_folders_refresh_bypasses_stale_folder_cache(monkeypatch):
def test_email_library_handles_archive_folder_setup_flow():
src = Path("static/js/emailLibrary.js").read_text(encoding="utf-8")
assert "import { folderDisplayName, isArchiveFolder, sortedFolders } from './emailInbox.js';" in src
assert "import { folderDisplayName, isArchiveFolder, sortedFolders } from './emailInbox.js" in src
assert "_archiveEmailWithFallback" in src
assert "needs_archive_folder" in src
assert "No Archive folder was found for this account. Create one named" in src
@ -245,7 +245,8 @@ def test_email_library_handles_archive_folder_setup_flow():
assert "const result = await _archiveEmailWithFallback(em.uid)" in src
assert "actions.findIndex(a => a.label === 'Move to Archive')" in src
assert "const isArchiveCurrentFolder = isArchiveFolder(state._libFolder)" in src
assert "emailApiUrl('/api/email/folders', { refresh: refresh ? 1 : undefined })" in src
assert "cached_only: (live || refresh) ? undefined : 1" in src
assert "refresh: refresh ? 1 : undefined" in src
assert "_loadFolders({ refresh: true })" in src
assert "_loadFolders({ resetMissing: true, refresh: true })" in src