diff --git a/lib/logic/api_maps/graphql_maps/server_api/volume_api.dart b/lib/logic/api_maps/graphql_maps/server_api/volume_api.dart index e0c68cc4..4865a565 100644 --- a/lib/logic/api_maps/graphql_maps/server_api/volume_api.dart +++ b/lib/logic/api_maps/graphql_maps/server_api/volume_api.dart @@ -1,5 +1,15 @@ part of 'server.dart'; +class MigrateToBindsMutationReturn extends GenericMutationResult { + MigrateToBindsMutationReturn({ + required final super.success, + required final super.code, + final super.message, + this.jobUid, + }); + final String? jobUid; +} + mixin VolumeApi on ApiMap { Future> getServerDiskVolumes() async { QueryResult response; @@ -57,10 +67,11 @@ mixin VolumeApi on ApiMap { } } - Future migrateToBinds( + Future migrateToBinds( final Map serviceToDisk, ) async { - String? jobUid; + MigrateToBindsMutationReturn? mutation; + try { final GraphQLClient client = await getClient(); final input = Input$MigrateToBindsInput( @@ -77,12 +88,22 @@ mixin VolumeApi on ApiMap { await client.mutate$MigrateToBinds( migrateMutation, ); - - jobUid = result.parsedData!.migrateToBinds.job!.uid; + mutation = mutation = MigrateToBindsMutationReturn( + success: result.parsedData!.migrateToBinds.success, + code: result.parsedData!.migrateToBinds.code, + message: result.parsedData!.migrateToBinds.message, + jobUid: result.parsedData!.migrateToBinds.job?.uid, + ); } catch (e) { print(e); + mutation = MigrateToBindsMutationReturn( + success: false, + code: 0, + message: e.toString(), + jobUid: null, + ); } - return jobUid; + return mutation; } } diff --git a/lib/logic/cubit/server_jobs/server_jobs_cubit.dart b/lib/logic/cubit/server_jobs/server_jobs_cubit.dart index 74ce932d..46f04e5b 100644 --- a/lib/logic/cubit/server_jobs/server_jobs_cubit.dart +++ b/lib/logic/cubit/server_jobs/server_jobs_cubit.dart @@ -1,5 +1,6 @@ import 'dart:async'; +import 'package:selfprivacy/config/get_it_config.dart'; import 'package:selfprivacy/logic/api_maps/graphql_maps/server_api/server.dart'; import 'package:selfprivacy/logic/cubit/app_config_dependent/authentication_dependend_cubit.dart'; import 'package:selfprivacy/logic/models/json/server_job.dart'; @@ -44,10 +45,15 @@ class ServerJobsCubit } Future migrateToBinds(final Map serviceToDisk) async { - final String? jobUid = await api.migrateToBinds(serviceToDisk); + final result = await api.migrateToBinds(serviceToDisk); + if (!result.success || result.jobUid == null) { + getIt().showSnackBar(result.message!); + return; + } + emit( ServerJobsState( - migrationJobUid: jobUid, + migrationJobUid: result.jobUid, ), ); }