mirror of
https://gitlab.com/famedly/fluffychat.git
synced 2024-11-07 20:49:28 +01:00
Merge branch 'video-record' into 'main'
Add button to record a video on Android Closes #449 See merge request famedly/fluffychat!626
This commit is contained in:
commit
a7991114be
@ -1596,6 +1596,11 @@
|
||||
"type": "text",
|
||||
"placeholders": {}
|
||||
},
|
||||
"openVideoCamera": "Open camera for a video",
|
||||
"@openVideoCamera": {
|
||||
"type": "text",
|
||||
"placeholders": {}
|
||||
},
|
||||
"oneClientLoggedOut": "One of your clients has been logged out",
|
||||
"@oneClientLoggedOut": {},
|
||||
"addAccount": "Add account",
|
||||
|
@ -347,6 +347,25 @@ class ChatController extends State<Chat> {
|
||||
);
|
||||
}
|
||||
|
||||
void openVideoCameraAction() async {
|
||||
// Make sure the textfield is unfocused before opening the camera
|
||||
FocusScope.of(context).requestFocus(FocusNode());
|
||||
final file = await ImagePicker().pickVideo(source: ImageSource.camera);
|
||||
if (file == null) return;
|
||||
final bytes = await file.readAsBytes();
|
||||
await showDialog(
|
||||
context: context,
|
||||
useRootNavigator: false,
|
||||
builder: (c) => SendFileDialog(
|
||||
file: MatrixVideoFile(
|
||||
bytes: bytes,
|
||||
name: file.path,
|
||||
),
|
||||
room: room,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
void sendStickerAction() async {
|
||||
final sticker = await showModalBottomSheet<ImagePackImageContent>(
|
||||
context: context,
|
||||
@ -764,6 +783,9 @@ class ChatController extends State<Chat> {
|
||||
if (choice == 'camera') {
|
||||
openCameraAction();
|
||||
}
|
||||
if (choice == 'camera-video') {
|
||||
openVideoCameraAction();
|
||||
}
|
||||
if (choice == 'sticker') {
|
||||
sendStickerAction();
|
||||
}
|
||||
|
@ -129,6 +129,19 @@ class ChatInputRow extends StatelessWidget {
|
||||
contentPadding: const EdgeInsets.all(0),
|
||||
),
|
||||
),
|
||||
if (PlatformInfos.isMobile)
|
||||
PopupMenuItem<String>(
|
||||
value: 'camera-video',
|
||||
child: ListTile(
|
||||
leading: const CircleAvatar(
|
||||
backgroundColor: Colors.red,
|
||||
foregroundColor: Colors.white,
|
||||
child: Icon(Icons.videocam_outlined),
|
||||
),
|
||||
title: Text(L10n.of(context).openVideoCamera),
|
||||
contentPadding: const EdgeInsets.all(0),
|
||||
),
|
||||
),
|
||||
if (controller.room
|
||||
.getImagePacks(ImagePackUsage.sticker)
|
||||
.isNotEmpty)
|
||||
|
Loading…
Reference in New Issue
Block a user