mirror of
https://gitlab.com/famedly/fluffychat.git
synced 2025-02-20 16:10:44 +01:00
add send prefix
This commit is contained in:
parent
bc64e09fbe
commit
e8cc480c2f
@ -32,6 +32,7 @@ import 'send_location_dialog.dart';
|
|||||||
import 'sticker_picker_dialog.dart';
|
import 'sticker_picker_dialog.dart';
|
||||||
import '../utils/matrix_sdk_extensions.dart/filtered_timeline_extension.dart';
|
import '../utils/matrix_sdk_extensions.dart/filtered_timeline_extension.dart';
|
||||||
import '../utils/matrix_sdk_extensions.dart/matrix_file_extension.dart';
|
import '../utils/matrix_sdk_extensions.dart/matrix_file_extension.dart';
|
||||||
|
import '../utils/account_bundles.dart';
|
||||||
|
|
||||||
class Chat extends StatefulWidget {
|
class Chat extends StatefulWidget {
|
||||||
final Widget sideView;
|
final Widget sideView;
|
||||||
@ -45,6 +46,8 @@ class Chat extends StatefulWidget {
|
|||||||
class ChatController extends State<Chat> {
|
class ChatController extends State<Chat> {
|
||||||
Room room;
|
Room room;
|
||||||
|
|
||||||
|
Client sendingClient;
|
||||||
|
|
||||||
Timeline timeline;
|
Timeline timeline;
|
||||||
|
|
||||||
MatrixState matrix;
|
MatrixState matrix;
|
||||||
@ -222,6 +225,10 @@ class ChatController extends State<Chat> {
|
|||||||
|
|
||||||
TextEditingController sendController = TextEditingController();
|
TextEditingController sendController = TextEditingController();
|
||||||
|
|
||||||
|
void setSendingClient(Client c) => setState(() {
|
||||||
|
sendingClient = c;
|
||||||
|
});
|
||||||
|
|
||||||
void setActiveClient(Client c) => setState(() {
|
void setActiveClient(Client c) => setState(() {
|
||||||
Matrix.of(context).setActiveClient(c);
|
Matrix.of(context).setActiveClient(c);
|
||||||
});
|
});
|
||||||
@ -693,6 +700,20 @@ class ChatController extends State<Chat> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void onInputBarChanged(String text) {
|
void onInputBarChanged(String text) {
|
||||||
|
final clients = matrix.currentBundle;
|
||||||
|
clients.removeWhere((c) => c.getRoomById(roomId) == null);
|
||||||
|
for (final client in clients) {
|
||||||
|
final prefix = client.sendPrefix;
|
||||||
|
if ((prefix?.isNotEmpty ?? false) &&
|
||||||
|
text.toLowerCase() == '${prefix.toLowerCase()} ') {
|
||||||
|
setSendingClient(client);
|
||||||
|
setState(() {
|
||||||
|
inputText = '';
|
||||||
|
sendController.text = '';
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
typingCoolDown?.cancel();
|
typingCoolDown?.cancel();
|
||||||
typingCoolDown = Timer(Duration(seconds: 2), () {
|
typingCoolDown = Timer(Duration(seconds: 2), () {
|
||||||
typingCoolDown = null;
|
typingCoolDown = null;
|
||||||
|
@ -39,7 +39,8 @@ class ChatView extends StatelessWidget {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
controller.matrix ??= Matrix.of(context);
|
controller.matrix ??= Matrix.of(context);
|
||||||
final client = controller.matrix.client;
|
final client = controller.matrix.client;
|
||||||
controller.room = client.getRoomById(controller.roomId);
|
controller.sendingClient ??= client;
|
||||||
|
controller.room = controller.sendingClient.getRoomById(controller.roomId);
|
||||||
if (controller.room == null) {
|
if (controller.room == null) {
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
@ -813,7 +814,7 @@ class _ChatAccountPicker extends StatelessWidget {
|
|||||||
Logs().w('Attempted to switch to a non-existing client $mxid');
|
Logs().w('Attempted to switch to a non-existing client $mxid');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
controller.setActiveClient(client);
|
controller.setSendingClient(client);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -824,7 +825,7 @@ class _ChatAccountPicker extends StatelessWidget {
|
|||||||
return Padding(
|
return Padding(
|
||||||
padding: const EdgeInsets.all(8.0),
|
padding: const EdgeInsets.all(8.0),
|
||||||
child: FutureBuilder<Profile>(
|
child: FutureBuilder<Profile>(
|
||||||
future: controller.matrix.client.ownProfile,
|
future: controller.sendingClient.ownProfile,
|
||||||
builder: (context, snapshot) => PopupMenuButton<String>(
|
builder: (context, snapshot) => PopupMenuButton<String>(
|
||||||
onSelected: _popupMenuButtonSelected,
|
onSelected: _popupMenuButtonSelected,
|
||||||
itemBuilder: (BuildContext context) => clients
|
itemBuilder: (BuildContext context) => clients
|
||||||
|
Loading…
x
Reference in New Issue
Block a user