(folder, colorHexOrEmpty)
| 1248 | } |
| 1249 | |
| 1250 | async function saveFolderColor(folder, colorHexOrEmpty) { |
| 1251 | const res = await fetch('/api/folder/saveFolderColor.php', { |
| 1252 | method: 'POST', credentials: 'include', |
| 1253 | headers: { 'Content-Type': 'application/json', 'X-CSRF-Token': window.csrfToken }, |
| 1254 | body: JSON.stringify({ folder, color: colorHexOrEmpty }) |
| 1255 | }); |
| 1256 | const data = await res.json().catch(() => ({})); |
| 1257 | if (!res.ok || data.error) throw new Error(data.error || `HTTP ${res.status}`); |
| 1258 | // update local map & apply |
| 1259 | if (data.color) window.folderColorMap[folder] = data.color; |
| 1260 | else delete window.folderColorMap[folder]; |
| 1261 | applyFolderColorToOption(folder, data.color || ''); |
| 1262 | |
| 1263 | // notify other views (fileListView's strip) |
| 1264 | window.dispatchEvent(new CustomEvent('folderColorChanged', { |
| 1265 | detail: { folder, color: data.color || '' } |
| 1266 | })); |
| 1267 | |
| 1268 | return data; |
| 1269 | } |
| 1270 | |
| 1271 | async function loadFolderColors() { |
| 1272 | if (window.__FR_COLORS_PROMISE) return window.__FR_COLORS_PROMISE; |
no test coverage detected