chore: Follow up create check list UX

pull/1859/head
Christian Kußowski 5 months ago
parent 52ba9468a4
commit 5fb882955c
No known key found for this signature in database
GPG Key ID: E067ECD60F1A0652

@ -1186,15 +1186,6 @@ class ChatController extends State<ChatPageWithRoom>
if (choice == 'location') {
sendLocationAction();
}
if (choice == 'checklist') {
if (sendController.text.isEmpty) {
sendController.text = '- [ ] ';
} else {
sendController.text += '\n- [ ] ';
}
onInputBarChanged(sendController.text);
inputFocus.requestFocus();
}
}
unpinEvent(String eventId) async {

@ -124,18 +124,6 @@ class ChatInputRow extends StatelessWidget {
onSelected: controller.onAddPopupMenuButtonSelected,
itemBuilder: (BuildContext context) =>
<PopupMenuEntry<String>>[
PopupMenuItem<String>(
value: 'checklist',
child: ListTile(
leading: CircleAvatar(
backgroundColor: theme.colorScheme.onPrimaryContainer,
foregroundColor: theme.colorScheme.primaryContainer,
child: const Icon(Icons.check_circle_outlined),
),
title: Text(L10n.of(context).checkList),
contentPadding: const EdgeInsets.all(0),
),
),
if (PlatformInfos.isMobile)
PopupMenuItem<String>(
value: 'location',

@ -54,6 +54,35 @@ Widget markdownContextBuilder(
ContextMenuController.removeAny();
},
),
ContextMenuButtonItem(
label: l10n.checkList,
onPressed: () {
final text = controller.text;
final selection = controller.selection;
var start = selection.textBefore(text).lastIndexOf('\n');
if (start == -1) start = 0;
final end = selection.end;
final fullLineSelection =
TextSelection(baseOffset: start, extentOffset: end);
const checkBox = '- [ ]';
final replacedRange = fullLineSelection
.textInside(text)
.split('\n')
.map(
(line) => line.startsWith(checkBox) || line.isEmpty
? line
: '$checkBox $line',
)
.join('\n');
controller.text =
controller.text.replaceRange(start, end, replacedRange);
ContextMenuController.removeAny();
},
),
ContextMenuButtonItem(
label: l10n.boldText,
onPressed: () {

Loading…
Cancel
Save