treewide cleanups

This commit is contained in:
Henry Hiles 2026-10-23 20:26:37 -04:00
commit 853116ab2f
Signed by: Henry-Hiles
SSH key fingerprint: SHA256:VKQUdS31Q90KvX7EkKMHMBpUspcmItAh86a+v7PGiIs

View file

@ -1,53 +1,48 @@
import "package:collection/collection.dart";
import "package:fast_immutable_collections/fast_immutable_collections.dart";
import "package:flutter_riverpod/flutter_riverpod.dart";
import "package:nexus/controllers/client_state.dart";
import "package:nexus/models/content/content.dart";
import "package:nexus/models/content/membership.dart";
import "package:nexus/models/content/power_levels.dart";
import "package:nexus/models/event.dart";
import "package:nexus/models/room.dart";
class ViaController(final Room room) extends Notifier<String> {
@override
String build() {
final servers = <String>{};
final powerLevelUsers =
switch (room.state[EventType.powerLevels.type]?[""]) {
final rowId? => switch (room.events[rowId]?.content) {
PowerLevelsContent(:final users) => users.keys.toIList(),
_ => null,
},
null => null,
} ??
.new([]);
void addUserId(String? userId) {
final server = userId?.split(":").lastOrNull;
if (server != null) {
servers.add(server);
}
}
final joinedMembers =
(room.state[EventType.membership.type]?.values ?? const [])
.map(
(rowId) => switch (room.events[rowId]) {
Event(
stateKey: final userId?,
content: MembershipContent(status: .join),
) =>
userId,
_ => null,
},
)
.nonNulls
.toIList();
addUserId(ref.watch(ClientStateController.provider)?.userId);
final powerLevelsEventId = room.state[EventType.powerLevels.type]?[""];
final powerLevels = powerLevelsEventId == null
? null
: room.events[powerLevelsEventId];
if (powerLevels?.content case PowerLevelsContent(:final users)) {
for (final userId in users.keys) {
addUserId(userId);
if (servers.length >= 5) break;
}
}
final members = room.state[EventType.membership.type]?.values.toIList();
for (var i = 0; servers.length < 5; i++) {
final membershipEventId = members?.getOrNull(i);
final member = membershipEventId == null
? null
: room.events[membershipEventId];
if (member?.content case MembershipContent(:final status)) {
if (status == .join) {
addUserId(member?.stateKey);
}
}
if (members?.getOrNull(i) == null) break;
}
final servers = [?ref.watch(ClientStateController.provider)?.userId]
.toIList()
.addAll(powerLevelUsers)
.addAll(joinedMembers)
.map((userId) => userId.substring(userId.indexOf(":") + 1))
.whereNoDuplicates()
.take(5)
.toISet();
return servers.isEmpty
? ""