'Invalid media type'], $type, 'invalid_type', $startedAt, $forceRefresh); } $resolveError = null; $baseDir = fm_resolve_media_root($resolveError); if ($baseDir === null) { fm_emit_response(['error' => $resolveError ?? 'MEDIA_ROOT base directory not found'], $type, 'error', $startedAt, $forceRefresh); } if (!$forceRefresh) { $cacheError = null; $cached = fm_read_cache_payload($type, $baseDir, $cacheError); if (is_array($cached)) { $tree = $cached['tree']; fm_emit_response( empty($tree) ? ['message' => 'No media files found'] : $tree, $type, 'hit', $startedAt, $forceRefresh, isset($cached['generated_at']) && is_string($cached['generated_at']) ? $cached['generated_at'] : null ); } } $rebuildError = null; $tree = fm_rebuild_cache($type, $baseDir, false, $rebuildError); if (!is_array($tree)) { $scanError = null; $tree = fm_scan_media_tree($type, $baseDir, $scanError); if (!is_array($tree)) { fm_emit_response( ['error' => $scanError ?? $rebuildError ?? 'Failed to scan media directory'], $type, 'error', $startedAt, $forceRefresh ); } fm_emit_response( empty($tree) ? ['message' => 'No media files found'] : $tree, $type, 'fallback_scan', $startedAt, $forceRefresh ); } fm_emit_response( empty($tree) ? ['message' => 'No media files found'] : $tree, $type, $forceRefresh ? 'rebuild_forced' : 'rebuild', $startedAt, $forceRefresh );