diff --git a/.vscode/settings.json b/.vscode/settings.json index fac2ed8..a5cac8a 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -10,6 +10,7 @@ "msgtype", "muks", "prefs", + "recents", "unban", "unifiedpush", "unredact", diff --git a/lib/controllers/recent_emoji.dart b/lib/controllers/recent_emoji.dart index 6cf57f7..d814a79 100644 --- a/lib/controllers/recent_emoji.dart +++ b/lib/controllers/recent_emoji.dart @@ -1,17 +1,30 @@ import "package:collection/collection.dart"; import "package:fast_immutable_collections/fast_immutable_collections.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/client.dart"; import "package:nexus/models/account_data.dart"; class RecentEmojiController extends Notifier> { @override - IList build() => ref.watch( - AccountDataController.provider.select( - (value) => value.recentEmoji.recentEmoji, - ), - ); + IList build() { + final Set emoji = ref + .watch(EmojiController.provider) + .requireValue + .map((element) => element.emojis) + .flattened + .map((e) => e.value) + .toSet(); + + final IList recents = ref.watch( + AccountDataController.provider.select( + (value) => value.recentEmoji.recentEmoji, + ), + ); + + return .new(recents.where((recent) => emoji.contains(recent.emoji))); + } Future add(String emoji) => ref .watch(ClientController.provider.notifier) diff --git a/lib/main.dart b/lib/main.dart index 266d1ae..5ae33c2 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -4,6 +4,7 @@ import "package:dynamic_color/dynamic_color.dart"; import "package:flutter/foundation.dart"; import "package:flutter/services.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:nexus/controllers/client_state.dart"; import "package:nexus/controllers/gomuks_listener.dart"; @@ -154,6 +155,7 @@ class const App({super.key}) extends StatelessWidget { MemberListOpenedController.provider, KeyController.provider(KeyController.roomKey), KeyController.provider(KeyController.spaceKey), + EmojiController.provider, ]), ), )) {