This commit is contained in:
otsmr 2025-04-25 00:47:18 +02:00
parent 53ccb325b5
commit 6e4a1d0624
5 changed files with 23 additions and 27 deletions

View file

@ -1,26 +1,21 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:twonly/src/database/tables/messages_table.dart'; import 'package:twonly/src/database/tables/messages_table.dart';
import 'package:twonly/src/utils/misc.dart';
Map<String, Color> messageKindColors = { Color getMessageColorFromType(MessageContent content, BuildContext context) {
"video": Colors.deepPurple,
"text": Colors.lightBlue,
"image": Color.fromARGB(255, 214, 47, 47),
};
Color getMessageColorFromType(MessageContent content, Color primary) {
Color color; Color color;
if (content is TextMessageContent || content is StoredMediaFileContent) { if (content is TextMessageContent || content is StoredMediaFileContent) {
color = messageKindColors["text"]!; color = isDarkMode(context) ? Colors.white : Colors.black;
} else { } else {
if (content is MediaMessageContent) { if (content is MediaMessageContent) {
if (content.isRealTwonly) { if (content.isRealTwonly) {
color = primary; color = context.color.primary;
} else { } else {
if (content.isVideo) { if (content.isVideo) {
color = messageKindColors["video"]!; color = const Color.fromARGB(255, 240, 243, 33);
} else { } else {
color = messageKindColors["image"]!; color = Colors.deepOrange;
} }
} }
} else { } else {

View file

@ -13,6 +13,7 @@ import 'package:provider/provider.dart';
import 'package:twonly/src/database/twonly_database.dart'; import 'package:twonly/src/database/twonly_database.dart';
import 'package:twonly/src/model/protobuf/api/error.pb.dart'; import 'package:twonly/src/model/protobuf/api/error.pb.dart';
import 'package:twonly/src/localization/generated/app_localizations.dart'; import 'package:twonly/src/localization/generated/app_localizations.dart';
import 'package:twonly/src/providers/settings_change_provider.dart';
extension ShortCutsExtension on BuildContext { extension ShortCutsExtension on BuildContext {
AppLocalizations get lang => AppLocalizations.of(this)!; AppLocalizations get lang => AppLocalizations.of(this)!;
@ -202,3 +203,13 @@ List<Uint8List>? removeLastXBytes(Uint8List original, int count) {
final lastXBytes = original.sublist(original.length - count); final lastXBytes = original.sublist(original.length - count);
return [newList, lastXBytes]; return [newList, lastXBytes];
} }
bool isDarkMode(BuildContext context) {
ThemeMode? selectedTheme = context.read<SettingsChangeProvider>().themeMode;
bool isDarkMode =
MediaQuery.of(context).platformBrightness == Brightness.dark;
return selectedTheme == ThemeMode.dark ||
(selectedTheme == ThemeMode.system && isDarkMode);
}

View file

@ -215,7 +215,7 @@ class ChatListEntry extends StatelessWidget {
} else if (content is MediaMessageContent) { } else if (content is MediaMessageContent) {
Color color = getMessageColorFromType( Color color = getMessageColorFromType(
content, content,
Theme.of(context).colorScheme.primary, context,
); );
child = GestureDetector( child = GestureDetector(
@ -259,7 +259,8 @@ class ChatListEntry extends StatelessWidget {
width: 150, width: 150,
decoration: BoxDecoration( decoration: BoxDecoration(
border: Border.all( border: Border.all(
color: messageKindColors["text"]!, color:
getMessageColorFromType(TextMessageContent(text: ""), context),
width: 1.0, width: 1.0,
), ),
borderRadius: BorderRadius.circular(12.0), borderRadius: BorderRadius.circular(12.0),

View file

@ -80,7 +80,6 @@ class _MessageSendStateIconState extends State<MessageSendStateIcon> {
List<Widget> icons = []; List<Widget> icons = [];
String text = ""; String text = "";
Color twonlyColor = Theme.of(context).colorScheme.primary;
HashSet<MessageKind> kindsAlreadyShown = HashSet(); HashSet<MessageKind> kindsAlreadyShown = HashSet();
for (final message in widget.messages) { for (final message in widget.messages) {
@ -92,15 +91,14 @@ class _MessageSendStateIconState extends State<MessageSendStateIcon> {
late Color color; late Color color;
if (message.contentJson == null) { if (message.contentJson == null) {
color = color = getMessageColorFromType(TextMessageContent(text: ""), context);
getMessageColorFromType(TextMessageContent(text: ""), twonlyColor);
} else { } else {
MessageContent? content = MessageContent.fromJson( MessageContent? content = MessageContent.fromJson(
message.kind, message.kind,
jsonDecode(message.contentJson!), jsonDecode(message.contentJson!),
); );
if (content == null) continue; if (content == null) continue;
color = getMessageColorFromType(content, twonlyColor); color = getMessageColorFromType(content, context);
} }
Widget icon = Placeholder(); Widget icon = Placeholder();

View file

@ -2,10 +2,8 @@ import 'dart:math';
import 'package:avatar_maker/avatar_maker.dart'; import 'package:avatar_maker/avatar_maker.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.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/model/json/userdata.dart';
import 'package:twonly/src/providers/api/api.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:twonly/src/utils/misc.dart';
import "package:get/get.dart"; import "package:get/get.dart";
import 'package:twonly/src/utils/storage.dart'; import 'package:twonly/src/utils/storage.dart';
@ -29,14 +27,7 @@ class ModifyAvatar extends StatelessWidget {
} }
AvatarMakerThemeData getAvatarMakerTheme(BuildContext context) { AvatarMakerThemeData getAvatarMakerTheme(BuildContext context) {
ThemeMode? selectedTheme = if (isDarkMode(context)) {
context.watch<SettingsChangeProvider>().themeMode;
bool isDarkMode =
MediaQuery.of(context).platformBrightness == Brightness.dark;
if (selectedTheme == ThemeMode.dark ||
(selectedTheme == ThemeMode.system && isDarkMode)) {
return AvatarMakerThemeData( return AvatarMakerThemeData(
boxDecoration: BoxDecoration( boxDecoration: BoxDecoration(
boxShadow: [BoxShadow()], boxShadow: [BoxShadow()],