自定义线路与线路优化

This commit is contained in:
2026-06-04 17:52:16 +08:00
parent 33509de4e3
commit e6c60a9d6d
16 changed files with 1184 additions and 203 deletions
+15 -3
View File
@@ -2,6 +2,7 @@ import 'api_service.dart';
import '../core/utils/app_logger.dart';
import '../core/utils/file_utils.dart';
import '../core/utils/time_flow_decoder.dart';
import 'custom_line_service.dart';
/// 缩略图缓存条目
class _ThumbCacheEntry {
@@ -41,6 +42,9 @@ class ThumbnailService {
// 1. 检查内存缓存
final cached = _urlCache[cacheKey];
if (cached != null && !cached.isExpired) {
await CustomLineService.instance.activateSelectedNodeForUrl(
cached.imageUrl,
);
return cached.imageUrl;
}
if (cached != null) {
@@ -64,7 +68,10 @@ class ThumbnailService {
}
}
Future<String?> _fetchThumbnailUrl(String fileUri, String? contextHint) async {
Future<String?> _fetchThumbnailUrl(
String fileUri,
String? contextHint,
) async {
try {
final uri = FileUtils.toCloudreveUri(fileUri);
final headers = contextHint != null
@@ -97,12 +104,15 @@ class ThumbnailService {
if (url.isEmpty) return null;
AppLogger.d('ThumbnailService: resolved URL for $fileUri = $url');
await CustomLineService.instance.activateSelectedNodeForUrl(url);
// 解析过期时间,缓存提前 30 秒过期
DateTime expiresAt;
if (expiresStr != null) {
try {
expiresAt = DateTime.parse(expiresStr).subtract(const Duration(seconds: 30));
expiresAt = DateTime.parse(
expiresStr,
).subtract(const Duration(seconds: 30));
} catch (_) {
expiresAt = DateTime.now().add(const Duration(minutes: 5));
}
@@ -118,7 +128,9 @@ class ThumbnailService {
return url;
} catch (e) {
AppLogger.d('ThumbnailService: failed to get thumbnail URL for $fileUri: $e');
AppLogger.d(
'ThumbnailService: failed to get thumbnail URL for $fileUri: $e',
);
return null;
}
}