From a6c7f48799de8ac2397553f03a10109691b06439 Mon Sep 17 00:00:00 2001 From: Thibault Deckers Date: Thu, 11 Jun 2020 14:59:48 +0900 Subject: [PATCH] fix when reporting error from native platform --- .../channelhandlers/ImageFileHandler.java | 6 +++--- lib/main.dart | 19 +++++++++++++------ 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/android/app/src/main/java/deckers/thibault/aves/channelhandlers/ImageFileHandler.java b/android/app/src/main/java/deckers/thibault/aves/channelhandlers/ImageFileHandler.java index 8a529cf98..b162bc07a 100644 --- a/android/app/src/main/java/deckers/thibault/aves/channelhandlers/ImageFileHandler.java +++ b/android/app/src/main/java/deckers/thibault/aves/channelhandlers/ImageFileHandler.java @@ -112,7 +112,7 @@ public class ImageFileHandler implements MethodChannel.MethodCallHandler { @Override public void onFailure(Throwable throwable) { - result.error("getImageEntry-failure", "failed to get entry for uri=" + uriString, throwable); + result.error("getImageEntry-failure", "failed to get entry for uri=" + uriString, throwable.getMessage()); } }); } @@ -141,7 +141,7 @@ public class ImageFileHandler implements MethodChannel.MethodCallHandler { @Override public void onFailure(Throwable throwable) { - new Handler(Looper.getMainLooper()).post(() -> result.error("rename-failure", "failed to rename", throwable)); + new Handler(Looper.getMainLooper()).post(() -> result.error("rename-failure", "failed to rename", throwable.getMessage())); } }); } @@ -170,7 +170,7 @@ public class ImageFileHandler implements MethodChannel.MethodCallHandler { @Override public void onFailure(Throwable throwable) { - new Handler(Looper.getMainLooper()).post(() -> result.error("rotate-failure", "failed to rotate", throwable)); + new Handler(Looper.getMainLooper()).post(() -> result.error("rotate-failure", "failed to rotate", throwable.getMessage())); } }); } diff --git a/lib/main.dart b/lib/main.dart index f30bf99c6..96a4fe0f3 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -123,10 +123,14 @@ class _HomePageState extends State { switch (action) { case 'view': AvesApp.mode = AppMode.view; - await _initViewerEntry( + _viewerEntry = await _initViewerEntry( uri: intentData['uri'], mimeType: intentData['mimeType'], ); + if (_viewerEntry == null) { + // fallback to default mode when we fail to retrieve the entry + AvesApp.mode = AppMode.main; + } break; case 'pick': AvesApp.mode = AppMode.pick; @@ -140,11 +144,14 @@ class _HomePageState extends State { } } - Future _initViewerEntry({@required String uri, @required String mimeType}) async { - _viewerEntry = await ImageFileService.getImageEntry(uri, mimeType); - // cataloguing is essential for geolocation and video rotation - await _viewerEntry.catalog(); - unawaited(_viewerEntry.locate()); + Future _initViewerEntry({@required String uri, @required String mimeType}) async { + final entry = await ImageFileService.getImageEntry(uri, mimeType); + if (entry != null) { + // cataloguing is essential for geolocation and video rotation + await entry.catalog(); + unawaited(entry.locate()); + } + return entry; } @override