fix mounting across multiple instances
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
All checks were successful
BlockStorage/repertory/pipeline/head This commit looks good
This commit is contained in:
parent
901000a085
commit
bced895ea1
@ -46,8 +46,12 @@ namespace {
|
||||
}
|
||||
|
||||
for (auto &[prov, map] : map_of_maps) {
|
||||
for (const auto &[key, value] :
|
||||
json[repertory::provider_type_to_string(prov)].items()) {
|
||||
auto prov_str = repertory::provider_type_to_string(prov);
|
||||
if (!json.contains(prov_str)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
for (const auto &[key, value] : json.at(prov_str).items()) {
|
||||
map[key] = value;
|
||||
}
|
||||
}
|
||||
|
@ -85,6 +85,29 @@ class Mount with ChangeNotifier {
|
||||
}
|
||||
}
|
||||
|
||||
Future<String?> getMountLocation() async {
|
||||
try {
|
||||
final response = await http.get(
|
||||
Uri.parse(
|
||||
Uri.encodeFull(
|
||||
'${getBaseUri()}/api/v1/mount_location?name=$name&type=$type',
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
if (response.statusCode != 200) {
|
||||
return null;
|
||||
}
|
||||
|
||||
final location = jsonDecode(response.body)['Location'] as String;
|
||||
return location.trim().isEmpty ? null : location;
|
||||
} catch (e) {
|
||||
debugPrint('$e');
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
Future<bool> mount(bool unmount, {String? location}) async {
|
||||
try {
|
||||
_isMounting = true;
|
||||
@ -166,27 +189,4 @@ class Mount with ChangeNotifier {
|
||||
debugPrint('$e');
|
||||
}
|
||||
}
|
||||
|
||||
Future<String?> getMountLocation() async {
|
||||
try {
|
||||
final response = await http.get(
|
||||
Uri.parse(
|
||||
Uri.encodeFull(
|
||||
'${getBaseUri()}/api/v1/mount_location?name=$name&type=$type',
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
if (response.statusCode != 200) {
|
||||
return null;
|
||||
}
|
||||
|
||||
final location = jsonDecode(response.body)['Location'] as String;
|
||||
return location.trim().isEmpty ? null : location;
|
||||
} catch (e) {
|
||||
debugPrint('$e');
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@ -109,13 +109,16 @@ class _MountWidgetState extends State<MountWidget> {
|
||||
|
||||
final success = await mount.mount(mounted, location: location);
|
||||
if (success ||
|
||||
mount.mounted! ||
|
||||
mounted ||
|
||||
constants.navigatorKey.currentContext == null ||
|
||||
!constants.navigatorKey.currentContext!.mounted) {
|
||||
return cleanup();
|
||||
}
|
||||
|
||||
displayErrorMessage(context, "Mount location is not available");
|
||||
displayErrorMessage(
|
||||
context,
|
||||
"Mount location is not available: $location",
|
||||
);
|
||||
cleanup();
|
||||
}
|
||||
: null;
|
||||
|
Loading…
x
Reference in New Issue
Block a user