Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
a46d93dfc5 |
|||
|
294723fdfb |
4 changed files with 28 additions and 8 deletions
1
.vscode/settings.json
vendored
1
.vscode/settings.json
vendored
|
|
@ -10,6 +10,7 @@
|
||||||
"msgtype",
|
"msgtype",
|
||||||
"muks",
|
"muks",
|
||||||
"prefs",
|
"prefs",
|
||||||
|
"recents",
|
||||||
"unban",
|
"unban",
|
||||||
"unifiedpush",
|
"unifiedpush",
|
||||||
"unredact",
|
"unredact",
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,31 @@
|
||||||
import "package:collection/collection.dart";
|
import "package:collection/collection.dart";
|
||||||
import "package:fast_immutable_collections/fast_immutable_collections.dart";
|
import "package:fast_immutable_collections/fast_immutable_collections.dart";
|
||||||
import "package:flutter_riverpod/flutter_riverpod.dart";
|
import "package:flutter_riverpod/flutter_riverpod.dart";
|
||||||
|
import "package:material_emoji_picker/material_emoji_picker.dart";
|
||||||
import "package:nexus/controllers/account_data.dart";
|
import "package:nexus/controllers/account_data.dart";
|
||||||
import "package:nexus/controllers/client.dart";
|
import "package:nexus/controllers/client.dart";
|
||||||
import "package:nexus/models/account_data.dart";
|
import "package:nexus/models/account_data.dart";
|
||||||
|
|
||||||
class RecentEmojiController extends Notifier<IList<RecentEmoji>> {
|
class RecentEmojiController extends Notifier<IList<RecentEmoji>> {
|
||||||
@override
|
@override
|
||||||
IList<RecentEmoji> build() => ref.watch(
|
IList<RecentEmoji> build() {
|
||||||
|
final Set<String> emoji = ref
|
||||||
|
.watch(EmojiController.provider)
|
||||||
|
.requireValue
|
||||||
|
.map((element) => element.emojis)
|
||||||
|
.flattened
|
||||||
|
.map((e) => e.value)
|
||||||
|
.toSet();
|
||||||
|
|
||||||
|
final IList<RecentEmoji> recents = ref.watch(
|
||||||
AccountDataController.provider.select(
|
AccountDataController.provider.select(
|
||||||
(value) => value.recentEmoji.recentEmoji,
|
(value) => value.recentEmoji.recentEmoji,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
return .new(recents.where((recent) => emoji.contains(recent.emoji)));
|
||||||
|
}
|
||||||
|
|
||||||
Future<void> add(String emoji) => ref
|
Future<void> add(String emoji) => ref
|
||||||
.watch(ClientController.provider.notifier)
|
.watch(ClientController.provider.notifier)
|
||||||
.setAccountData(
|
.setAccountData(
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import "package:dynamic_color/dynamic_color.dart";
|
||||||
import "package:flutter/foundation.dart";
|
import "package:flutter/foundation.dart";
|
||||||
import "package:flutter/services.dart";
|
import "package:flutter/services.dart";
|
||||||
import "package:flutter_riverpod/flutter_riverpod.dart";
|
import "package:flutter_riverpod/flutter_riverpod.dart";
|
||||||
|
import "package:material_emoji_picker/material_emoji_picker.dart";
|
||||||
import "package:media_kit/media_kit.dart";
|
import "package:media_kit/media_kit.dart";
|
||||||
import "package:nexus/controllers/client_state.dart";
|
import "package:nexus/controllers/client_state.dart";
|
||||||
import "package:nexus/controllers/gomuks_listener.dart";
|
import "package:nexus/controllers/gomuks_listener.dart";
|
||||||
|
|
@ -154,6 +155,7 @@ class const App({super.key}) extends StatelessWidget {
|
||||||
MemberListOpenedController.provider,
|
MemberListOpenedController.provider,
|
||||||
KeyController.provider(KeyController.roomKey),
|
KeyController.provider(KeyController.roomKey),
|
||||||
KeyController.provider(KeyController.spaceKey),
|
KeyController.provider(KeyController.spaceKey),
|
||||||
|
EmojiController.provider,
|
||||||
]),
|
]),
|
||||||
),
|
),
|
||||||
)) {
|
)) {
|
||||||
|
|
|
||||||
|
|
@ -13,16 +13,20 @@ class const EventPreview(final Event event, {super.key})
|
||||||
padding: .symmetric(vertical: 4),
|
padding: .symmetric(vertical: 4),
|
||||||
child: Row(
|
child: Row(
|
||||||
mainAxisSize: .min,
|
mainAxisSize: .min,
|
||||||
spacing: 10,
|
spacing: 8,
|
||||||
children: [
|
children: [
|
||||||
if (event.content is MessageContent) MessageAvatar(event, height: 40),
|
if (event.content is MessageContent) MessageAvatar(event, height: 36),
|
||||||
|
|
||||||
Flexible(
|
Flexible(
|
||||||
child: Column(
|
child: Column(
|
||||||
mainAxisAlignment: .center,
|
mainAxisAlignment: .center,
|
||||||
crossAxisAlignment: .start,
|
crossAxisAlignment: .start,
|
||||||
children: [
|
children: [
|
||||||
if (event.content is MessageContent) MessageDisplayname(event),
|
if (event.content is MessageContent)
|
||||||
|
DefaultTextHeightBehavior(
|
||||||
|
textHeightBehavior: .new(),
|
||||||
|
child: MessageDisplayname(event),
|
||||||
|
),
|
||||||
EventRenderer(
|
EventRenderer(
|
||||||
event.rowId,
|
event.rowId,
|
||||||
roomId: event.roomId,
|
roomId: event.roomId,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue