fix(offline): honor settled profile visibility
This commit is contained in:
@@ -95,14 +95,18 @@ void main() {
|
||||
var notified = 0;
|
||||
p.addListener(() => notified++);
|
||||
|
||||
expect(p.hasExplicitVisibleServerFilter, isFalse);
|
||||
|
||||
// Empty set is a real value (different from null) — switching from
|
||||
// null → {} should notify so consumers know the active profile has
|
||||
// no servers, not "all servers".
|
||||
p.setVisibleServerIds(<String>{});
|
||||
expect(notified, 1);
|
||||
expect(p.hasExplicitVisibleServerFilter, isTrue);
|
||||
|
||||
p.setVisibleServerIds({'a', 'b'});
|
||||
expect(notified, 2);
|
||||
expect(p.hasExplicitVisibleServerFilter, isTrue);
|
||||
|
||||
// Idempotent: same membership is a no-op.
|
||||
p.setVisibleServerIds({'b', 'a'});
|
||||
@@ -111,6 +115,7 @@ void main() {
|
||||
// Clearing back to null after a real filter is a state change.
|
||||
p.setVisibleServerIds(null);
|
||||
expect(notified, 3);
|
||||
expect(p.hasExplicitVisibleServerFilter, isFalse);
|
||||
|
||||
p.dispose();
|
||||
});
|
||||
|
||||
@@ -166,6 +166,33 @@ void main() {
|
||||
manager.dispose();
|
||||
});
|
||||
|
||||
test('expected but unreachable profile servers enter offline once visibility settles', () async {
|
||||
final manager = MultiServerManager();
|
||||
final multi = MultiServerProvider(manager, DataAggregationService(manager));
|
||||
final p = OfflineModeProvider(manager, multiServerProvider: multi);
|
||||
|
||||
expect(p.isOffline, isFalse);
|
||||
|
||||
var notifications = 0;
|
||||
p.addListener(() => notifications++);
|
||||
|
||||
multi.setExpectedVisibleServerIds({'jf-machine'});
|
||||
await Future<void>.delayed(Duration.zero);
|
||||
|
||||
expect(p.isOffline, isFalse);
|
||||
expect(notifications, 0);
|
||||
|
||||
multi.setVisibleServerIds(<String>{});
|
||||
await Future<void>.delayed(Duration.zero);
|
||||
|
||||
expect(p.isOffline, isTrue);
|
||||
expect(notifications, 1);
|
||||
|
||||
p.dispose();
|
||||
multi.dispose();
|
||||
manager.dispose();
|
||||
});
|
||||
|
||||
test('Plex auth errors without live clients stay out of generic offline', () async {
|
||||
final manager = MultiServerManager();
|
||||
final multi = MultiServerProvider(manager, DataAggregationService(manager));
|
||||
|
||||
Reference in New Issue
Block a user