diff --git a/CHANGELOG.md b/CHANGELOG.md index f03db1a..cefe656 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,16 +1,20 @@ -## [1.0.3] - 2021-12-22 +## [1.0.4] - 2023-01-26 + +* feat: Added FutureOr in AsyncResult.Map + +## [1.0.3] - 2022-12-22 * fix: AsyncResult recover -## [1.0.2] - 2021-12-18 +## [1.0.2] - 2022-12-18 * fix: separed functions.dart import -## [1.0.1] - 2021-12-17 +## [1.0.1] - 2022-12-17 * fix: recover operator return a `Result` instead a `Failure`. -## [1.0.0+2] - 2021-12-16 +## [1.0.0+2] - 2022-12-16 * Initial release diff --git a/lib/src/async_result.dart b/lib/src/async_result.dart index 11dbb3f..4e929cf 100644 --- a/lib/src/async_result.dart +++ b/lib/src/async_result.dart @@ -26,8 +26,17 @@ extension AsyncResultExtension // /// Returns a new `AsyncResult`, mapping any `Success` value /// using the given transformation. - AsyncResult map(W Function(S success) fn) { - return then((result) => result.map(fn)); + AsyncResult map(FutureOr Function(S success) fn) { + return then( + (result) => result.map(fn).fold( + (success) async { + return Success(await success); + }, + (failure) { + return Failure(failure); + }, + ), + ); } /// Returns a new `Result`, mapping any `Error` value diff --git a/pubspec.yaml b/pubspec.yaml index 08e80db..158b205 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: result_dart description: Result for dart. It is an implementation based on Kotlin Result and Swift Result. -version: 1.0.3 +version: 1.0.4 repository: https://github.com/Flutterando/result_dart environment: diff --git a/test/src/async_result_test.dart b/test/src/async_result_test.dart index ed5da76..07e986a 100644 --- a/test/src/async_result_test.dart +++ b/test/src/async_result_test.dart @@ -41,6 +41,7 @@ void main() { .map((success) => success * 2); expect(result.getOrNull(), 2); + expect(const Failure(2).toAsyncResult().map(identity), completes); }); test('mapError', () async {