diff --git a/assets/discord.png b/assets/discord.png new file mode 100644 index 000000000..4267d2737 Binary files /dev/null and b/assets/discord.png differ diff --git a/assets/linkedin.png b/assets/linkedin.png new file mode 100644 index 000000000..9d9d42142 Binary files /dev/null and b/assets/linkedin.png differ diff --git a/assets/signal.png b/assets/signal.png new file mode 100644 index 000000000..1a3647ef1 Binary files /dev/null and b/assets/signal.png differ diff --git a/lib/config/themes.dart b/lib/config/themes.dart index cb33a76c8..63c920242 100644 --- a/lib/config/themes.dart +++ b/lib/config/themes.dart @@ -26,6 +26,9 @@ abstract class FluffyThemes { static const Color facebookColor = Color(0xFF00B2FF); static const Color instagramColor = Color(0xFFE1306C); static const Color whatsAppColor = Color(0xFF25D366); + static const Color linkedinColor = Color(0xFF0077B5); + static const Color dicordColor = Color(0xFF7289DA); + static const Color signalColor = Color(0xFF3A76F0); static var fallbackTextTheme = const TextTheme( bodyLarge: fallbackTextStyle, diff --git a/lib/pages/chat_list/chat_list_item.dart b/lib/pages/chat_list/chat_list_item.dart index 069c121a8..b927d4480 100644 --- a/lib/pages/chat_list/chat_list_item.dart +++ b/lib/pages/chat_list/chat_list_item.dart @@ -92,6 +92,18 @@ class ChatListItem extends StatelessWidget { return participantsIds.any((id) => id.contains('@whatsapp')); } + bool containsLinkedin(List participantsIds) { + return participantsIds.any((id) => id.contains('@linkedin')); + } + + bool containsDiscord(List participantsIds) { + return participantsIds.any((id) => id.contains('@discord')); + } + + bool containsSignal(List participantsIds) { + return participantsIds.any((id) => id.contains('@signal')); + } + void removeFacebookTag() { if (displayname.contains('(FB)')) { displayname = displayname.replaceAll('(FB)', ''); // Delete (FB) @@ -110,6 +122,29 @@ class ChatListItem extends StatelessWidget { } } + void removeLinkedinTag() { + if (displayname.contains('(Linkedin)')) { + displayname = + displayname.replaceAll('(Linkedin)', ''); // Delete (Linkedin) + } + } + + // It's the only bridge that doesn't display the social network source in the name. + // But I'm putting this function here just in case, for the future. + void removeDiscordTag() { + if (displayname.contains('(Discord)')) { + displayname = + displayname.replaceAll('(Discord)', ''); // Delete (Discord) + } + } + + void removeSignalTag() { + if (displayname.contains('(Signal)')) { + displayname = + displayname.replaceAll('(Signal)', ''); // Delete (Linkedin) + } + } + // Condition for verifying the presence of social networks in participants ID Future> loadRoomInfo() async { List participants = room.getParticipants(); @@ -141,6 +176,30 @@ class ChatListItem extends StatelessWidget { filterQuality: FilterQuality.high, ); removeWhatsAppTag(); + } else if (containsLinkedin(participantsIds)) { + networkColor = FluffyThemes.linkedinColor; + networkImage = Image.asset( + 'assets/linkedin.png', + color: networkColor, + filterQuality: FilterQuality.high, + ); + removeLinkedinTag(); + } else if (containsDiscord(participantsIds)) { + networkColor = FluffyThemes.dicordColor; + networkImage = Image.asset( + 'assets/discord.png', + color: networkColor, + filterQuality: FilterQuality.high, + ); + removeDiscordTag(); + } else if (containsSignal(participantsIds)) { + networkColor = FluffyThemes.signalColor; + networkImage = Image.asset( + 'assets/signal.png', + color: networkColor, + filterQuality: FilterQuality.high, + ); + removeSignalTag(); } return [networkColor, networkImage];