transactionDataFromV1 function
dynamic
transactionDataFromV1(
- dynamic data
Implementation
dynamic transactionDataFromV1(dynamic data) {
dynamic expiration;
if (data["expiration"] != null) {
if (data["expiration"]["Epoch"] != null) {
expiration = { "Epoch": data["expiration"]["Epoch"] };
} else {
expiration = { "None": true };
}
}
return {
"version": 2,
"sender": data["sender"],
"expiration": expiration,
"gasData": {
"owner": data["gasConfig"]?["owner"],
"budget": data["gasConfig"]?["budget"]?.toString(),
"price": data["gasConfig"]?["price"]?.toString(),
"payment":
data["gasConfig"]?["payment"]?.map((ref) => ({
"digest": ref["digest"],
"objectId": ref["objectId"],
"version": ref["version"]?.toString(),
})),
},
"inputs": data["inputs"]?.map((input) {
if (input["kind"] == 'Input') {
if (input["value"] is Map && (input["value"]["Object"] != null || input["value"]["Pure"] != null)) {
final value = input["value"];
if (value["Object"] != null) {
if (value["Object"]["ImmOrOwned"] != null) {
return {
"Object": {
"ImmOrOwnedObject": {
"objectId": value["Object"]["ImmOrOwned"]["objectId"],
"version": value["Object"]["ImmOrOwned"]["version"]?.toString(),
"digest": value["Object"]["ImmOrOwned"]["digest"],
},
},
};
}
if (value["Object"]["Shared"] != null) {
return {
"Object": {
"SharedObject": {
"mutable": value["Object"]["Shared"]["mutable"],
"initialSharedVersion": value["Object"]["Shared"]["initialSharedVersion"],
"objectId": value["Object"]["Shared"]["objectId"],
},
},
};
}
if (value["Object"]["Receiving"] != null) {
return {
"Object": {
"Receiving": {
"digest": value["Object"]["Receiving"]["digest"],
"version": value["Object"]["Receiving"]["version"]?.toString(),
"objectId": value["Object"]["Receiving"]["objectId"],
},
},
};
}
throw ArgumentError('Invalid object input');
}
return {
"Pure": {
"bytes": toB64(Uint8List.fromList(value["Pure"].cast<int>())),
},
};
}
if (input["type"] == 'object') {
return {
"UnresolvedObject": {
"objectId": input["value"]?.toString(),
},
};
}
return {
"UnresolvedPure": {
"value": input["value"],
},
};
}
throw ArgumentError('Invalid input');
}),
"commands": data["transactions"]?.map((transaction) {
switch (transaction["kind"]) {
case 'MakeMoveVec':
return {
"MakeMoveVec": {
"type":
transaction["type"]?["Some"] != null
? TypeTagSerializer.tagToString(transaction["type"]["Some"])
: null,
"elements": transaction["objects"]?.map((arg) => parseV1TransactionArgument(arg)),
},
};
case 'MergeCoins': {
return {
"MergeCoins": {
"destination": parseV1TransactionArgument(transaction["destination"]),
"sources": transaction["sources"]?.map((arg) => parseV1TransactionArgument(arg)),
},
};
}
case 'MoveCall': {
final [pkg, mod, fn] = transaction["target"].split('::');
return {
"MoveCall": {
"package": pkg,
"module": mod,
"function": fn,
"typeArguments": transaction["typeArguments"],
"arguments": transaction["arguments"]?.map((arg) => parseV1TransactionArgument(arg)),
},
};
}
case 'Publish': {
return {
"Publish": {
"modules": transaction["modules"]?.map((mod) => toB64(mod)),
"dependencies": transaction["dependencies"],
},
};
}
case 'SplitCoins': {
return {
"SplitCoins": {
"coin": parseV1TransactionArgument(transaction["coin"]),
"amounts": transaction["amounts"]?.map((arg) => parseV1TransactionArgument(arg)),
},
};
}
case 'TransferObjects': {
return {
"TransferObjects": {
"objects": transaction["objects"]?.map((arg) => parseV1TransactionArgument(arg)),
"address": parseV1TransactionArgument(transaction["address"]),
},
};
}
case 'Upgrade': {
return {
"Upgrade": {
"modules": transaction["modules"]?.map((mod) => toB64(mod)),
"dependencies": transaction["dependencies"],
"package": transaction["packageId"],
"ticket": parseV1TransactionArgument(transaction["ticket"]),
},
};
}
}
throw Exception("Unknown transaction $transaction");
}).toList(),
};
}