From d81d2f63cd8cffda808df3e021e038649199f807 Mon Sep 17 00:00:00 2001 From: vishtree Date: Sun, 19 Apr 2020 17:25:21 +0200 Subject: [PATCH] Adding support for one-on-one conversation to channel preview --- lib/src/channel_image.dart | 13 +++++++++++-- lib/src/channel_name.dart | 15 +++++++++++---- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/lib/src/channel_image.dart b/lib/src/channel_image.dart index 8f624bf0..0cc4c16b 100644 --- a/lib/src/channel_image.dart +++ b/lib/src/channel_image.dart @@ -57,11 +57,20 @@ class ChannelImage extends StatelessWidget { @override Widget build(BuildContext context) { + final client = StreamChat.of(context); final channel = this.channel ?? StreamChannel.of(context).channel; return StreamBuilder>( stream: channel.extraDataStream, initialData: channel.extraData, builder: (context, snapshot) { + var image = ''; + if (snapshot.data?.containsKey('image') ?? false) { + image = snapshot.data['image']; + } else if (channel.state.members.length == 2) { + final otherMemberIndex = channel.state.members[0].user.id == client.user.id ? 1 : 0; + image = channel.state.members[otherMemberIndex].user.image; + } + return ClipRRect( borderRadius: StreamChatTheme.of(context) .channelPreviewTheme @@ -75,9 +84,9 @@ class ChannelImage extends StatelessWidget { decoration: BoxDecoration( color: StreamChatTheme.of(context).accentColor, ), - child: snapshot.data?.containsKey('image') ?? false + child: image != '' ? CachedNetworkImage( - imageUrl: snapshot.data['image'], + imageUrl: image, errorWidget: (_, __, ___) { return Center( child: Text( diff --git a/lib/src/channel_name.dart b/lib/src/channel_name.dart index f2f27244..137fdc6b 100644 --- a/lib/src/channel_name.dart +++ b/lib/src/channel_name.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:stream_chat/stream_chat.dart'; +import '../stream_chat_flutter.dart'; import 'stream_channel.dart'; /// It shows the current [Channel] name using a [Text] widget. @@ -21,15 +22,21 @@ class ChannelName extends StatelessWidget { @override Widget build(BuildContext context) { + final client = StreamChat.of(context); final channel = this.channel ?? StreamChannel.of(context).channel; return StreamBuilder>( stream: channel.extraDataStream, initialData: channel.extraData, builder: (context, snapshot) { - return Text( - snapshot.data != null - ? (snapshot.data['name'] ?? channel.cid) - : channel.cid, + var title; + if (snapshot.data['name'] == null && channel.state.members.length == 2) { + final otherMemberIndex = channel.state.members[0].user.id == client.user.id ? 1 : 0; + title = channel.state.members[otherMemberIndex].user.name; + } else { + title = snapshot.data['name'] ?? channel.id; + } + + return Text(title, style: textStyle, ); },