refactor(ui): Replace channel.extraDataStream with channel.nameStream, channel.imageStream in ChannelName and ChannelAvatar widget respectively.
Signed-off-by: xsahil03x <[email protected]>
This commit is contained in:
@@ -90,12 +90,11 @@ class ChannelAvatar extends StatelessWidget {
|
|||||||
final colorTheme = chatThemeData.colorTheme;
|
final colorTheme = chatThemeData.colorTheme;
|
||||||
final previewTheme = chatThemeData.channelPreviewTheme.avatarTheme;
|
final previewTheme = chatThemeData.channelPreviewTheme.avatarTheme;
|
||||||
|
|
||||||
return BetterStreamBuilder<Map<String, dynamic>>(
|
return StreamBuilder<String?>(
|
||||||
stream: channel.extraDataStream,
|
stream: channel.imageStream,
|
||||||
initialData: channel.extraData,
|
initialData: channel.image,
|
||||||
builder: (context, extraData) {
|
builder: (context, snapshot) {
|
||||||
final channelImage = extraData['image'];
|
final channelImage = snapshot.data;
|
||||||
|
|
||||||
if (channelImage != null) {
|
if (channelImage != null) {
|
||||||
Widget child = ClipRRect(
|
Widget child = ClipRRect(
|
||||||
borderRadius: borderRadius ?? previewTheme?.borderRadius,
|
borderRadius: borderRadius ?? previewTheme?.borderRadius,
|
||||||
@@ -108,7 +107,7 @@ class ChannelAvatar extends StatelessWidget {
|
|||||||
imageUrl: channelImage,
|
imageUrl: channelImage,
|
||||||
errorWidget: (_, __, ___) => Center(
|
errorWidget: (_, __, ___) => Center(
|
||||||
child: Text(
|
child: Text(
|
||||||
extraData['name']?[0] ?? '',
|
channel.name?[0] ?? '',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: colorTheme.barsBg,
|
color: colorTheme.barsBg,
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.bold,
|
||||||
|
|||||||
@@ -27,40 +27,40 @@ class ChannelName extends StatelessWidget {
|
|||||||
final client = StreamChat.of(context);
|
final client = StreamChat.of(context);
|
||||||
final channel = StreamChannel.of(context).channel;
|
final channel = StreamChannel.of(context).channel;
|
||||||
|
|
||||||
return BetterStreamBuilder<Map<String, Object?>>(
|
assert(channel.state != null, 'Channel ${channel.id} is not initialized');
|
||||||
stream: channel.extraDataStream,
|
|
||||||
initialData: channel.extraData,
|
return StreamBuilder<String?>(
|
||||||
builder: (context, data) => _buildName(
|
stream: channel.nameStream,
|
||||||
data,
|
initialData: channel.name,
|
||||||
channel.state?.members,
|
builder: (context, snapshot) => _buildName(
|
||||||
|
snapshot.data,
|
||||||
|
channel.state!.members,
|
||||||
client,
|
client,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildName(
|
Widget _buildName(
|
||||||
Map<String, dynamic> extraData,
|
String? name,
|
||||||
List<Member>? members,
|
List<Member> members,
|
||||||
StreamChatState client,
|
StreamChatState client,
|
||||||
) =>
|
) =>
|
||||||
LayoutBuilder(
|
LayoutBuilder(
|
||||||
builder: (context, constraints) {
|
builder: (context, constraints) {
|
||||||
var title = context.translations.noTitleText;
|
var title = name;
|
||||||
if (extraData['name'] != null) {
|
if (title == null && members.isNotEmpty) {
|
||||||
title = extraData['name'];
|
|
||||||
} else {
|
|
||||||
final otherMembers = members
|
final otherMembers = members
|
||||||
?.where((member) => member.userId != client.currentUser!.id);
|
.where((member) => member.userId != client.currentUser!.id);
|
||||||
if (otherMembers?.length == 1) {
|
if (otherMembers.length == 1) {
|
||||||
if (otherMembers!.first.user != null) {
|
if (otherMembers.first.user != null) {
|
||||||
title = otherMembers.first.user!.name;
|
title = otherMembers.first.user!.name;
|
||||||
}
|
}
|
||||||
} else if (otherMembers?.isNotEmpty == true) {
|
} else if (otherMembers.isNotEmpty == true) {
|
||||||
final maxWidth = constraints.maxWidth;
|
final maxWidth = constraints.maxWidth;
|
||||||
final maxChars = maxWidth / (textStyle?.fontSize ?? 1);
|
final maxChars = maxWidth / (textStyle?.fontSize ?? 1);
|
||||||
var currentChars = 0;
|
var currentChars = 0;
|
||||||
final currentMembers = <Member>[];
|
final currentMembers = <Member>[];
|
||||||
otherMembers!.forEach((element) {
|
otherMembers.forEach((element) {
|
||||||
final newLength =
|
final newLength =
|
||||||
currentChars + (element.user?.name.length ?? 0);
|
currentChars + (element.user?.name.length ?? 0);
|
||||||
if (newLength < maxChars) {
|
if (newLength < maxChars) {
|
||||||
@@ -77,7 +77,7 @@ class ChannelName extends StatelessWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return Text(
|
return Text(
|
||||||
title,
|
title ?? context.translations.noTitleText,
|
||||||
style: textStyle,
|
style: textStyle,
|
||||||
overflow: textOverflow,
|
overflow: textOverflow,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -26,12 +26,11 @@ void main() {
|
|||||||
when(() => channel.client).thenReturn(client);
|
when(() => channel.client).thenReturn(client);
|
||||||
when(() => channel.isMuted).thenReturn(false);
|
when(() => channel.isMuted).thenReturn(false);
|
||||||
when(() => channel.isMutedStream).thenAnswer((i) => Stream.value(false));
|
when(() => channel.isMutedStream).thenAnswer((i) => Stream.value(false));
|
||||||
when(() => channel.extraDataStream).thenAnswer((i) => Stream.value({
|
when(() => channel.nameStream).thenAnswer((_) => Stream.value('test'));
|
||||||
'name': 'test',
|
when(() => channel.name).thenReturn('test');
|
||||||
}));
|
when(() => channel.imageStream)
|
||||||
when(() => channel.extraData).thenReturn({
|
.thenAnswer((i) => Stream.value('https://bit.ly/321RmWb'));
|
||||||
'name': 'test',
|
when(() => channel.image).thenReturn('https://bit.ly/321RmWb');
|
||||||
});
|
|
||||||
when(() => channelState.unreadCount).thenReturn(1);
|
when(() => channelState.unreadCount).thenReturn(1);
|
||||||
when(() => client.wsConnectionStatusStream)
|
when(() => client.wsConnectionStatusStream)
|
||||||
.thenAnswer((_) => Stream.value(ConnectionStatus.connected));
|
.thenAnswer((_) => Stream.value(ConnectionStatus.connected));
|
||||||
@@ -91,12 +90,11 @@ void main() {
|
|||||||
when(() => channel.client).thenReturn(client);
|
when(() => channel.client).thenReturn(client);
|
||||||
when(() => channel.isMuted).thenReturn(false);
|
when(() => channel.isMuted).thenReturn(false);
|
||||||
when(() => channel.isMutedStream).thenAnswer((i) => Stream.value(false));
|
when(() => channel.isMutedStream).thenAnswer((i) => Stream.value(false));
|
||||||
when(() => channel.extraDataStream).thenAnswer((i) => Stream.value({
|
when(() => channel.nameStream).thenAnswer((_) => Stream.value('test'));
|
||||||
'name': 'test',
|
when(() => channel.name).thenReturn('test');
|
||||||
}));
|
when(() => channel.imageStream)
|
||||||
when(() => channel.extraData).thenReturn({
|
.thenAnswer((i) => Stream.value('https://bit.ly/321RmWb'));
|
||||||
'name': 'test',
|
when(() => channel.image).thenReturn('https://bit.ly/321RmWb');
|
||||||
});
|
|
||||||
when(() => channelState.unreadCount).thenReturn(1);
|
when(() => channelState.unreadCount).thenReturn(1);
|
||||||
when(() => channelState.unreadCountStream)
|
when(() => channelState.unreadCountStream)
|
||||||
.thenAnswer((i) => Stream.value(1));
|
.thenAnswer((i) => Stream.value(1));
|
||||||
@@ -159,12 +157,11 @@ void main() {
|
|||||||
when(() => channel.client).thenReturn(client);
|
when(() => channel.client).thenReturn(client);
|
||||||
when(() => channel.isMuted).thenReturn(false);
|
when(() => channel.isMuted).thenReturn(false);
|
||||||
when(() => channel.isMutedStream).thenAnswer((i) => Stream.value(false));
|
when(() => channel.isMutedStream).thenAnswer((i) => Stream.value(false));
|
||||||
when(() => channel.extraDataStream).thenAnswer((i) => Stream.value({
|
when(() => channel.nameStream).thenAnswer((_) => Stream.value('test'));
|
||||||
'name': 'test',
|
when(() => channel.name).thenReturn('test');
|
||||||
}));
|
when(() => channel.imageStream)
|
||||||
when(() => channel.extraData).thenReturn({
|
.thenAnswer((i) => Stream.value('https://bit.ly/321RmWb'));
|
||||||
'name': 'test',
|
when(() => channel.image).thenReturn('https://bit.ly/321RmWb');
|
||||||
});
|
|
||||||
when(() => channelState.unreadCount).thenReturn(1);
|
when(() => channelState.unreadCount).thenReturn(1);
|
||||||
when(() => channelState.unreadCountStream)
|
when(() => channelState.unreadCountStream)
|
||||||
.thenAnswer((i) => Stream.value(1));
|
.thenAnswer((i) => Stream.value(1));
|
||||||
@@ -305,12 +302,11 @@ void main() {
|
|||||||
when(() => channel.client).thenReturn(client);
|
when(() => channel.client).thenReturn(client);
|
||||||
when(() => channel.isMuted).thenReturn(false);
|
when(() => channel.isMuted).thenReturn(false);
|
||||||
when(() => channel.isMutedStream).thenAnswer((i) => Stream.value(false));
|
when(() => channel.isMutedStream).thenAnswer((i) => Stream.value(false));
|
||||||
when(() => channel.extraDataStream).thenAnswer((i) => Stream.value({
|
when(() => channel.nameStream).thenAnswer((_) => Stream.value('test'));
|
||||||
'name': 'test',
|
when(() => channel.name).thenReturn('test');
|
||||||
}));
|
when(() => channel.imageStream)
|
||||||
when(() => channel.extraData).thenReturn({
|
.thenAnswer((i) => Stream.value('https://bit.ly/321RmWb'));
|
||||||
'name': 'test',
|
when(() => channel.image).thenReturn('https://bit.ly/321RmWb');
|
||||||
});
|
|
||||||
when(() => channelState.unreadCount).thenReturn(1);
|
when(() => channelState.unreadCount).thenReturn(1);
|
||||||
when(() => channelState.unreadCountStream)
|
when(() => channelState.unreadCountStream)
|
||||||
.thenAnswer((i) => Stream.value(1));
|
.thenAnswer((i) => Stream.value(1));
|
||||||
@@ -373,12 +369,11 @@ void main() {
|
|||||||
when(() => channel.client).thenReturn(client);
|
when(() => channel.client).thenReturn(client);
|
||||||
when(() => channel.isMuted).thenReturn(false);
|
when(() => channel.isMuted).thenReturn(false);
|
||||||
when(() => channel.isMutedStream).thenAnswer((i) => Stream.value(false));
|
when(() => channel.isMutedStream).thenAnswer((i) => Stream.value(false));
|
||||||
when(() => channel.extraDataStream).thenAnswer((i) => Stream.value({
|
when(() => channel.nameStream).thenAnswer((_) => Stream.value('test'));
|
||||||
'name': 'test',
|
when(() => channel.name).thenReturn('test');
|
||||||
}));
|
when(() => channel.imageStream)
|
||||||
when(() => channel.extraData).thenReturn({
|
.thenAnswer((i) => Stream.value('https://bit.ly/321RmWb'));
|
||||||
'name': 'test',
|
when(() => channel.image).thenReturn('https://bit.ly/321RmWb');
|
||||||
});
|
|
||||||
when(() => channelState.unreadCount).thenReturn(1);
|
when(() => channelState.unreadCount).thenReturn(1);
|
||||||
when(() => channelState.unreadCountStream)
|
when(() => channelState.unreadCountStream)
|
||||||
.thenAnswer((i) => Stream.value(1));
|
.thenAnswer((i) => Stream.value(1));
|
||||||
|
|||||||
@@ -20,14 +20,11 @@ void main() {
|
|||||||
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
|
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
|
||||||
when(() => channel.state).thenReturn(channelState);
|
when(() => channel.state).thenReturn(channelState);
|
||||||
when(() => channel.client).thenReturn(client);
|
when(() => channel.client).thenReturn(client);
|
||||||
when(() => channel.extraDataStream).thenAnswer((i) => Stream.value({
|
when(() => channel.nameStream).thenAnswer((_) => Stream.value('test'));
|
||||||
'name': 'test',
|
when(() => channel.name).thenReturn('test');
|
||||||
'image': 'imagetest',
|
when(() => channel.imageStream)
|
||||||
}));
|
.thenAnswer((i) => Stream.value('https://bit.ly/321RmWb'));
|
||||||
when(() => channel.extraData).thenReturn({
|
when(() => channel.image).thenReturn('https://bit.ly/321RmWb');
|
||||||
'name': 'test',
|
|
||||||
'image': 'imagetest',
|
|
||||||
});
|
|
||||||
|
|
||||||
await tester.pumpWidget(MaterialApp(
|
await tester.pumpWidget(MaterialApp(
|
||||||
home: StreamChat(
|
home: StreamChat(
|
||||||
@@ -43,7 +40,7 @@ void main() {
|
|||||||
|
|
||||||
final image =
|
final image =
|
||||||
tester.widget<CachedNetworkImage>(find.byType(CachedNetworkImage));
|
tester.widget<CachedNetworkImage>(find.byType(CachedNetworkImage));
|
||||||
expect(image.imageUrl, 'imagetest');
|
expect(image.imageUrl, 'https://bit.ly/321RmWb');
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -59,12 +56,10 @@ void main() {
|
|||||||
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
|
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
|
||||||
when(() => channel.state).thenReturn(channelState);
|
when(() => channel.state).thenReturn(channelState);
|
||||||
when(() => channel.client).thenReturn(client);
|
when(() => channel.client).thenReturn(client);
|
||||||
when(() => channel.extraDataStream).thenAnswer((i) => Stream.value({
|
when(() => channel.nameStream).thenAnswer((_) => Stream.value('test'));
|
||||||
'name': 'test',
|
when(() => channel.name).thenReturn('test');
|
||||||
}));
|
when(() => channel.imageStream).thenAnswer((i) => Stream.value(null));
|
||||||
when(() => channel.extraData).thenReturn({
|
when(() => channel.image).thenReturn(null);
|
||||||
'name': 'test',
|
|
||||||
});
|
|
||||||
when(() => channelState.membersStream).thenAnswer((i) => Stream.value([
|
when(() => channelState.membersStream).thenAnswer((i) => Stream.value([
|
||||||
Member(
|
Member(
|
||||||
userId: 'user-id',
|
userId: 'user-id',
|
||||||
@@ -132,12 +127,9 @@ void main() {
|
|||||||
when(() => clientState.currentUser).thenReturn(currentUser);
|
when(() => clientState.currentUser).thenReturn(currentUser);
|
||||||
when(() => channel.state).thenReturn(channelState);
|
when(() => channel.state).thenReturn(channelState);
|
||||||
when(() => channel.client).thenReturn(client);
|
when(() => channel.client).thenReturn(client);
|
||||||
when(() => channel.extraDataStream).thenAnswer((i) => Stream.value({
|
when(() => channel.nameStream).thenAnswer((_) => Stream.value('test'));
|
||||||
'name': 'test',
|
when(() => channel.name).thenReturn('test');
|
||||||
}));
|
when(() => channel.imageStream).thenAnswer((i) => Stream.value(null));
|
||||||
when(() => channel.extraData).thenReturn({
|
|
||||||
'name': 'test',
|
|
||||||
});
|
|
||||||
final members = [
|
final members = [
|
||||||
Member(
|
Member(
|
||||||
userId: 'user-id',
|
userId: 'user-id',
|
||||||
@@ -198,14 +190,11 @@ void main() {
|
|||||||
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
|
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
|
||||||
when(() => channel.state).thenReturn(channelState);
|
when(() => channel.state).thenReturn(channelState);
|
||||||
when(() => channel.client).thenReturn(client);
|
when(() => channel.client).thenReturn(client);
|
||||||
when(() => channel.extraDataStream).thenAnswer((i) => Stream.value({
|
when(() => channel.nameStream).thenAnswer((_) => Stream.value('test'));
|
||||||
'name': 'test',
|
when(() => channel.name).thenReturn('test');
|
||||||
'image': 'imagetest',
|
when(() => channel.imageStream)
|
||||||
}));
|
.thenAnswer((i) => Stream.value('https://bit.ly/321RmWb'));
|
||||||
when(() => channel.extraData).thenReturn({
|
when(() => channel.image).thenReturn('https://bit.ly/321RmWb');
|
||||||
'name': 'test',
|
|
||||||
'image': 'imagetest',
|
|
||||||
});
|
|
||||||
|
|
||||||
await tester.pumpWidget(MaterialApp(
|
await tester.pumpWidget(MaterialApp(
|
||||||
home: StreamChat(
|
home: StreamChat(
|
||||||
|
|||||||
@@ -21,17 +21,13 @@ void main() {
|
|||||||
when(() => channel.state).thenReturn(channelState);
|
when(() => channel.state).thenReturn(channelState);
|
||||||
when(() => channel.client).thenReturn(client);
|
when(() => channel.client).thenReturn(client);
|
||||||
when(() => channel.isMuted).thenReturn(false);
|
when(() => channel.isMuted).thenReturn(false);
|
||||||
when(() => channel.isMutedStream).thenAnswer((i) => Stream.value(false));
|
when(() => channel.isMutedStream).thenAnswer((_) => Stream.value(false));
|
||||||
when(() => channel.extraDataStream).thenAnswer((i) => Stream.value({
|
when(() => channel.nameStream).thenAnswer((_) => Stream.value('test'));
|
||||||
'name': 'test',
|
when(() => channel.name).thenReturn('test');
|
||||||
}));
|
|
||||||
when(() => channel.extraData).thenReturn({
|
|
||||||
'name': 'test',
|
|
||||||
});
|
|
||||||
when(() => channelState.unreadCount).thenReturn(1);
|
when(() => channelState.unreadCount).thenReturn(1);
|
||||||
when(() => channelState.unreadCountStream)
|
when(() => channelState.unreadCountStream)
|
||||||
.thenAnswer((i) => Stream.value(1));
|
.thenAnswer((i) => Stream.value(1));
|
||||||
when(() => channelState.membersStream).thenAnswer((i) => Stream.value([
|
when(() => channelState.membersStream).thenAnswer((_) => Stream.value([
|
||||||
Member(
|
Member(
|
||||||
userId: 'user-id',
|
userId: 'user-id',
|
||||||
user: User(id: 'user-id'),
|
user: User(id: 'user-id'),
|
||||||
|
|||||||
@@ -26,12 +26,12 @@ void main() {
|
|||||||
when(() => channel.client).thenReturn(client);
|
when(() => channel.client).thenReturn(client);
|
||||||
when(() => channel.isMuted).thenReturn(false);
|
when(() => channel.isMuted).thenReturn(false);
|
||||||
when(() => channel.isMutedStream).thenAnswer((i) => Stream.value(false));
|
when(() => channel.isMutedStream).thenAnswer((i) => Stream.value(false));
|
||||||
when(() => channel.extraDataStream).thenAnswer((i) => Stream.value({
|
when(() => channel.nameStream)
|
||||||
'name': 'test name',
|
.thenAnswer((i) => Stream.value('test name'));
|
||||||
}));
|
when(() => channel.name).thenReturn('test name');
|
||||||
when(() => channel.extraData).thenReturn({
|
when(() => channel.imageStream)
|
||||||
'name': 'test name',
|
.thenAnswer((i) => Stream.value('https://bit.ly/321RmWb'));
|
||||||
});
|
when(() => channel.image).thenReturn('https://bit.ly/321RmWb');
|
||||||
when(() => clientState.channels).thenReturn({
|
when(() => clientState.channels).thenReturn({
|
||||||
channel.cid!: channel,
|
channel.cid!: channel,
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -22,12 +22,8 @@ void main() {
|
|||||||
when(() => channel.client).thenReturn(client);
|
when(() => channel.client).thenReturn(client);
|
||||||
when(() => channel.isMuted).thenReturn(false);
|
when(() => channel.isMuted).thenReturn(false);
|
||||||
when(() => channel.isMutedStream).thenAnswer((i) => Stream.value(false));
|
when(() => channel.isMutedStream).thenAnswer((i) => Stream.value(false));
|
||||||
when(() => channel.extraDataStream).thenAnswer((i) => Stream.value({
|
when(() => channel.name).thenReturn('test');
|
||||||
'name': 'test',
|
when(() => channel.nameStream).thenAnswer((i) => Stream.value('test'));
|
||||||
}));
|
|
||||||
when(() => channel.extraData).thenReturn({
|
|
||||||
'name': 'test',
|
|
||||||
});
|
|
||||||
when(() => channelState.unreadCount).thenReturn(1);
|
when(() => channelState.unreadCount).thenReturn(1);
|
||||||
when(() => channelState.unreadCountStream)
|
when(() => channelState.unreadCountStream)
|
||||||
.thenAnswer((i) => Stream.value(1));
|
.thenAnswer((i) => Stream.value(1));
|
||||||
|
|||||||
Reference in New Issue
Block a user