Add video file detection in file explorer; open video files in video viewer on tap
This commit is contained in:
@@ -870,16 +870,33 @@ class _FileExplorerState extends State<FileExplorer> {
|
||||
bool isHovered,
|
||||
bool isDraggedOver,
|
||||
) {
|
||||
// Video file detection
|
||||
final videoExtensions = [
|
||||
'.mp4', '.webm', '.mov', '.avi', '.mkv', '.flv', '.wmv', '.m4v',
|
||||
'.ogv', '.3gp', '.ts', '.mpg', '.mpeg',
|
||||
];
|
||||
final isVideo = videoExtensions.any(
|
||||
(ext) => file.name.toLowerCase().endsWith(ext),
|
||||
);
|
||||
|
||||
return MouseRegion(
|
||||
onEnter: (_) => setState(() => _hovered[file.path] = true),
|
||||
onExit: (_) => setState(() => _hovered[file.path] = false),
|
||||
child: GestureDetector(
|
||||
onTap: () {
|
||||
onTap: () async {
|
||||
setState(() {
|
||||
_selectedFilePath = file.path;
|
||||
});
|
||||
if (file.type == FileType.folder) {
|
||||
context.read<FileBrowserBloc>().add(NavigateToFolder(file.path));
|
||||
} else if (isVideo) {
|
||||
// Open video files in video viewer
|
||||
final videoUrl = await getIt<FileService>()
|
||||
.getDownloadUrl(widget.orgId, file.path);
|
||||
_showVideoViewer(
|
||||
file.name,
|
||||
'${getIt<FileService>().baseUrl}$videoUrl',
|
||||
);
|
||||
} else {
|
||||
if (file.id == null || file.id!.isEmpty) {
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
@@ -1392,39 +1409,6 @@ class _FileExplorerState extends State<FileExplorer> {
|
||||
final isSelected = _selectedFilePath == file.path;
|
||||
final isHovered = _hovered[file.path] ?? false;
|
||||
|
||||
// Video file detection
|
||||
final videoExtensions = [
|
||||
'.mp4',
|
||||
'.webm',
|
||||
'.mov',
|
||||
'.avi',
|
||||
'.mkv',
|
||||
'.flv',
|
||||
'.wmv',
|
||||
'.m4v',
|
||||
];
|
||||
final isVideo = videoExtensions.any(
|
||||
(ext) => file.name.toLowerCase().endsWith(ext),
|
||||
);
|
||||
if (isVideo) {
|
||||
return GestureDetector(
|
||||
onTap: () async {
|
||||
final videoUrl = await getIt<FileService>()
|
||||
.getDownloadUrl(widget.orgId, file.path);
|
||||
_showVideoViewer(
|
||||
file.name,
|
||||
'${getIt<FileService>().baseUrl}$videoUrl',
|
||||
);
|
||||
},
|
||||
child: _buildFileItem(
|
||||
file,
|
||||
isSelected,
|
||||
isHovered,
|
||||
false,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
if (file.type == FileType.folder) {
|
||||
return DragTarget<FileItem>(
|
||||
builder: (context, candidate, rejected) {
|
||||
|
||||
Reference in New Issue
Block a user