feat: 文件搜索、视频续播与目录文件过滤

- 前端 Header 新增搜索栏,接入已有 SearchFiles API,结果支持列表/网格视图
- 新增 PlaybackPosition 数据库列与 /api/files/progress 端点,播放进度存服务端
- 播放中每 5 秒自动保存进度,再次打开视频时弹出"继续播放"提示
- 目录浏览新增媒体类型过滤条(全部/视频/音频/文本),前端即时过滤
- 新增 4 种数据库迁移(AddPlaybackPosition)
This commit is contained in:
2026-05-22 17:44:35 +08:00
parent ff19f4759f
commit 6ef410fdfa
22 changed files with 2386 additions and 14 deletions
@@ -404,6 +404,17 @@ namespace FileShare_Services.Services.FileLibrary
}
}
/// <inheritdoc />
public async Task SaveFileProgressAsync(int id, double position, CancellationToken cancellationToken = default)
{
var record = await db.ManagedFileRecords.FindAsync([id], cancellationToken);
if (record is not null)
{
record.PlaybackPosition = Math.Max(0, position);
await db.SaveChangesAsync(cancellationToken);
}
}
/// <summary>
/// 深度优先遍历目录树,枚举所有被 <see cref="MediaFileTypes"/> 支持的媒体文件路径。
/// 遇到无权限的目录时跳过该分支继续遍历。
@@ -559,7 +570,8 @@ namespace FileShare_Services.Services.FileLibrary
MediaFileTypes.IsBrowserPlayable(file.Extension),
file.ThumbnailId is null ? null : $"/api/thumbnails/{file.ThumbnailId}",
file.VideoDuration,
file.LastPlayedAt);
file.LastPlayedAt,
file.PlaybackPosition);
}
}