diff --git a/lib/src/model/json/message.dart b/lib/src/model/json/message.dart index 175d281..abdcd87 100644 --- a/lib/src/model/json/message.dart +++ b/lib/src/model/json/message.dart @@ -1,26 +1,21 @@ import 'package:flutter/material.dart'; import 'package:twonly/src/database/tables/messages_table.dart'; +import 'package:twonly/src/utils/misc.dart'; -Map messageKindColors = { - "video": Colors.deepPurple, - "text": Colors.lightBlue, - "image": Color.fromARGB(255, 214, 47, 47), -}; - -Color getMessageColorFromType(MessageContent content, Color primary) { +Color getMessageColorFromType(MessageContent content, BuildContext context) { Color color; if (content is TextMessageContent || content is StoredMediaFileContent) { - color = messageKindColors["text"]!; + color = isDarkMode(context) ? Colors.white : Colors.black; } else { if (content is MediaMessageContent) { if (content.isRealTwonly) { - color = primary; + color = context.color.primary; } else { if (content.isVideo) { - color = messageKindColors["video"]!; + color = const Color.fromARGB(255, 240, 243, 33); } else { - color = messageKindColors["image"]!; + color = Colors.deepOrange; } } } else { diff --git a/lib/src/utils/misc.dart b/lib/src/utils/misc.dart index 681996c..b7401f8 100644 --- a/lib/src/utils/misc.dart +++ b/lib/src/utils/misc.dart @@ -13,6 +13,7 @@ import 'package:provider/provider.dart'; import 'package:twonly/src/database/twonly_database.dart'; import 'package:twonly/src/model/protobuf/api/error.pb.dart'; import 'package:twonly/src/localization/generated/app_localizations.dart'; +import 'package:twonly/src/providers/settings_change_provider.dart'; extension ShortCutsExtension on BuildContext { AppLocalizations get lang => AppLocalizations.of(this)!; @@ -202,3 +203,13 @@ List? removeLastXBytes(Uint8List original, int count) { final lastXBytes = original.sublist(original.length - count); return [newList, lastXBytes]; } + +bool isDarkMode(BuildContext context) { + ThemeMode? selectedTheme = context.read().themeMode; + + bool isDarkMode = + MediaQuery.of(context).platformBrightness == Brightness.dark; + + return selectedTheme == ThemeMode.dark || + (selectedTheme == ThemeMode.system && isDarkMode); +} diff --git a/lib/src/views/chats/chat_item_details_view.dart b/lib/src/views/chats/chat_item_details_view.dart index 0c8d864..69a8112 100644 --- a/lib/src/views/chats/chat_item_details_view.dart +++ b/lib/src/views/chats/chat_item_details_view.dart @@ -215,7 +215,7 @@ class ChatListEntry extends StatelessWidget { } else if (content is MediaMessageContent) { Color color = getMessageColorFromType( content, - Theme.of(context).colorScheme.primary, + context, ); child = GestureDetector( @@ -259,7 +259,8 @@ class ChatListEntry extends StatelessWidget { width: 150, decoration: BoxDecoration( border: Border.all( - color: messageKindColors["text"]!, + color: + getMessageColorFromType(TextMessageContent(text: ""), context), width: 1.0, ), borderRadius: BorderRadius.circular(12.0), diff --git a/lib/src/views/components/message_send_state_icon.dart b/lib/src/views/components/message_send_state_icon.dart index b5d33d9..e442cd0 100644 --- a/lib/src/views/components/message_send_state_icon.dart +++ b/lib/src/views/components/message_send_state_icon.dart @@ -80,7 +80,6 @@ class _MessageSendStateIconState extends State { List icons = []; String text = ""; - Color twonlyColor = Theme.of(context).colorScheme.primary; HashSet kindsAlreadyShown = HashSet(); for (final message in widget.messages) { @@ -92,15 +91,14 @@ class _MessageSendStateIconState extends State { late Color color; if (message.contentJson == null) { - color = - getMessageColorFromType(TextMessageContent(text: ""), twonlyColor); + color = getMessageColorFromType(TextMessageContent(text: ""), context); } else { MessageContent? content = MessageContent.fromJson( message.kind, jsonDecode(message.contentJson!), ); if (content == null) continue; - color = getMessageColorFromType(content, twonlyColor); + color = getMessageColorFromType(content, context); } Widget icon = Placeholder(); diff --git a/lib/src/views/settings/profile/modify_avatar_view.dart b/lib/src/views/settings/profile/modify_avatar_view.dart index a784e57..8a9a3c0 100644 --- a/lib/src/views/settings/profile/modify_avatar_view.dart +++ b/lib/src/views/settings/profile/modify_avatar_view.dart @@ -2,10 +2,8 @@ import 'dart:math'; import 'package:avatar_maker/avatar_maker.dart'; import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; -import 'package:provider/provider.dart'; import 'package:twonly/src/model/json/userdata.dart'; import 'package:twonly/src/providers/api/api.dart'; -import 'package:twonly/src/providers/settings_change_provider.dart'; import 'package:twonly/src/utils/misc.dart'; import "package:get/get.dart"; import 'package:twonly/src/utils/storage.dart'; @@ -29,14 +27,7 @@ class ModifyAvatar extends StatelessWidget { } AvatarMakerThemeData getAvatarMakerTheme(BuildContext context) { - ThemeMode? selectedTheme = - context.watch().themeMode; - - bool isDarkMode = - MediaQuery.of(context).platformBrightness == Brightness.dark; - - if (selectedTheme == ThemeMode.dark || - (selectedTheme == ThemeMode.system && isDarkMode)) { + if (isDarkMode(context)) { return AvatarMakerThemeData( boxDecoration: BoxDecoration( boxShadow: [BoxShadow()],