filter shown recent emoji to valid emoji
This commit is contained in:
parent
294723fdfb
commit
a46d93dfc5
3 changed files with 21 additions and 5 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,17 +1,30 @@
|
||||||
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() {
|
||||||
AccountDataController.provider.select(
|
final Set<String> emoji = ref
|
||||||
(value) => value.recentEmoji.recentEmoji,
|
.watch(EmojiController.provider)
|
||||||
),
|
.requireValue
|
||||||
);
|
.map((element) => element.emojis)
|
||||||
|
.flattened
|
||||||
|
.map((e) => e.value)
|
||||||
|
.toSet();
|
||||||
|
|
||||||
|
final IList<RecentEmoji> recents = ref.watch(
|
||||||
|
AccountDataController.provider.select(
|
||||||
|
(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)
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
]),
|
]),
|
||||||
),
|
),
|
||||||
)) {
|
)) {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue