renderForRoomId method
dynamic
renderForRoomId( - dynamic context,
- dynamic ref,
- String roomId,
- List<String> servers,
)
Implementation
Widget renderForRoomId(
BuildContext context,
WidgetRef ref,
String roomId,
List<String> servers,
) {
final roomWatch = ref.watch(maybeRoomProvider(roomId));
if (roomWatch.valueOrNull == null) {
return Card(
child: ListTile(
onTap: () => onSelectedMatch(
context,
ref,
servers,
roomId: roomId,
),
title: Text(roomId),
subtitle: servers.isNotEmpty
? Text('${L10n.of(context).via} ${servers.join(', ')}')
: null,
trailing: OutlinedButton.icon(
onPressed: () => onSelectedMatch(
context,
ref,
servers,
roomId: roomId,
),
icon: const Icon(Atlas.entrance_thin),
label: Text(L10n.of(context).tryToJoin),
),
),
);
}
final room = roomWatch.value!;
if (room.isJoined()) {
return room.isSpace()
? renderRoomCard(
roomId,
onTap: () => context.pushNamed(
Routes.space.name,
pathParameters: {'spaceId': roomId},
),
)
: renderRoomCard(
roomId,
onTap: () => context.pushNamed(
Routes.chatroom.name,
pathParameters: {'roomId': roomId},
),
);
}
final trailing = noMemberButton(context, ref, room, roomId, servers);
return room.isSpace()
? renderRoomCard(
roomId,
trailing: trailing,
)
: renderRoomCard(
roomId,
trailing: trailing,
);
}