mirror of
				https://gitlab.com/famedly/fluffychat.git
				synced 2025-11-04 06:17:26 +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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user