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 94 additions and 6 deletions
Showing only changes of commit 9aa3f7c058 - Show all commits

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,8 @@ class ChatBubble extends StatefulWidget {
}
class _ChatBubbleState extends State<ChatBubble> {
final TextEditingController _emojiInput = TextEditingController();
BubbleStyle getSystemStyle() {
return BubbleStyle(
color: AppTheme.isDarkMode(context) ? const Color(0xff182229) : Colors.white,
@ -184,7 +187,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 +213,102 @@ 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 SimpleDialog(
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,
height: 0,
Pupsi marked this conversation as resolved Outdated

hight und child müssen nicht angegeben werden

hight und child müssen nicht angegeben werden
child: null,
),
const Text('Emoji auswählen'),
],
Pupsi marked this conversation as resolved
Review

wofür existiert diese column?

wofür existiert diese column?
),
children: [
Column(
children: [
emojis.EmojiPicker(
onBackspacePressed: () {
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 "{ }"
null;
},
config: emojis.Config(
height: 256,
swapCategoryAndBottomBar: true,
emojiViewConfig: emojis.EmojiViewConfig(
backgroundColor: Theme.of(context).canvasColor,
recentsLimit: 67,
emojiSizeMax: 20,
),
bottomActionBarConfig: emojis.BottomActionBarConfig(
showBackspaceButton: false,
backgroundColor: Theme.of(context).hoverColor.withAlpha(50),
buttonColor: Theme.of(context).dividerColor.withAlpha(70),
),
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));
},
),
const SizedBox(
width: 1,
height: 25,
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.
child: null,
)
],
),
],
);
});
},
style: IconButton.styleFrom(
padding: EdgeInsets.zero,
tapTargetSize: MaterialTapTargetSize.shrinkWrap,
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: