From 951bc77be8e2177435c0c94cc3667b24064dbdc5 Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Thu, 8 Dec 2022 14:30:34 +0100 Subject: [PATCH] refactor(cloud_functions): remove deprecated Task APIs (#10076) --- .../FlutterFirebaseFunctionsPlugin.java | 58 ++++++++++++------- 1 file changed, 38 insertions(+), 20 deletions(-) diff --git a/packages/cloud_functions/cloud_functions/android/src/main/java/io/flutter/plugins/firebase/functions/FlutterFirebaseFunctionsPlugin.java b/packages/cloud_functions/cloud_functions/android/src/main/java/io/flutter/plugins/firebase/functions/FlutterFirebaseFunctionsPlugin.java index c56199416951..a5defa1c0932 100644 --- a/packages/cloud_functions/cloud_functions/android/src/main/java/io/flutter/plugins/firebase/functions/FlutterFirebaseFunctionsPlugin.java +++ b/packages/cloud_functions/cloud_functions/android/src/main/java/io/flutter/plugins/firebase/functions/FlutterFirebaseFunctionsPlugin.java @@ -8,6 +8,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.google.android.gms.tasks.Task; +import com.google.android.gms.tasks.TaskCompletionSource; import com.google.android.gms.tasks.Tasks; import com.google.firebase.FirebaseApp; import com.google.firebase.functions.FirebaseFunctions; @@ -60,31 +61,40 @@ private FirebaseFunctions getFunctions(Map arguments) { } private Task httpsFunctionCall(Map arguments) { - return Tasks.call( - cachedThreadPool, + TaskCompletionSource taskCompletionSource = new TaskCompletionSource<>(); + + cachedThreadPool.execute( () -> { - FirebaseFunctions firebaseFunctions = getFunctions(arguments); + try { - String functionName = (String) Objects.requireNonNull(arguments.get("functionName")); - String origin = (String) arguments.get("origin"); - Integer timeout = (Integer) arguments.get("timeout"); - Object parameters = arguments.get("parameters"); + FirebaseFunctions firebaseFunctions = getFunctions(arguments); - if (origin != null) { - Uri originUri = Uri.parse(origin); - firebaseFunctions.useEmulator(originUri.getHost(), originUri.getPort()); - } + String functionName = (String) Objects.requireNonNull(arguments.get("functionName")); + String origin = (String) arguments.get("origin"); + Integer timeout = (Integer) arguments.get("timeout"); + Object parameters = arguments.get("parameters"); - HttpsCallableReference httpsCallableReference = - firebaseFunctions.getHttpsCallable(functionName); + if (origin != null) { + Uri originUri = Uri.parse(origin); + firebaseFunctions.useEmulator(originUri.getHost(), originUri.getPort()); + } - if (timeout != null) { - httpsCallableReference.setTimeout(timeout.longValue(), TimeUnit.MILLISECONDS); - } + HttpsCallableReference httpsCallableReference = + firebaseFunctions.getHttpsCallable(functionName); - HttpsCallableResult result = Tasks.await(httpsCallableReference.call(parameters)); - return result.getData(); + if (timeout != null) { + httpsCallableReference.setTimeout(timeout.longValue(), TimeUnit.MILLISECONDS); + } + + HttpsCallableResult result = Tasks.await(httpsCallableReference.call(parameters)); + taskCompletionSource.setResult(result.getData()); + + } catch (Exception e) { + taskCompletionSource.setException(e); + } }); + + return taskCompletionSource.getTask(); } @Override @@ -156,11 +166,19 @@ private Map getExceptionDetails(@Nullable Exception exception) { @Override public Task> getPluginConstantsForFirebaseApp(FirebaseApp firebaseApp) { - return Tasks.call(() -> null); + TaskCompletionSource> taskCompletionSource = new TaskCompletionSource<>(); + + cachedThreadPool.execute(() -> taskCompletionSource.setResult(null)); + + return taskCompletionSource.getTask(); } @Override public Task didReinitializeFirebaseCore() { - return Tasks.call(() -> null); + TaskCompletionSource taskCompletionSource = new TaskCompletionSource<>(); + + cachedThreadPool.execute(() -> taskCompletionSource.setResult(null)); + + return taskCompletionSource.getTask(); } }