added option to choose more emoji reactions #55

Merged
MineTec merged 8 commits from develop-moreEmojiReactions into develop 2024-04-02 16:51:33 +00:00
4 changed files with 83 additions and 6 deletions

View File

@ -45,7 +45,7 @@ android {
applicationId "eu.mhsl.marianum.mobile.client"
// You can update the following values to match your application needs.
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
minSdkVersion 19
minSdkVersion 21
targetSdkVersion flutter.targetSdkVersion
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName

View File

@ -20,7 +20,7 @@ pluginManagement {
plugins {
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
id "com.android.application" version "7.3.0" apply false
id "org.jetbrains.kotlin.android" version "1.7.10" apply false
id "org.jetbrains.kotlin.android" version "1.8.10" apply false
}
include ":app"

View File

@ -1,5 +1,6 @@
import 'package:better_open_file/better_open_file.dart';
import 'package:bubble/bubble.dart';
import 'package:emoji_picker_flutter/emoji_picker_flutter.dart' as emojis;
import 'package:flowder/flowder.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
@ -49,6 +50,7 @@ class ChatBubble extends StatefulWidget {
}
class _ChatBubbleState extends State<ChatBubble> {
BubbleStyle getSystemStyle() {
return BubbleStyle(
color: AppTheme.isDarkMode(context) ? const Color(0xff182229) : Colors.white,
@ -184,7 +186,7 @@ class _ChatBubbleState extends State<ChatBubble> {
),
onLongPress: () {
showDialog(context: context, builder: (context) {
List<String> commonReactions = ['👍', '👎', '😆', '❤️', '👀', '🤔'];
List<String> commonReactions = ['👍', '👎', '😆', '❤️', '👀'];
bool canReact = widget.bubbleData.messageType == GetRoomResponseObjectMessageType.comment;
return SimpleDialog(
children: [
@ -210,18 +212,92 @@ class _ChatBubbleState extends State<ChatBubble> {
params: ReactMessageParams(e),
).run().then((value) => widget.refetch(renew: true));
},
child: Text(e)),
child: Text(e),
),
),
IconButton(
onPressed: () {
showDialog(context: context, builder: (context) {
return AlertDialog(
contentPadding: const EdgeInsets.all(15),
titlePadding: const EdgeInsets.only(left: 6, top: 15),
title: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
IconButton(
onPressed: () {
Navigator.of(context).pop();
},
icon: const Icon(Icons.arrow_back),
),
const SizedBox(width: 10),
const Text('Reagieren'),
],
),
Pupsi marked this conversation as resolved Outdated

hight und child müssen nicht angegeben werden

hight und child müssen nicht angegeben werden
content: SizedBox(
width: 256,
height: 270,
child: Column(
Pupsi marked this conversation as resolved
Review

wofür existiert diese column?

wofür existiert diese column?
children: [
emojis.EmojiPicker(
config: emojis.Config(
height: 256,
swapCategoryAndBottomBar: true,
emojiViewConfig: emojis.EmojiViewConfig(
Pupsi marked this conversation as resolved Outdated

ist onBackspacePressed nullable? Falls ja den parameter nicht angeben.

Ansonsten das null statement weg und die curly braces einfach leer lassen. In diesem Fall dürfen die curlybraces auch in der selben Zeile stehen "{ }"

ist onBackspacePressed nullable? Falls ja den parameter nicht angeben. Ansonsten das null statement weg und die curly braces einfach leer lassen. In diesem Fall dürfen die curlybraces auch in der selben Zeile stehen "{ }"
backgroundColor: Theme.of(context).canvasColor,
recentsLimit: 67,
emojiSizeMax: 25,
noRecents: const Text('Keine zuletzt verwendeten Emojis'),
columns: 7,
),
bottomActionBarConfig: const emojis.BottomActionBarConfig(
enabled: false,
),
categoryViewConfig: emojis.CategoryViewConfig(
backgroundColor: Theme.of(context).hoverColor,
iconColorSelected: Theme.of(context).primaryColor,
indicatorColor: Theme.of(context).primaryColor,
),
searchViewConfig: emojis.SearchViewConfig(
backgroundColor: Theme.of(context).dividerColor,
buttonColor: Theme.of(context).dividerColor,
hintText: 'Suchen',
buttonIconColor: Colors.white,
),
),
onEmojiSelected: (emojis.Category? category, emojis.Emoji emoji) {
Navigator.of(context).pop();
Navigator.of(context).pop();
ReactMessage(
chatToken: widget.chatData.token,
messageId: widget.bubbleData.id,
params: ReactMessageParams(emoji.emoji),
).run().then((value) => widget.refetch(renew: true));
},
),
],
),
),
);
});
},
style: IconButton.styleFrom(
padding: EdgeInsets.zero,
tapTargetSize: MaterialTapTargetSize.shrinkWrap,
Pupsi marked this conversation as resolved Outdated

width ist nullable, daher brauchst du keinen platzhalter wie 1 angeben. Parameter die Null sind können ganz weggelassen werden.

width ist nullable, daher brauchst du keinen platzhalter wie 1 angeben. Parameter die Null sind können ganz weggelassen werden.
minimumSize: const Size(40, 40),
),
icon: const Icon(Icons.add_circle_outline_outlined),
),
],
),
const Divider(),
],
)
),
),
Visibility(
visible: canReact,
child: ListTile(
leading: const Icon(Icons.add_reaction_outlined),
leading: const Icon(Icons.emoji_emotions_outlined),
title: const Text('Reaktionen'),
onTap: () {
Navigator.of(context).push(MaterialPageRoute(builder: (context) => MessageReactions(

View File

@ -97,6 +97,7 @@ dependencies:
rrule: ^0.2.16
time_range_picker: ^2.2.0
in_app_review: ^2.0.8
emoji_picker_flutter: ^2.1.1
dev_dependencies:
flutter_test: