callArgToGrpcInput function
Implementation
Input callArgToGrpcInput(Map<String, dynamic> arg) {
switch (_variantKind(arg)) {
case 'Pure':
return Input(
kind: Input_InputKind.PURE,
pure: base64Decode(arg['Pure']['bytes']),
);
case 'Object':
final obj = arg['Object'] as Map<dynamic, dynamic>;
switch (_variantKind(obj)) {
case 'ImmOrOwnedObject':
return Input(
kind: Input_InputKind.IMMUTABLE_OR_OWNED,
objectId: obj['ImmOrOwnedObject']['objectId'],
version: Int64.parseRadix(
obj['ImmOrOwnedObject']['version'].toString(),
10,
),
digest: obj['ImmOrOwnedObject']['digest'],
);
case 'SharedObject':
return Input(
kind: Input_InputKind.SHARED,
objectId: obj['SharedObject']['objectId'],
version: Int64.parseRadix(
obj['SharedObject']['initialSharedVersion'].toString(),
10,
),
mutable: obj['SharedObject']['mutable'],
);
case 'Receiving':
return Input(
kind: Input_InputKind.RECEIVING,
objectId: obj['Receiving']['objectId'],
version: Int64.parseRadix(
obj['Receiving']['version'].toString(),
10,
),
digest: obj['Receiving']['digest'],
);
}
throw Exception("Unknown object kind: $obj");
case 'UnresolvedObject':
final u = arg['UnresolvedObject'];
return Input(
objectId: u['objectId'],
version: u['version'] != null
? Int64.parseRadix(u['version'].toString(), 10)
: u['initialSharedVersion'] != null
? Int64.parseRadix(u['initialSharedVersion'].toString(), 10)
: null,
digest: u['digest'],
mutable: u['mutable'],
);
case 'UnresolvedPure':
throw Exception(
"UnresolvedPure must be resolved before converting to gRPC",
);
case 'FundsWithdrawal':
final withdrawal = arg['FundsWithdrawal'];
return Input(
kind: Input_InputKind.FUNDS_WITHDRAWAL,
fundsWithdrawal: .new(
amount: _variantKind(withdrawal['reservation']) == 'MaxAmountU64'
? Int64.parseRadix(
withdrawal['reservation']['MaxAmountU64'].toString(),
10,
)
: null,
coinType: _variantKind(withdrawal['typeArg']) == 'Balance'
? withdrawal['typeArg']['Balance']
: null,
source: _variantKind(withdrawal['withdrawFrom']) == 'Sponsor'
? .SPONSOR
: .SENDER,
),
);
default:
throw Exception("Unknown CallArg: $arg");
}
}