diff --git a/CHANGELOG.md b/CHANGELOG.md index 09cb77c2d..752ec0678 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ All notable changes to this project will be documented in this file. ## [Unreleased] -## [v1.11.12] - 2024-09-16 +## [v1.11.13] - 2024-09-17 ### Added @@ -19,6 +19,8 @@ All notable changes to this project will be documented in this file. - crash when cataloguing some malformed MP4 files - inconsistent launch screen +## [v1.11.12] - 2024-09-16 [YANKED AGAIN!] + ## [v1.11.11] - 2024-09-16 [YANKED] ## [v1.11.10] - 2024-09-01 diff --git a/android/app/build.gradle b/android/app/build.gradle index fe76fbbec..897c3c32d 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -208,8 +208,8 @@ dependencies { // - https://jitpack.io/p/deckerst/mp4parser // - https://jitpack.io/p/deckerst/pixymeta-android implementation 'com.github.deckerst:Android-TiffBitmapFactory:90c06eebf4' - implementation 'com.github.deckerst.mp4parser:isoparser:86d4b6baa1' - implementation 'com.github.deckerst.mp4parser:muxer:86d4b6baa1' + implementation 'com.github.deckerst.mp4parser:isoparser:d5caf7a3dd' + implementation 'com.github.deckerst.mp4parser:muxer:d5caf7a3dd' implementation 'com.github.deckerst:pixymeta-android:9ec7097f17' implementation project(':exifinterface') diff --git a/android/app/src/main/kotlin/deckers/thibault/aves/MainActivity.kt b/android/app/src/main/kotlin/deckers/thibault/aves/MainActivity.kt index df5e8f671..1d9844578 100644 --- a/android/app/src/main/kotlin/deckers/thibault/aves/MainActivity.kt +++ b/android/app/src/main/kotlin/deckers/thibault/aves/MainActivity.kt @@ -320,7 +320,9 @@ open class MainActivity : FlutterFragmentActivity() { val keyguardManager = getSystemService(Context.KEYGUARD_SERVICE) as android.app.KeyguardManager val isLocked = keyguardManager.isKeyguardLocked - setShowWhenLocked(isLocked) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) { + setShowWhenLocked(isLocked) + } if (isLocked) { // device is locked, so access to content is limited to intent URI by default fields[INTENT_DATA_KEY_SECURE_URIS] = listOf(uri.toString()) diff --git a/android/app/src/main/kotlin/deckers/thibault/aves/channel/calls/MediaStoreHandler.kt b/android/app/src/main/kotlin/deckers/thibault/aves/channel/calls/MediaStoreHandler.kt index da82657a4..64b440b62 100644 --- a/android/app/src/main/kotlin/deckers/thibault/aves/channel/calls/MediaStoreHandler.kt +++ b/android/app/src/main/kotlin/deckers/thibault/aves/channel/calls/MediaStoreHandler.kt @@ -64,7 +64,7 @@ class MediaStoreHandler(private val context: Context) : MethodCallHandler { } catch (e: Exception) { // may yield `IllegalArgumentException: Volume external_primary not found` val volumes = MediaStore.getExternalVolumeNames(context).joinToString(", ") - result.error("getGeneration-primary", e.message + " (available volumes are $volumes)", e) + result.error("getGeneration-primary", e.message + " (available volumes are [$volumes])", e) return } } else { diff --git a/android/app/src/main/kotlin/deckers/thibault/aves/model/provider/FileImageProvider.kt b/android/app/src/main/kotlin/deckers/thibault/aves/model/provider/FileImageProvider.kt index 4405fe5e0..c145737e4 100644 --- a/android/app/src/main/kotlin/deckers/thibault/aves/model/provider/FileImageProvider.kt +++ b/android/app/src/main/kotlin/deckers/thibault/aves/model/provider/FileImageProvider.kt @@ -50,6 +50,7 @@ internal class FileImageProvider : ImageProvider() { } } catch (e: SecurityException) { callback.onFailure(e) + return } } entry.fillPreCatalogMetadata(context, safe = false) diff --git a/android/app/src/main/kotlin/deckers/thibault/aves/model/provider/ImageProvider.kt b/android/app/src/main/kotlin/deckers/thibault/aves/model/provider/ImageProvider.kt index a5f56c454..1d6d6a60a 100644 --- a/android/app/src/main/kotlin/deckers/thibault/aves/model/provider/ImageProvider.kt +++ b/android/app/src/main/kotlin/deckers/thibault/aves/model/provider/ImageProvider.kt @@ -209,6 +209,7 @@ abstract class ImageProvider { ) { if (!supportedExportMimeTypes.contains(imageExportMimeType)) { callback.onFailure(Exception("unsupported export MIME type=$imageExportMimeType")) + return } val targetDirDocFile = StorageUtils.createDirectoryDocIfAbsent(activity, targetDir) @@ -858,6 +859,7 @@ abstract class ImageProvider { } } catch (e: NoClassDefFoundError) { callback.onFailure(e) + return false } catch (e: Exception) { callback.onFailure(e) return false diff --git a/fastlane/metadata/android/en-US/changelogs/132.txt b/fastlane/metadata/android/en-US/changelogs/132.txt new file mode 100644 index 000000000..c0c7c4762 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/132.txt @@ -0,0 +1,3 @@ +In v1.11.13: +- review photos from the lock screen +Full changelog available on GitHub \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/changelogs/13201.txt b/fastlane/metadata/android/en-US/changelogs/13201.txt new file mode 100644 index 000000000..c0c7c4762 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/13201.txt @@ -0,0 +1,3 @@ +In v1.11.13: +- review photos from the lock screen +Full changelog available on GitHub \ No newline at end of file diff --git a/lib/services/media/media_store_service.dart b/lib/services/media/media_store_service.dart index f60414ee7..3e1e8511a 100644 --- a/lib/services/media/media_store_service.dart +++ b/lib/services/media/media_store_service.dart @@ -69,7 +69,9 @@ class PlatformMediaStoreService implements MediaStoreService { try { return await _platform.invokeMethod('getGeneration'); } on PlatformException catch (e, stack) { - await reportService.recordError(e, stack); + if (e.code != 'getGeneration-primary') { + await reportService.recordError(e, stack); + } } return null; } diff --git a/lib/widget_common.dart b/lib/widget_common.dart index 7432c4e7e..73d9b81f6 100644 --- a/lib/widget_common.dart +++ b/lib/widget_common.dart @@ -49,6 +49,8 @@ Future> _drawWidget(dynamic args) async { final reuseEntry = args['reuseEntry'] as bool; final isSystemThemeDark = args['isSystemThemeDark'] as bool; + await reportService.log('Draw widget with widgetId=$widgetId'); + final brightness = isSystemThemeDark ? Brightness.dark : Brightness.light; final outline = await settings.getWidgetOutline(widgetId).color(brightness); diff --git a/lib/widgets/dialogs/pick_dialogs/album_pick_page.dart b/lib/widgets/dialogs/pick_dialogs/album_pick_page.dart index 1b2fc2f2d..7f2eec78a 100644 --- a/lib/widgets/dialogs/pick_dialogs/album_pick_page.dart +++ b/lib/widgets/dialogs/pick_dialogs/album_pick_page.dart @@ -8,6 +8,7 @@ import 'package:aves/model/source/album.dart'; import 'package:aves/model/source/collection_source.dart'; import 'package:aves/model/vaults/details.dart'; import 'package:aves/model/vaults/vaults.dart'; +import 'package:aves/services/common/services.dart'; import 'package:aves/theme/durations.dart'; import 'package:aves/theme/icons.dart'; import 'package:aves/view/view.dart'; @@ -35,6 +36,7 @@ Future pickAlbum({ }) async { final source = context.read(); if (source.initState != SourceInitializationState.full) { + await reportService.log('Complete source initialization to pick album'); // source may not be fully initialized in view mode await source.init(); } diff --git a/lib/widgets/home_page.dart b/lib/widgets/home_page.dart index af2980cca..8b22f2669 100644 --- a/lib/widgets/home_page.dart +++ b/lib/widgets/home_page.dart @@ -209,12 +209,14 @@ class _HomePageState extends State { final source = context.read(); source.safeMode = safeMode; if (source.initState != SourceInitializationState.full) { + await reportService.log('Initialize source (init state=${source.initState.name}) to start app with mode=$appMode'); await source.init( loadTopEntriesFirst: settings.homePage == HomePageSetting.collection && settings.homeCustomCollection.isEmpty, ); } case AppMode.screenSaver: final source = context.read(); + await reportService.log('Initialize source to start screen saver'); await source.init( canAnalyze: false, ); @@ -223,6 +225,7 @@ class _HomePageState extends State { final directory = _viewerEntry?.directory; if (directory != null) { unawaited(AnalysisService.registerCallback()); + await reportService.log('Initialize source to view item in directory $directory'); final source = context.read(); await source.init( directory: directory, diff --git a/pubspec.yaml b/pubspec.yaml index c3345c489..a0fd8ce63 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -7,7 +7,7 @@ repository: https://github.com/deckerst/aves # - play changelog: /whatsnew/whatsnew-en-US # - izzy changelog: /fastlane/metadata/android/en-US/changelogs/XXX01.txt # - libre changelog: /fastlane/metadata/android/en-US/changelogs/XXX.txt -version: 1.11.12+131 +version: 1.11.13+132 publish_to: none environment: diff --git a/whatsnew/whatsnew-en-US b/whatsnew/whatsnew-en-US index d76189ea3..c0c7c4762 100644 --- a/whatsnew/whatsnew-en-US +++ b/whatsnew/whatsnew-en-US @@ -1,3 +1,3 @@ -In v1.11.12: +In v1.11.13: - review photos from the lock screen Full changelog available on GitHub \ No newline at end of file