mutate<T> method
Implementation
Future<T> mutate<T>(
String mutation,
Map<String, dynamic> variables, {
T Function(Map<String, dynamic>)? fromJson,
String? expectedDataType,
bool convertEnums = true,
bool retryOnTransientNetworkErrors = true,
}) async {
var data = await _executeGraphQLOperation(
mutation,
variables,
true,
expectedDataType,
convertEnums: convertEnums,
retryOnTransientNetworkErrors: retryOnTransientNetworkErrors,
);
if (data == null) {
throw Exception('No data returned from mutate');
}
if (data is Map || data is List) {
// Response normalization: always convertEnums=false because entity
// .g.dart files now use @JsonValue enum maps (_$EnumNameEnumMap) which
// expect the raw GraphQL enum values (e.g. 'USD', 'INSUFFICIENT_STOCK_ERROR').
// The __typename -> runtimeType conversion still runs for union discrimination.
data = VendureUtils.normalizeGraphQLData(
data,
convertEnums: false,
);
}
if (fromJson != null) {
if (data is! Map) {
throw Exception(
'Expected map data but got ${data.runtimeType}');
}
return fromJson(Map<String, dynamic>.from(data));
}
return data;
}