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:twonly/src/database/tables/messages_table.dart';
import 'package:twonly/src/utils/misc.dart';
Map<String, Color> 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 {

View file

@ -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<Uint8List>? removeLastXBytes(Uint8List original, int count) {
final lastXBytes = original.sublist(original.length - count);
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) {
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),

View file

@ -80,7 +80,6 @@ class _MessageSendStateIconState extends State<MessageSendStateIcon> {
List<Widget> icons = [];
String text = "";
Color twonlyColor = Theme.of(context).colorScheme.primary;
HashSet<MessageKind> kindsAlreadyShown = HashSet();
for (final message in widget.messages) {
@ -92,15 +91,14 @@ class _MessageSendStateIconState extends State<MessageSendStateIcon> {
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();

View file

@ -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<SettingsChangeProvider>().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()],