Skip to content

Commit 226b506

Browse files
committed
fix the channel suffix code
1 parent f1b3f0a commit 226b506

File tree

3 files changed

+130
-61
lines changed

3 files changed

+130
-61
lines changed

packages/pigeon/lib/swift_generator.dart

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -879,8 +879,7 @@ private func nilOrValue<T>(_ value: Any?) -> T? {
879879
? 'nil'
880880
: '[${enumSafeArgNames.join(', ')}] as [Any?]';
881881
const String channel = 'channel';
882-
indent.writeln(
883-
'let channelName: String = "$channelName\\(messageChannelSuffix)"');
882+
indent.writeln('let channelName: String = "$channelName"');
884883
indent.writeln(
885884
'let $channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec)');
886885
indent.write('$channel.sendMessage($sendArgument) ');
@@ -945,7 +944,7 @@ private func nilOrValue<T>(_ value: Any?) -> T? {
945944
final String varChannelName = '${name}Channel';
946945
addDocumentationComments(indent, documentationComments, _docCommentSpec);
947946
indent.writeln(
948-
'let $varChannelName = FlutterBasicMessageChannel(name: "$channelName\\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec)');
947+
'let $varChannelName = FlutterBasicMessageChannel(name: "$channelName", binaryMessenger: binaryMessenger, codec: codec)');
949948
indent.write('if let api = api ');
950949
indent.addScoped('{', '}', () {
951950
indent.write('$varChannelName.setMessageHandler ');

packages/pigeon/platform_tests/test_plugin/ios/Classes/ProxyApiTests.gen.swift

Lines changed: 64 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -496,6 +496,47 @@ enum ProxyApiTestEnum: Int {
496496
case two = 1
497497
case three = 2
498498
}
499+
private class ProxyApiTestsPigeonCodecReader: FlutterStandardReader {
500+
override func readValue(ofType type: UInt8) -> Any? {
501+
switch type {
502+
case 129:
503+
var enumResult: ProxyApiTestEnum? = nil
504+
let enumResultAsInt: Int? = nilOrValue(self.readValue() as? Int)
505+
if let enumResultAsInt = enumResultAsInt {
506+
enumResult = ProxyApiTestEnum(rawValue: enumResultAsInt)
507+
}
508+
return enumResult
509+
default:
510+
return super.readValue(ofType: type)
511+
}
512+
}
513+
}
514+
515+
private class ProxyApiTestsPigeonCodecWriter: FlutterStandardWriter {
516+
override func writeValue(_ value: Any) {
517+
if let value = value as? ProxyApiTestEnum {
518+
super.writeByte(129)
519+
super.writeValue(value.rawValue)
520+
} else {
521+
super.writeValue(value)
522+
}
523+
}
524+
}
525+
526+
private class ProxyApiTestsPigeonCodecReaderWriter: FlutterStandardReaderWriter {
527+
override func reader(with data: Data) -> FlutterStandardReader {
528+
return ProxyApiTestsPigeonCodecReader(data: data)
529+
}
530+
531+
override func writer(with data: NSMutableData) -> FlutterStandardWriter {
532+
return ProxyApiTestsPigeonCodecWriter(data: data)
533+
}
534+
}
535+
536+
class ProxyApiTestsPigeonCodec: FlutterStandardMessageCodec, @unchecked Sendable {
537+
static let shared = ProxyApiTestsPigeonCodec(readerWriter: ProxyApiTestsPigeonCodecReaderWriter())
538+
}
539+
499540
protocol PigeonDelegateProxyApiTestClass {
500541
func pigeonDefaultConstructor(
501542
pigeonApi: PigeonApiProxyApiTestClass, aBool: Bool, anInt: Int64, aDouble: Double,
@@ -880,7 +921,7 @@ final class PigeonApiProxyApiTestClass {
880921
let aUint8ListArg = args[5] as! FlutterStandardTypedData
881922
let aListArg = args[6] as! [Any?]
882923
let aMapArg = args[7] as! [String?: Any?]
883-
let anEnumArg = ProxyApiTestEnum(rawValue: args[8] as! Int)!
924+
let anEnumArg = args[8] as! ProxyApiTestEnum
884925
let aProxyApiArg = args[9] as! ProxyApiSuperClass
885926
let aNullableBoolArg: Bool? = nilOrValue(args[10])
886927
let aNullableIntArg: Int64? =
@@ -891,8 +932,7 @@ final class PigeonApiProxyApiTestClass {
891932
let aNullableUint8ListArg: FlutterStandardTypedData? = nilOrValue(args[14])
892933
let aNullableListArg: [Any?]? = nilOrValue(args[15])
893934
let aNullableMapArg: [String?: Any?]? = nilOrValue(args[16])
894-
let aNullableEnumArg: ProxyApiTestEnum? =
895-
isNullish(args[17]) ? nil : ProxyApiTestEnum(rawValue: args[17] as! Int)!
935+
let aNullableEnumArg: ProxyApiTestEnum? = nilOrValue(args[17])
896936
let aNullableProxyApiArg: ProxyApiSuperClass? = nilOrValue(args[18])
897937
let boolParamArg = args[19] as! Bool
898938
let intParamArg = args[20] is Int64 ? args[20] as! Int64 : Int64(args[20] as! Int32)
@@ -901,7 +941,7 @@ final class PigeonApiProxyApiTestClass {
901941
let aUint8ListParamArg = args[23] as! FlutterStandardTypedData
902942
let listParamArg = args[24] as! [Any?]
903943
let mapParamArg = args[25] as! [String?: Any?]
904-
let enumParamArg = ProxyApiTestEnum(rawValue: args[26] as! Int)!
944+
let enumParamArg = args[26] as! ProxyApiTestEnum
905945
let proxyApiParamArg = args[27] as! ProxyApiSuperClass
906946
let nullableBoolParamArg: Bool? = nilOrValue(args[28])
907947
let nullableIntParamArg: Int64? =
@@ -912,8 +952,7 @@ final class PigeonApiProxyApiTestClass {
912952
let nullableUint8ListParamArg: FlutterStandardTypedData? = nilOrValue(args[32])
913953
let nullableListParamArg: [Any?]? = nilOrValue(args[33])
914954
let nullableMapParamArg: [String?: Any?]? = nilOrValue(args[34])
915-
let nullableEnumParamArg: ProxyApiTestEnum? =
916-
isNullish(args[35]) ? nil : ProxyApiTestEnum(rawValue: args[35] as! Int)!
955+
let nullableEnumParamArg: ProxyApiTestEnum? = nilOrValue(args[35])
917956
let nullableProxyApiParamArg: ProxyApiSuperClass? = nilOrValue(args[36])
918957
do {
919958
api.pigeonRegistrar.instanceManager.addDartCreatedInstance(
@@ -1251,11 +1290,11 @@ final class PigeonApiProxyApiTestClass {
12511290
echoEnumChannel.setMessageHandler { message, reply in
12521291
let args = message as! [Any?]
12531292
let pigeonInstanceArg = args[0] as! ProxyApiTestClass
1254-
let anEnumArg = ProxyApiTestEnum(rawValue: args[1] as! Int)!
1293+
let anEnumArg = args[1] as! ProxyApiTestEnum
12551294
do {
12561295
let result = try api.pigeonDelegate.echoEnum(
12571296
pigeonApi: api, pigeonInstance: pigeonInstanceArg, anEnum: anEnumArg)
1258-
reply(wrapResult(result.rawValue))
1297+
reply(wrapResult(result))
12591298
} catch {
12601299
reply(wrapError(error))
12611300
}
@@ -1444,12 +1483,11 @@ final class PigeonApiProxyApiTestClass {
14441483
echoNullableEnumChannel.setMessageHandler { message, reply in
14451484
let args = message as! [Any?]
14461485
let pigeonInstanceArg = args[0] as! ProxyApiTestClass
1447-
let aNullableEnumArg: ProxyApiTestEnum? =
1448-
isNullish(args[1]) ? nil : ProxyApiTestEnum(rawValue: args[1] as! Int)!
1486+
let aNullableEnumArg: ProxyApiTestEnum? = nilOrValue(args[1])
14491487
do {
14501488
let result = try api.pigeonDelegate.echoNullableEnum(
14511489
pigeonApi: api, pigeonInstance: pigeonInstanceArg, aNullableEnum: aNullableEnumArg)
1452-
reply(wrapResult(result?.rawValue))
1490+
reply(wrapResult(result))
14531491
} catch {
14541492
reply(wrapError(error))
14551493
}
@@ -1679,13 +1717,13 @@ final class PigeonApiProxyApiTestClass {
16791717
echoAsyncEnumChannel.setMessageHandler { message, reply in
16801718
let args = message as! [Any?]
16811719
let pigeonInstanceArg = args[0] as! ProxyApiTestClass
1682-
let anEnumArg = ProxyApiTestEnum(rawValue: args[1] as! Int)!
1720+
let anEnumArg = args[1] as! ProxyApiTestEnum
16831721
api.pigeonDelegate.echoAsyncEnum(
16841722
pigeonApi: api, pigeonInstance: pigeonInstanceArg, anEnum: anEnumArg
16851723
) { result in
16861724
switch result {
16871725
case .success(let res):
1688-
reply(wrapResult(res.rawValue))
1726+
reply(wrapResult(res))
16891727
case .failure(let error):
16901728
reply(wrapError(error))
16911729
}
@@ -1941,14 +1979,13 @@ final class PigeonApiProxyApiTestClass {
19411979
echoAsyncNullableEnumChannel.setMessageHandler { message, reply in
19421980
let args = message as! [Any?]
19431981
let pigeonInstanceArg = args[0] as! ProxyApiTestClass
1944-
let anEnumArg: ProxyApiTestEnum? =
1945-
isNullish(args[1]) ? nil : ProxyApiTestEnum(rawValue: args[1] as! Int)!
1982+
let anEnumArg: ProxyApiTestEnum? = nilOrValue(args[1])
19461983
api.pigeonDelegate.echoAsyncNullableEnum(
19471984
pigeonApi: api, pigeonInstance: pigeonInstanceArg, anEnum: anEnumArg
19481985
) { result in
19491986
switch result {
19501987
case .success(let res):
1951-
reply(wrapResult(res?.rawValue))
1988+
reply(wrapResult(res))
19521989
case .failure(let error):
19531990
reply(wrapError(error))
19541991
}
@@ -2276,13 +2313,13 @@ final class PigeonApiProxyApiTestClass {
22762313
callFlutterEchoEnumChannel.setMessageHandler { message, reply in
22772314
let args = message as! [Any?]
22782315
let pigeonInstanceArg = args[0] as! ProxyApiTestClass
2279-
let anEnumArg = ProxyApiTestEnum(rawValue: args[1] as! Int)!
2316+
let anEnumArg = args[1] as! ProxyApiTestEnum
22802317
api.pigeonDelegate.callFlutterEchoEnum(
22812318
pigeonApi: api, pigeonInstance: pigeonInstanceArg, anEnum: anEnumArg
22822319
) { result in
22832320
switch result {
22842321
case .success(let res):
2285-
reply(wrapResult(res.rawValue))
2322+
reply(wrapResult(res))
22862323
case .failure(let error):
22872324
reply(wrapError(error))
22882325
}
@@ -2484,14 +2521,13 @@ final class PigeonApiProxyApiTestClass {
24842521
callFlutterEchoNullableEnumChannel.setMessageHandler { message, reply in
24852522
let args = message as! [Any?]
24862523
let pigeonInstanceArg = args[0] as! ProxyApiTestClass
2487-
let anEnumArg: ProxyApiTestEnum? =
2488-
isNullish(args[1]) ? nil : ProxyApiTestEnum(rawValue: args[1] as! Int)!
2524+
let anEnumArg: ProxyApiTestEnum? = nilOrValue(args[1])
24892525
api.pigeonDelegate.callFlutterEchoNullableEnum(
24902526
pigeonApi: api, pigeonInstance: pigeonInstanceArg, anEnum: anEnumArg
24912527
) { result in
24922528
switch result {
24932529
case .success(let res):
2494-
reply(wrapResult(res?.rawValue))
2530+
reply(wrapResult(res))
24952531
case .failure(let error):
24962532
reply(wrapError(error))
24972533
}
@@ -2616,9 +2652,9 @@ final class PigeonApiProxyApiTestClass {
26162652
channel.sendMessage(
26172653
[
26182654
pigeonIdentifierArg, aBoolArg, anIntArg, aDoubleArg, aStringArg, aUint8ListArg, aListArg,
2619-
aMapArg, anEnumArg.rawValue, aProxyApiArg, aNullableBoolArg, aNullableIntArg,
2620-
aNullableDoubleArg, aNullableStringArg, aNullableUint8ListArg, aNullableListArg,
2621-
aNullableMapArg, aNullableEnumArg?.rawValue, aNullableProxyApiArg,
2655+
aMapArg, anEnumArg, aProxyApiArg, aNullableBoolArg, aNullableIntArg, aNullableDoubleArg,
2656+
aNullableStringArg, aNullableUint8ListArg, aNullableListArg, aNullableMapArg,
2657+
aNullableEnumArg, aNullableProxyApiArg,
26222658
] as [Any?]
26232659
) { response in
26242660
guard let listResponse = response as? [Any?] else {
@@ -3039,7 +3075,7 @@ final class PigeonApiProxyApiTestClass {
30393075
"dev.flutter.pigeon.pigeon_integration_tests.ProxyApiTestClass.flutterEchoEnum"
30403076
let channel = FlutterBasicMessageChannel(
30413077
name: channelName, binaryMessenger: binaryMessenger, codec: codec)
3042-
channel.sendMessage([pigeonInstanceArg, anEnumArg.rawValue] as [Any?]) { response in
3078+
channel.sendMessage([pigeonInstanceArg, anEnumArg] as [Any?]) { response in
30433079
guard let listResponse = response as? [Any?] else {
30443080
completion(.failure(createConnectionError(withChannelName: channelName)))
30453081
return
@@ -3056,7 +3092,7 @@ final class PigeonApiProxyApiTestClass {
30563092
code: "null-error",
30573093
message: "Flutter api returned null value for non-null return value.", details: "")))
30583094
} else {
3059-
let result = ProxyApiTestEnum(rawValue: listResponse[0] as! Int)!
3095+
let result = listResponse[0] as! ProxyApiTestEnum
30603096
completion(.success(result))
30613097
}
30623098
}
@@ -3307,7 +3343,7 @@ final class PigeonApiProxyApiTestClass {
33073343
"dev.flutter.pigeon.pigeon_integration_tests.ProxyApiTestClass.flutterEchoNullableEnum"
33083344
let channel = FlutterBasicMessageChannel(
33093345
name: channelName, binaryMessenger: binaryMessenger, codec: codec)
3310-
channel.sendMessage([pigeonInstanceArg, anEnumArg?.rawValue] as [Any?]) { response in
3346+
channel.sendMessage([pigeonInstanceArg, anEnumArg] as [Any?]) { response in
33113347
guard let listResponse = response as? [Any?] else {
33123348
completion(.failure(createConnectionError(withChannelName: channelName)))
33133349
return
@@ -3318,8 +3354,7 @@ final class PigeonApiProxyApiTestClass {
33183354
let details: String? = nilOrValue(listResponse[2])
33193355
completion(.failure(ProxyApiTestsError(code: code, message: message, details: details)))
33203356
} else {
3321-
let result: ProxyApiTestEnum? =
3322-
isNullish(listResponse[0]) ? nil : ProxyApiTestEnum(rawValue: listResponse[0] as! Int)!
3357+
let result: ProxyApiTestEnum? = nilOrValue(listResponse[0])
33233358
completion(.success(result))
33243359
}
33253360
}

0 commit comments

Comments
 (0)