feat(player): 切集刷新互动计数统计

This commit is contained in:
Zhou Weidong committed 2026-10-26 21:40:39 +08:00
1 parent 37353dac15
commit 188811fde6
11 files changed
+694 -20

No files matched your search

@@ -32,6 +32,17 @@ class FavoriteController extends ChangeNotifier {
bool isSaved(String dramaId) => _saved.contains(dramaId);
/// 用统计快照校准收藏状态;已有列表卡片结构不因一次状态同步而改动。
void applyServerState(String dramaId, {required bool saved}) {
final changed = _saved.contains(dramaId) != saved;
if (saved) {
_saved.add(dramaId);
} else {
_saved.remove(dramaId);
}
if (changed) notify();
}
void notify() {
if (!_disposed) notifyListeners();
}
@@ -40,6 +40,24 @@ class InteractionController extends ChangeNotifier {
/// 该集服务端最新点赞数。
int? episodeLikeCount(String episodeId) => _episodeLikeCounts[episodeId];
/// 用轻量统计快照校准当前用户的分集点赞状态与计数。
void applyEpisodeStats(
String episodeId, {
required bool liked,
required int likeCount,
}) {
final changed =
_likedEpisodeIds.contains(episodeId) != liked ||
_episodeLikeCounts[episodeId] != likeCount;
if (liked) {
_likedEpisodeIds.add(episodeId);
} else {
_likedEpisodeIds.remove(episodeId);
}
_episodeLikeCounts[episodeId] = likeCount;
if (changed) _notify();
}
/// 乐观切换剧集点赞,失败时回滚并以服务端返回状态校准。
Future<OperationResult<LikeToggleResult>> toggleDramaLike(String dramaId) =>
_toggleLike(