@@ -2,16 +2,18 @@ import 'dart:async';
22import 'dart:convert' ;
33
44import 'package:files/backend/providers.dart' ;
5+ import 'package:files/backend/workspace.dart' ;
56import 'package:files/widgets/separated_flex.dart' ;
67import 'package:filesize/filesize.dart' ;
78import 'package:flutter/material.dart' ;
9+ import 'package:path/path.dart' as p;
810import 'package:udisks/udisks.dart' ;
911import 'package:yaru/yaru.dart' ;
1012
1113class DriveList extends StatelessWidget {
12- const DriveList ({this .onDriveTap , super .key});
14+ const DriveList ({required this .workspace , super .key});
1315
14- final ValueChanged < String > ? onDriveTap ;
16+ final WorkspaceController workspace ;
1517
1618 @override
1719 Widget build (BuildContext context) {
@@ -29,11 +31,11 @@ class DriveList extends StatelessWidget {
2931 ! e.userspaceMountOptions.contains ('x-gvfs-hide' ),
3032 )
3133 .where ((e) => ! e.hintIgnore && e.filesystem != null )
34+ .where (
35+ (e) => driveProvider.supportedFilesystems.contains (e.idType),
36+ )
3237 .map (
33- (e) => _DriveTile (
34- blockDevice: e,
35- onTap: onDriveTap,
36- ),
38+ (e) => _DriveTile (blockDevice: e, workspace: workspace),
3739 )
3840 .toList (),
3941 );
@@ -45,10 +47,11 @@ class DriveList extends StatelessWidget {
4547class _DriveTile extends StatefulWidget {
4648 const _DriveTile ({
4749 required this .blockDevice,
48- this .onTap ,
50+ required this .workspace ,
4951 });
52+
5053 final UDisksBlockDevice blockDevice;
51- final ValueChanged < String > ? onTap ;
54+ final WorkspaceController workspace ;
5255
5356 @override
5457 State <_DriveTile > createState () => _DriveTileState ();
@@ -118,6 +121,13 @@ class _DriveTileState extends State<_DriveTile> {
118121 ? YaruOptionButton (
119122 onPressed: () async {
120123 await widget.blockDevice.filesystem! .unmount ();
124+ if (p.isWithin (mountPoint! , widget.workspace.currentDir) ||
125+ p.equals (mountPoint! , widget.workspace.currentDir)) {
126+ await widget.workspace.changeCurrentDir (
127+ folderProvider.destinations.first.path,
128+ );
129+ }
130+
121131 setState (() {});
122132 },
123133 style: OutlinedButton .styleFrom (
@@ -132,7 +142,7 @@ class _DriveTileState extends State<_DriveTile> {
132142 setState (() {});
133143 }
134144
135- widget.onTap ? . call (mountPoint! );
145+ await widget.workspace. changeCurrentDir (mountPoint! );
136146 },
137147 ),
138148 );
0 commit comments