Skip to content

Commit 9a0ae31

Browse files
authored
fix: ReturnData serialization (#1567)
1 parent dfa5e8f commit 9a0ae31

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

packages/solana/lib/src/rpc/dto/return_data.dart

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,22 @@ class ReturnData {
1717
final String programId;
1818

1919
/// The return data itself, as base-64 encoded binary data
20+
@JsonKey(fromJson: _dataFromJson, toJson: _dataToJson)
2021
final String data;
2122

2223
Map<String, dynamic> toJson() => _$ReturnDataToJson(this);
24+
25+
static List<String> _dataToJson(String data) => [data, 'base64'];
26+
27+
static String _dataFromJson(dynamic data) {
28+
if (data is String) {
29+
return data;
30+
} else if (data is List<String> &&
31+
data.length == 2 &&
32+
data[1] == 'base64') {
33+
return data[0];
34+
}
35+
36+
throw ArgumentError.value(data, 'data', 'Invalid data type');
37+
}
2338
}

packages/solana/lib/src/rpc/dto/return_data.g.dart

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)