add mention support
This commit is contained in:
parent
6215537f8e
commit
bbe36ff86f
8 changed files with 198 additions and 107 deletions
|
|
@ -102,11 +102,12 @@ class RoomChatController extends AsyncNotifier<ChatController> {
|
|||
var taggedMessage = message;
|
||||
|
||||
for (final tag in tags) {
|
||||
final escaped = RegExp.escape(tag.id.substring(1));
|
||||
final pattern = RegExp(r"@@(" + escaped + r")#[^#]*#");
|
||||
final escaped = RegExp.escape(tag.id);
|
||||
final pattern = RegExp(r"@+(" + escaped + r")(#[^#]*#)?");
|
||||
|
||||
taggedMessage = taggedMessage.replaceAllMapped(
|
||||
pattern,
|
||||
(m) => "@${m.group(1)}",
|
||||
(match) => match.group(1)!,
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
23
lib/controllers/rooms_controller.dart
Normal file
23
lib/controllers/rooms_controller.dart
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
import "package:fast_immutable_collections/fast_immutable_collections.dart";
|
||||
import "package:flutter_riverpod/flutter_riverpod.dart";
|
||||
import "package:nexus/controllers/client_controller.dart";
|
||||
import "package:nexus/helpers/extensions/get_full_room.dart";
|
||||
import "package:nexus/models/full_room.dart";
|
||||
|
||||
class RoomsController extends AsyncNotifier<IList<FullRoom>> {
|
||||
@override
|
||||
Future<IList<FullRoom>> build() async {
|
||||
final client = await ref.watch(ClientController.provider.future);
|
||||
|
||||
ref.onDispose(
|
||||
client.onSync.stream.listen((_) => ref.invalidateSelf()).cancel,
|
||||
);
|
||||
|
||||
return IList(await Future.wait(client.rooms.map((room) => room.fullRoom)));
|
||||
}
|
||||
|
||||
static final provider =
|
||||
AsyncNotifierProvider<RoomsController, IList<FullRoom>>(
|
||||
RoomsController.new,
|
||||
);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue