Compare commits
3
Commits
v1.7.9
..
efbbeb7306
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
efbbeb7306 | ||
|
|
54f8848e30 | ||
|
|
8a446509c6 |
No files matched your search
@@ -552,6 +552,8 @@ class M365Connector:
|
|||||||
r.raise_for_status()
|
r.raise_for_status()
|
||||||
return True # 204 No Content = success
|
return True # 204 No Content = success
|
||||||
raise _requests.exceptions.RetryError(f"Gave up after {self._MAX_RETRIES} attempts: {url}")
|
raise _requests.exceptions.RetryError(f"Gave up after {self._MAX_RETRIES} attempts: {url}")
|
||||||
|
|
||||||
|
def delete_message(self, user_id: str, message_id: str) -> bool:
|
||||||
"""Move an email to Deleted Items (soft delete)."""
|
"""Move an email to Deleted Items (soft delete)."""
|
||||||
base = "/me" if (not user_id or user_id == "me") else f"/users/{user_id}"
|
base = "/me" if (not user_id or user_id == "me") else f"/users/{user_id}"
|
||||||
try:
|
try:
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ Never revert to `!!window._googleConnected` / `_fileSources.length > 0` — thos
|
|||||||
- **Cache invalidation** — `invalidateHistoryCache()` clears `_sessions` and `_latestRefScanId`. All three `*_done` SSE handlers call `window.invalidateHistoryCache?.()`.
|
- **Cache invalidation** — `invalidateHistoryCache()` clears `_sessions` and `_latestRefScanId`. All three `*_done` SSE handlers call `window.invalidateHistoryCache?.()`.
|
||||||
- **Re-scan diff** — items present in the previous session but absent from the current one are tagged `_resolved: true`, rendered with `.card-resolved` and a green ✓ badge, and NOT added to `S.flaggedData` (grid-only, cannot be bulk-selected or exported).
|
- **Re-scan diff** — items present in the previous session but absent from the current one are tagged `_resolved: true`, rendered with `.card-resolved` and a green ✓ badge, and NOT added to `S.flaggedData` (grid-only, cannot be bulk-selected or exported).
|
||||||
- **Mode transitions** — `startScan()` calls `window.exitHistoryMode?.()` before clearing the grid.
|
- **Mode transitions** — `startScan()` calls `window.exitHistoryMode?.()` before clearing the grid.
|
||||||
|
- **`renderGrid(files)` hides the landing cards** — whenever `files.length > 0` it hides `#emptyState` and `#lastScanSummary` and shows `#grid`. This is centralised here because the live `scan_file_flagged` handler (`scan.js`) shows the grid but does NOT clear those panels, so results would render *underneath* a still-visible landing/last-scan card until a manual refresh. Do not move this hiding back into individual callers — every render path (live SSE, `loadOpenItems`, history, filters) must clear the landing. The empty case (`files.length === 0`) is left untouched so callers still control the empty/landing state.
|
||||||
|
|
||||||
## Card user/group badge — results.js
|
## Card user/group badge — results.js
|
||||||
|
|
||||||
|
|||||||
@@ -122,6 +122,17 @@ function renderGrid(files) {
|
|||||||
const grid = document.getElementById('grid');
|
const grid = document.getElementById('grid');
|
||||||
grid.innerHTML = '';
|
grid.innerHTML = '';
|
||||||
files.forEach(f => appendCard(f));
|
files.forEach(f => appendCard(f));
|
||||||
|
// Whenever results are rendered, the landing/last-scan cards must be hidden —
|
||||||
|
// the live scan_file_flagged path shows the grid but does not clear them, so
|
||||||
|
// results would otherwise appear underneath the still-visible landing page
|
||||||
|
// until a manual refresh. Centralised here so every render path is covered.
|
||||||
|
if (files && files.length) {
|
||||||
|
const es = document.getElementById('emptyState');
|
||||||
|
if (es) es.style.display = 'none';
|
||||||
|
const ls = document.getElementById('lastScanSummary');
|
||||||
|
if (ls) ls.style.display = 'none';
|
||||||
|
if (grid) grid.style.display = S.isListView ? 'block' : 'grid';
|
||||||
|
}
|
||||||
_updateBulkBar();
|
_updateBulkBar();
|
||||||
updateDispositionStats();
|
updateDispositionStats();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user