renderForRoomId method

dynamic renderForRoomId(
  1. dynamic context,
  2. dynamic ref,
  3. String roomId,
  4. 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,
        );
}