feat: Implement paste shortcut and remove popup menu option

taken from https://github.com/krille-chan/fluffychat/pull/2775
This commit is contained in:
Alexey 2026-04-23 12:13:10 +03:00
commit bf21b7f42c
4 changed files with 15 additions and 31 deletions

View file

@ -344,6 +344,12 @@ class ChatController extends State<ChatPageWithRoom>
}
}
return KeyEventResult.ignored;
} else if (evt is KeyDownEvent &&
evt.logicalKey == LogicalKeyboardKey.keyV &&
(HardwareKeyboard.instance.isControlPressed ||
HardwareKeyboard.instance.isMetaPressed)) {
sendImageFromClipBoardAction();
return KeyEventResult.ignored;
} else {
return KeyEventResult.ignored;
@ -659,10 +665,17 @@ class ChatController extends State<ChatPageWithRoom>
Future<void> sendImageFromClipBoard(Uint8List? image) async {
if (image == null) return;
if (!mounted) return;
final mimeType = lookupMimeType('', headerBytes: image);
final fileType = mimeType == null ? null : extensionFromMime(mimeType);
final extension = fileType == null ? '' : '.$fileType';
final fileName = 'clipboard-image$extension';
await showAdaptiveDialog(
context: context,
builder: (c) => SendFileDialog(
files: [XFile.fromData(image)],
files: [XFile.fromData(image, name: fileName, mimeType: mimeType)],
room: room,
outerContext: context,
threadRootEventId: activeThreadId,
@ -1248,9 +1261,6 @@ class ChatController extends State<ChatPageWithRoom>
case AddPopupMenuActions.location:
sendLocationAction();
return;
case AddPopupMenuActions.pasteImage:
sendImageFromClipBoardAction();
return;
}
}
@ -1458,5 +1468,4 @@ enum AddPopupMenuActions {
photoCamera,
videoCamera,
location,
pasteImage,
}