Skip to content

Commit

Permalink
Merge pull request #397 from bitfriend/issue370_event-decryption-v0.6
Browse files Browse the repository at this point in the history
Issue370 event decryption v0.6
  • Loading branch information
bitfriend authored Dec 8, 2022
2 parents 06434c2 + 24e2093 commit 26d6cc4
Show file tree
Hide file tree
Showing 14 changed files with 1,379 additions and 696 deletions.
242 changes: 150 additions & 92 deletions app/lib/controllers/chat_room_controller.dart

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions app/lib/screens/HomeScreens/chat/ChatProfile.dart
Original file line number Diff line number Diff line change
Expand Up @@ -639,18 +639,18 @@ class ChatProfileScreen extends StatelessWidget {
padding: const EdgeInsets.all(12),
child: GetBuilder<ChatRoomController>(
id: 'user-profile-$userId',
builder: (_) {
return (roomController.getUserName(userId) == null)
builder: (ChatRoomController controller) {
return (controller.getUserName(userId) == null)
? const Center(
child: CircularProgressIndicator(
color: AppCommonTheme.primaryColor,
),
)
: GroupMember(
userId: userId,
name: roomController.getUserName(userId),
name: controller.getUserName(userId),
isAdmin: true,
avatar: roomController.getUserAvatar(userId),
avatar: controller.getUserAvatar(userId),
);
},
),
Expand Down
320 changes: 153 additions & 167 deletions app/lib/screens/HomeScreens/chat/ChatScreen.dart

Large diffs are not rendered by default.

84 changes: 43 additions & 41 deletions app/lib/widgets/ChatBubbleBuilder.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import 'package:effektio/controllers/chat_room_controller.dart';
import 'package:effektio/widgets/EmojiReactionListItem.dart';
import 'package:effektio/widgets/emoji_row.dart';
import 'package:effektio_flutter_sdk/effektio_flutter_sdk_ffi.dart'
show ReactionDescription;
show ReactionDesc;
import 'package:flutter/material.dart';
import 'package:flutter_chat_types/flutter_chat_types.dart' as types;
import 'package:get/get.dart';
Expand Down Expand Up @@ -45,7 +45,7 @@ class _ChatBubbleBuilderState extends State<ChatBubbleBuilder>
Widget build(BuildContext context) {
return GetBuilder<ChatRoomController>(
id: 'emoji-reaction',
builder: (context) {
builder: (ChatRoomController controller) {
return Column(
mainAxisAlignment: MainAxisAlignment.end,
mainAxisSize: MainAxisSize.min,
Expand All @@ -68,8 +68,9 @@ class _ChatBubbleBuilderState extends State<ChatBubbleBuilder>
],
),
GestureDetector(
onLongPress: () =>
roomController.updateEmojiState(widget.message),
onLongPress: () {
roomController.updateEmojiState(widget.message);
},
child: Align(
alignment:
!isAuthor() ? Alignment.bottomLeft : Alignment.bottomRight,
Expand Down Expand Up @@ -102,7 +103,7 @@ class _ChatBubbleBuilderState extends State<ChatBubbleBuilder>
borderRadius: BorderRadius.vertical(top: Radius.circular(15)),
),
isDismissible: true,
builder: (context) {
builder: (BuildContext context) {
return Column(
mainAxisSize: MainAxisSize.min,
children: [
Expand All @@ -127,7 +128,7 @@ class _ChatBubbleBuilderState extends State<ChatBubbleBuilder>
child: TabBarView(
viewportFraction: 1.0,
controller: tabBarController,
children: <Widget>[
children: [
buildReactionListing(keys),
for (var count in keys) buildReactionListing([count]),
],
Expand All @@ -150,41 +151,37 @@ class _ChatBubbleBuilderState extends State<ChatBubbleBuilder>
crossAxisAlignment:
isAuthor() ? CrossAxisAlignment.end : CrossAxisAlignment.start,
children: [
const Text(
'You replied',
style: TextStyle(color: Colors.white, fontSize: 12),
),
const SizedBox(height: 8),
Bubble(
child: const Padding(
padding: EdgeInsets.all(8),
child: Text(
'This is a reply message demo',
style: ChatTheme01.chatReplyTextStyle,
),
),
color: AppCommonTheme.backgroundColorLight,
margin: widget.nextMessageInGroup
? const BubbleEdges.symmetric(
horizontal: 2,
)
: null,
radius: const Radius.circular(22),
padding: messagetype == types.MessageType.image
? const BubbleEdges.all(0)
: null,
nip: BubbleNip.no,
),
const SizedBox(height: 4),
// const Text(
// 'You replied',
// style: TextStyle(color: Colors.white, fontSize: 12),
// ),
// const SizedBox(height: 8),
// Bubble(
// child: const Padding(
// padding: EdgeInsets.all(8),
// child: Text(
// 'This is a reply message demo',
// style: ChatTheme01.chatReplyTextStyle,
// ),
// ),
// color: AppCommonTheme.backgroundColorLight,
// margin: widget.nextMessageInGroup
// ? const BubbleEdges.symmetric(horizontal: 2)
// : null,
// radius: const Radius.circular(22),
// padding: messagetype == types.MessageType.image
// ? const BubbleEdges.all(0)
// : null,
// nip: BubbleNip.no,
// ),
// const SizedBox(height: 4),
Bubble(
child: widget.child,
color: !isAuthor() || messagetype == types.MessageType.image
? AppCommonTheme.backgroundColorLight
: AppCommonTheme.primaryColor,
margin: widget.nextMessageInGroup
? const BubbleEdges.symmetric(
horizontal: 2,
)
? const BubbleEdges.symmetric(horizontal: 2)
: null,
radius: const Radius.circular(22),
padding: messagetype == types.MessageType.image
Expand All @@ -210,9 +207,7 @@ class _ChatBubbleBuilderState extends State<ChatBubbleBuilder>
child: widget.child,
color: AppCommonTheme.backgroundColorLight,
margin: widget.nextMessageInGroup
? const BubbleEdges.symmetric(
horizontal: 2,
)
? const BubbleEdges.symmetric(horizontal: 2)
: null,
radius: const Radius.circular(18),
padding: messagetype == types.MessageType.image
Expand All @@ -224,8 +219,13 @@ class _ChatBubbleBuilderState extends State<ChatBubbleBuilder>

//Emoji Container which shows message reactions
Widget buildEmojiContainer() {
Map<String, dynamic> reactions = widget.message.metadata!['reactions'];
List<String> keys = reactions.keys.toList();
List<String> keys = [];
if (widget.message.metadata != null) {
if (widget.message.metadata!.containsKey('reactions')) {
Map<String, dynamic> reactions = widget.message.metadata!['reactions'];
keys = reactions.keys.toList();
}
}
return Container(
margin: const EdgeInsets.all(2),
decoration: BoxDecoration(
Expand Down Expand Up @@ -255,7 +255,9 @@ class _ChatBubbleBuilderState extends State<ChatBubbleBuilder>
runSpacing: 3,
children: List.generate(keys.length, (int index) {
String key = keys[index];
ReactionDescription? desc = reactions[key];
Map<String, dynamic> reactions =
widget.message.metadata!['reactions'];
ReactionDesc? desc = reactions[key];
int count = desc!.count();
return GestureDetector(
onTap: () {
Expand Down
14 changes: 11 additions & 3 deletions app/lib/widgets/ChatListItem.dart
Original file line number Diff line number Diff line change
Expand Up @@ -131,8 +131,12 @@ class _ChatListItemState extends State<ChatListItem> {
if (widget.latestMessage == null) {
return const SizedBox();
}
String sender = widget.latestMessage!.sender();
String body = widget.latestMessage!.body();
RoomEventItem? eventItem = widget.latestMessage!.eventItem();
if (eventItem == null) {
return const SizedBox();
}
String sender = eventItem.sender();
String body = eventItem.textDesc()?.body() ?? 'Unknown item';
return Container(
margin: const EdgeInsets.symmetric(vertical: 10),
child: ParsedText(
Expand Down Expand Up @@ -204,7 +208,11 @@ class _ChatListItemState extends State<ChatListItem> {
if (widget.latestMessage == null) {
return null;
}
int? ts = widget.latestMessage!.originServerTs();
RoomEventItem? eventItem = widget.latestMessage!.eventItem();
if (eventItem == null) {
return null;
}
int? ts = eventItem.originServerTs();
if (ts == null) {
return null;
}
Expand Down
Loading

0 comments on commit 26d6cc4

Please sign in to comment.