Skip to content

Commit ec74ebc

Browse files
Update mobile examples for v1.0.0 error variants
Add handling for new error types in iOS and Android examples: - RateLimited: Wait and retry with backoff - MaxSessionsExceeded: Close old sessions first - SessionExpired: Re-authenticate - ConnectionReset: Reconnect with backoff
1 parent 21bfbce commit ec74ebc

File tree

2 files changed

+44
-0
lines changed

2 files changed

+44
-0
lines changed

platforms/android/example/MainActivity.kt

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1176,6 +1176,30 @@ class MainActivity : AppCompatActivity() {
11761176
// Consider: Back off, check if blocked
11771177
}
11781178

1179+
is FfiNoiseError.RateLimited -> {
1180+
// Rate limited - wait and retry (v1.0.0)
1181+
Log.e(TAG, "$context: Rate limited - ${error.message}")
1182+
// Consider: Parse retry-after from message, wait before retrying
1183+
}
1184+
1185+
is FfiNoiseError.MaxSessionsExceeded -> {
1186+
// Too many sessions for this identity (v1.0.0)
1187+
Log.e(TAG, "$context: Maximum sessions exceeded")
1188+
// Consider: Close old sessions before creating new ones
1189+
}
1190+
1191+
is FfiNoiseError.SessionExpired -> {
1192+
// Session expired or not found (v1.0.0)
1193+
Log.e(TAG, "$context: Session expired - ${error.message}")
1194+
// Consider: Re-authenticate, create new session
1195+
}
1196+
1197+
is FfiNoiseError.ConnectionReset -> {
1198+
// Connection was reset (v1.0.0)
1199+
Log.e(TAG, "$context: Connection reset - ${error.message}")
1200+
// Consider: Reconnect with exponential backoff
1201+
}
1202+
11791203
is FfiNoiseError.RemoteStaticMissing -> {
11801204
// Server static key not available
11811205
Log.e(TAG, "$context: Remote static key missing")

platforms/ios/example/BasicExample.swift

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1015,6 +1015,26 @@ class NoiseManager {
10151015
print("[PubkyNoise] \(context): Policy violation - \(message)")
10161016
delegate?.noiseManager(self, didEncounterError: .policyError(message))
10171017

1018+
case .rateLimited(let message):
1019+
// Rate limited - wait and retry (v1.0.0)
1020+
print("[PubkyNoise] \(context): Rate limited - \(message)")
1021+
delegate?.noiseManager(self, didEncounterError: .policyError("Rate limited: \(message)"))
1022+
1023+
case .maxSessionsExceeded:
1024+
// Too many sessions for this identity (v1.0.0)
1025+
print("[PubkyNoise] \(context): Maximum sessions exceeded")
1026+
delegate?.noiseManager(self, didEncounterError: .policyError("Maximum sessions exceeded"))
1027+
1028+
case .sessionExpired(let message):
1029+
// Session expired or not found (v1.0.0)
1030+
print("[PubkyNoise] \(context): Session expired - \(message)")
1031+
delegate?.noiseManager(self, didEncounterError: .securityError("Session expired: \(message)"))
1032+
1033+
case .connectionReset(let message):
1034+
// Connection was reset (v1.0.0)
1035+
print("[PubkyNoise] \(context): Connection reset - \(message)")
1036+
delegate?.noiseManager(self, didEncounterError: .networkError("Connection reset: \(message)"))
1037+
10181038
case .remoteStaticMissing:
10191039
// Server static key not available
10201040
print("[PubkyNoise] \(context): Remote static key missing")

0 commit comments

Comments
 (0)