feat: Add button to record a video on Android

This commit is contained in:
S1m 2021-12-22 08:45:36 +00:00 committed by Krille Fear
parent 72fa85831a
commit 6e224cf11c
3 changed files with 40 additions and 0 deletions

View File

@ -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",

View File

@ -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();
}

View File

@ -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)