fix(ui): refresh stale watch state

This commit is contained in:
edde746
2026-05-09 06:00:36 +02:00
parent 3e6ebcdb6a
commit 7a3f63683e
21 changed files with 572 additions and 195 deletions
+25 -7
View File
@@ -256,13 +256,31 @@ class _HubDetailScreenState extends State<HubDetailScreen>
}
}
void _handleItemRefresh(String ratingKey) {
setState(() {
final index = _items.indexWhere((item) => item.id == ratingKey);
if (index != -1) {
appLogger.d('Item refresh requested for: $ratingKey');
}
});
Future<void> _handleItemRefresh(String ratingKey) async {
final itemIndex = _items.indexWhere((item) => item.id == ratingKey);
final filteredIndex = _filteredItems.indexWhere((item) => item.id == ratingKey);
final existing = itemIndex != -1
? _items[itemIndex]
: filteredIndex != -1
? _filteredItems[filteredIndex]
: null;
if (existing == null) return;
final serverId = existing.serverId ?? widget.hub.serverId;
if (serverId == null) return;
try {
final updated = await context.tryGetMediaClientForServer(serverId)?.fetchItem(ratingKey);
if (updated == null || !mounted) return;
setState(() {
final currentItemIndex = _items.indexWhere((item) => item.id == ratingKey);
if (currentItemIndex != -1) _items[currentItemIndex] = updated;
final currentFilteredIndex = _filteredItems.indexWhere((item) => item.id == ratingKey);
if (currentFilteredIndex != -1) _filteredItems[currentFilteredIndex] = updated;
});
if (_selectedSort != null) _applySort();
} catch (e) {
appLogger.d('Item refresh skipped for: $ratingKey', error: e);
}
}
@override