Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -447,7 +447,7 @@ class MethodHandler : FlutterPlugin,
map["planId"] as String
)
withContext(Dispatchers.Main) {
success(subscriptionData)
success(subscriptionData.toByteArray(Charsets.UTF_8))
}
}.onFailure { e ->
result.error(
Expand Down Expand Up @@ -512,9 +512,9 @@ class MethodHandler : FlutterPlugin,
scope.launch {
result.runCatching {
val token = call.arguments<String>()
val bytes = Mobile.oAuthLoginCallback(token)
val json = Mobile.oAuthLoginCallback(token)
withContext(Dispatchers.Main) {
success(bytes)
success(json.toByteArray(Charsets.UTF_8))
}
}.onFailure { e ->
result.error(
Expand All @@ -529,9 +529,9 @@ class MethodHandler : FlutterPlugin,
Methods.GetUserData.method -> {
scope.launch {
result.runCatching {
val bytes = Mobile.userData()
val json = Mobile.userData()
withContext(Dispatchers.Main) {
success(bytes)
success(json.toByteArray(Charsets.UTF_8))
}
}.onFailure { e ->
result.error(
Expand All @@ -546,9 +546,9 @@ class MethodHandler : FlutterPlugin,
Methods.FetchUserData.method -> {
scope.launch {
result.runCatching {
val bytes = Mobile.fetchUserData()
val json = Mobile.fetchUserData()
withContext(Dispatchers.Main) {
success(bytes)
success(json.toByteArray(Charsets.UTF_8))
}

}.onFailure { e ->
Expand Down Expand Up @@ -647,9 +647,9 @@ class MethodHandler : FlutterPlugin,
val map = call.arguments as Map<*, *>
val email = map["email"] as String? ?: error("Missing email")
val password = map["password"] as String? ?: error("Missing password")
val bytes = Mobile.login(email, password)
val json = Mobile.login(email, password)
withContext(Dispatchers.Main) {
success(bytes)
success(json.toByteArray(Charsets.UTF_8))
}
}.onFailure { e ->
result.error(
Expand Down Expand Up @@ -686,9 +686,9 @@ class MethodHandler : FlutterPlugin,
result.runCatching {
val email = call.arguments<String>();
AppLogger.d(TAG, "Logout email: $email")
val bytes = Mobile.logout(email)
val json = Mobile.logout(email)
withContext(Dispatchers.Main) {
success(bytes)
success(json.toByteArray(Charsets.UTF_8))
}
}.onFailure { e ->
result.error(
Expand All @@ -707,9 +707,9 @@ class MethodHandler : FlutterPlugin,
val email = map["email"] as String? ?: error("Missing email")
val password = map["password"] as String? ?: error("Missing password")
val isSSO = map["isSSO"] as Boolean? ?: error("Missing isSSO")
val bytes = Mobile.deleteAccount(email, password,isSSO)
val json = Mobile.deleteAccount(email, password,isSSO)
withContext(Dispatchers.Main) {
success(bytes)
success(json.toByteArray(Charsets.UTF_8))
}
}.onFailure { e ->
result.error(
Expand Down Expand Up @@ -1032,9 +1032,9 @@ class MethodHandler : FlutterPlugin,
Methods.FeatureFlag.method -> {
scope.launch {
result.runCatching {
val map = Mobile.availableFeatures()
val flags = Mobile.availableFeatures()
withContext(Dispatchers.Main) {
success(String(map))
success(if (flags.isEmpty()) "{}" else flags)
}
}.onFailure { e ->
result.error(
Expand Down Expand Up @@ -1092,7 +1092,7 @@ class MethodHandler : FlutterPlugin,
result.runCatching {
val data = Mobile.getAvailableServers()
withContext(Dispatchers.Main) {
success(String(data))
success(if (data.isEmpty()) "[]" else data)
}
}.onFailure { e ->
result.error(
Expand Down Expand Up @@ -1124,7 +1124,7 @@ class MethodHandler : FlutterPlugin,
Methods.GetSelectedServerJSON.method -> {
scope.handleValue(result, "get_selected_server_json") {
val data = Mobile.getSelectedServerJSON()
if (data != null && data.isNotEmpty()) String(data) else "{}"
if (data.isNullOrEmpty()) "{}" else data
}
}

Expand Down
49 changes: 19 additions & 30 deletions ios/Runner/Handlers/MethodHandler.swift
Original file line number Diff line number Diff line change
Expand Up @@ -438,27 +438,29 @@ class MethodHandler {
private func oauthLoginCallback(result: @escaping FlutterResult, token: String) {
Task {
var error: NSError?
let data = try MobileOAuthLoginCallback(token, &error)
let json = try MobileOAuthLoginCallback(token, &error)
if let error {
await self.handleFlutterError(error, result: result, code: "OAUTH_LOGIN_CALLBACK")
return
}
await MainActor.run {
result(data)
// Dart side expects bytes to utf8.decode — convert the gomobile-returned
// string back to Data to preserve the Flutter contract.
result(json?.data(using: .utf8))
}
}
}

private func getUserData(result: @escaping FlutterResult) {
Task {
var error: NSError?
let data = try MobileUserData(&error)
let json = try MobileUserData(&error)
if let error {
await self.handleFlutterError(error, result: result, code: "USER_DATA_ERROR")
return
}
await MainActor.run {
result(data)
result(json?.data(using: .utf8))
}
}
}
Expand All @@ -480,13 +482,13 @@ class MethodHandler {
private func fetchUserData(result: @escaping FlutterResult) {
Task {
var error: NSError?
let bytes = MobileFetchUserData(&error)
let json = MobileFetchUserData(&error)
if let error {
await self.handleFlutterError(error, result: result, code: "FETCH_USER_DATA_ERROR")
return
}
await MainActor.run {
result(bytes)
result(json?.data(using: .utf8))
}
}
}
Expand Down Expand Up @@ -536,13 +538,13 @@ class MethodHandler {
func acknowledgeInAppPurchase(token: String, planId: String, result: @escaping FlutterResult) {
Task {
var error: NSError?
let data = MobileAcknowledgeApplePurchase(token, planId, &error)
let json = MobileAcknowledgeApplePurchase(token, planId, &error)
if let error {
await self.handleFlutterError(error, result: result, code: "ACKNOWLEDGE_FAILED")
return
}
await MainActor.run {
result(data)
result(json?.data(using: .utf8))
}
}
}
Expand Down Expand Up @@ -607,7 +609,7 @@ class MethodHandler {
return
}
await MainActor.run {
result(payload)
result(payload?.data(using: .utf8))
}
}
}
Expand Down Expand Up @@ -635,7 +637,7 @@ class MethodHandler {
return
}
await MainActor.run {
result(payload)
result(payload?.data(using: .utf8))
}
}
}
Expand All @@ -652,7 +654,7 @@ class MethodHandler {
return
}
await MainActor.run {
result(payload)
result(payload?.data(using: .utf8))
}
}
}
Expand Down Expand Up @@ -930,15 +932,9 @@ class MethodHandler {

func featureFlags(result: @escaping FlutterResult) {
Task {
let flags = MobileAvailableFeatures()
guard let flags else {
await MainActor.run {
result("{}")
}
return
}
let flags = MobileAvailableFeatures() ?? ""
await MainActor.run {
result(String(data: flags, encoding: .utf8))
result(flags.isEmpty ? "{}" : flags)
}
}
}
Expand All @@ -963,12 +959,9 @@ class MethodHandler {
await self.handleFlutterError(error, result: result, code: "GET_LANTERN_SERVERS_ERROR")
return
}
guard let servers else {
await MainActor.run { result("[]") }
return
}
await MainActor.run {
result(String(data: servers, encoding: .utf8))
let s = servers ?? ""
result(s.isEmpty ? "[]" : s)
}
}
}
Expand All @@ -995,12 +988,8 @@ class MethodHandler {
await self.handleFlutterError(error, result: result, code: "GET_SELECTED_SERVER_ERROR")
return
}
let json: String
if let data, let decoded = String(data: data, encoding: .utf8), !decoded.isEmpty {
json = decoded
} else {
json = "{}"
}
let s = data ?? ""
let json = s.isEmpty ? "{}" : s
await MainActor.run {
result(json)
}
Expand Down
Loading
Loading