diff --git a/AUTHORS b/AUTHORS index 946ae58c5e3d..3e92a7ecf400 100644 --- a/AUTHORS +++ b/AUTHORS @@ -43,4 +43,5 @@ Audrius Karosevicius Lukasz Piliszczuk SoundReply Solutions GmbH Michel Feinstein -Tobias Löfstrand \ No newline at end of file +Tobias Löfstrand +Stephen Beitzel \ No newline at end of file diff --git a/packages/cloud_functions/cloud_functions/CHANGELOG.md b/packages/cloud_functions/cloud_functions/CHANGELOG.md index c3b1d36a75a7..b2a37afbee68 100644 --- a/packages/cloud_functions/cloud_functions/CHANGELOG.md +++ b/packages/cloud_functions/cloud_functions/CHANGELOG.md @@ -1,3 +1,9 @@ +## 0.4.1+7 + +* Update to use the platform interface to execute calls. +* Fix timeout for Android (which had been ignoring explicit timeouts due to unit mismatch). +* Update repository location based on platform interface refactoring. + ## 0.4.1+6 * Fix analysis failures diff --git a/packages/cloud_functions/cloud_functions/android/src/main/java/io/flutter/plugins/firebase/cloudfunctions/CloudFunctionsPlugin.java b/packages/cloud_functions/cloud_functions/android/src/main/java/io/flutter/plugins/firebase/cloudfunctions/CloudFunctionsPlugin.java index 7f7316727751..34a570c1d73d 100644 --- a/packages/cloud_functions/cloud_functions/android/src/main/java/io/flutter/plugins/firebase/cloudfunctions/CloudFunctionsPlugin.java +++ b/packages/cloud_functions/cloud_functions/android/src/main/java/io/flutter/plugins/firebase/cloudfunctions/CloudFunctionsPlugin.java @@ -49,9 +49,9 @@ public void onMethodCall(MethodCall call, final Result result) { functions.useFunctionsEmulator(origin); } HttpsCallableReference httpsCallableReference = functions.getHttpsCallable(functionName); - Number timeoutMilliseconds = call.argument("timeoutMilliseconds"); - if (timeoutMilliseconds != null) { - httpsCallableReference.setTimeout(timeoutMilliseconds.longValue(), TimeUnit.MILLISECONDS); + Number timeoutMicroseconds = call.argument("timeoutMicroseconds"); + if (timeoutMicroseconds != null) { + httpsCallableReference.setTimeout(timeoutMicroseconds.longValue(), TimeUnit.MICROSECONDS); } httpsCallableReference .call(parameters) diff --git a/packages/cloud_functions/cloud_functions/lib/cloud_functions.dart b/packages/cloud_functions/cloud_functions/lib/cloud_functions.dart index 068d3040cfee..0a0ae1ea4d51 100644 --- a/packages/cloud_functions/cloud_functions/lib/cloud_functions.dart +++ b/packages/cloud_functions/cloud_functions/lib/cloud_functions.dart @@ -5,6 +5,8 @@ library cloud_functions; import 'dart:async'; + +import 'package:cloud_functions_platform_interface/cloud_functions_platform_interface.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:flutter/services.dart'; import 'package:meta/meta.dart'; diff --git a/packages/cloud_functions/cloud_functions/lib/src/cloud_functions.dart b/packages/cloud_functions/cloud_functions/lib/src/cloud_functions.dart index d15db7b49a1f..7575d6f2fb7f 100644 --- a/packages/cloud_functions/cloud_functions/lib/src/cloud_functions.dart +++ b/packages/cloud_functions/cloud_functions/lib/src/cloud_functions.dart @@ -20,9 +20,6 @@ class CloudFunctions { : _app = app ?? FirebaseApp.instance, _region = region; - @visibleForTesting - static const MethodChannel channel = MethodChannel('cloud_functions'); - static CloudFunctions _instance = CloudFunctions(); static CloudFunctions get instance => _instance; diff --git a/packages/cloud_functions/cloud_functions/lib/src/https_callable.dart b/packages/cloud_functions/cloud_functions/lib/src/https_callable.dart index 6ae34dbf73f5..b06a85831866 100644 --- a/packages/cloud_functions/cloud_functions/lib/src/https_callable.dart +++ b/packages/cloud_functions/cloud_functions/lib/src/https_callable.dart @@ -27,19 +27,18 @@ class HttpsCallable { /// automatically includes a Firebase Instance ID token to identify the app /// instance. If a user is logged in with Firebase Auth, an auth ID token for /// the user is also automatically included. - Future call([dynamic parameters]) async { + Future call([dynamic parameters]) { try { - final MethodChannel channel = CloudFunctions.channel; - final dynamic response = await channel - .invokeMethod('CloudFunctions#call', { - 'app': _cloudFunctions._app.name, - 'region': _cloudFunctions._region, - 'origin': _cloudFunctions._origin, - 'timeoutMicroseconds': timeout?.inMicroseconds, - 'functionName': _functionName, - 'parameters': parameters, - }); - return HttpsCallableResult._(response); + return CloudFunctionsPlatform.instance + .callCloudFunction( + appName: _cloudFunctions._app.name, + region: _cloudFunctions._region, + origin: _cloudFunctions._origin, + timeout: timeout, + functionName: _functionName, + parameters: parameters, + ) + .then((response) => HttpsCallableResult._(response)); } on PlatformException catch (e) { if (e.code == 'functionsError') { final String code = e.details['code']; diff --git a/packages/cloud_functions/cloud_functions/pubspec.yaml b/packages/cloud_functions/cloud_functions/pubspec.yaml index f8b0f87b15cb..cd51800d9fbe 100644 --- a/packages/cloud_functions/cloud_functions/pubspec.yaml +++ b/packages/cloud_functions/cloud_functions/pubspec.yaml @@ -1,7 +1,7 @@ name: cloud_functions description: Flutter plugin for Cloud Functions. -version: 0.4.1+6 -homepage: https://github.com/FirebaseExtended/flutterfire/tree/master/packages/cloud_functions +version: 0.4.1+7 +homepage: https://github.com/FirebaseExtended/flutterfire/tree/master/packages/cloud_functions/cloud_functions flutter: plugin: @@ -17,6 +17,7 @@ dependencies: flutter: sdk: flutter firebase_core: ^0.4.0 + cloud_functions_platform_interface: ^1.0.0 dev_dependencies: flutter_test: diff --git a/packages/cloud_functions/cloud_functions/test/cloud_functions_test.dart b/packages/cloud_functions/cloud_functions/test/cloud_functions_test.dart index 7b07212e96da..c9271d78208e 100644 --- a/packages/cloud_functions/cloud_functions/test/cloud_functions_test.dart +++ b/packages/cloud_functions/cloud_functions/test/cloud_functions_test.dart @@ -3,6 +3,7 @@ // BSD-style license that can be found in the LICENSE file. import 'package:cloud_functions/cloud_functions.dart'; +import 'package:cloud_functions_platform_interface/cloud_functions_platform_interface.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:flutter/services.dart'; import 'package:flutter_test/flutter_test.dart'; @@ -14,7 +15,7 @@ void main() { final List log = []; setUp(() async { - CloudFunctions.channel + MethodChannelCloudFunctions.channel .setMockMethodCallHandler((MethodCall methodCall) async { log.add(methodCall); switch (methodCall.method) {