diff --git a/packages/core-dart/lib/src/routing/extract.dart b/packages/core-dart/lib/src/routing/extract.dart index b6ac563..098a387 100644 --- a/packages/core-dart/lib/src/routing/extract.dart +++ b/packages/core-dart/lib/src/routing/extract.dart @@ -5,6 +5,22 @@ import 'result.dart'; import 'memo.dart'; RoutingResult extractRouting(RoutingInput input) { + if (input.sourceAccount != null && input.sourceAccount!.isNotEmpty) { + final source = parse(input.sourceAccount!); + if (source.kind == AddressKind.c) { + return RoutingResult( + routingSource: RoutingSource.none, + warnings: [ + Warning( + code: WarningCode.contractSenderDetected, + severity: 'info', + message: 'Contract source detected. Routing state cleared.', + ), + ], + ); + } + } + final parsed = parse(input.destination); if (parsed.kind == null) { diff --git a/packages/core-dart/test/address_test.dart b/packages/core-dart/test/address_test.dart index 963fffb..d69b809 100644 --- a/packages/core-dart/test/address_test.dart +++ b/packages/core-dart/test/address_test.dart @@ -41,7 +41,7 @@ void main() { test('identifies kind as m for valid muxed address', () { const validMuxed = - 'MAQAA5L65LSYH7CQWE7NNYSR42O4EFOA2OOYNDO643ZPNL6MQBBAAABBAAABBBAAABBAAA'; + 'MAYCUYT553C5LHVE2XPW5GMEJT4BXGM7AHMJWLAPZP53KJO7EIQACAAAAAAAAAAAAD672'; final result = StellarAddress.parse(validMuxed); expect(result.kind, equals(AddressKind.m)); expect(result.raw, equals(validMuxed)); @@ -61,7 +61,7 @@ void main() { test('identifies kind as m for valid muxed address', () { const validMuxed = - 'MAQAA5L65LSYH7CQWE7NNYSR42O4EFOA2OOYNDO643ZPNL6MQBBAAABBAAABBAAABBAAA'; + 'MAYCUYT553C5LHVE2XPW5GMEJT4BXGM7AHMJWLAPZP53KJO7EIQACAAAAAAAAAAAAD672'; final result = StellarAddress.parse(validMuxed); expect(result.kind, equals(AddressKind.m)); }); @@ -70,8 +70,8 @@ void main() { const validContractAddress = 'CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSC4'; final result = StellarAddress.parse(validContractAddress); - expect(result.kind, equals(AddressKind.contract)); - expect(result.value, equals(validContractAddress)); + expect(result.kind, equals(AddressKind.c)); + expect(result.raw, equals(validContractAddress)); }); }); } \ No newline at end of file