Merge branch 'develop'

This commit is contained in:
Thibault Deckers 2024-09-17 20:22:40 +02:00
commit 53b8e5b37b
14 changed files with 30 additions and 8 deletions

View file

@ -4,7 +4,7 @@ All notable changes to this project will be documented in this file.
## <a id="unreleased"></a>[Unreleased] ## <a id="unreleased"></a>[Unreleased]
## <a id="v1.11.12"></a>[v1.11.12] - 2024-09-16 ## <a id="v1.11.13"></a>[v1.11.13] - 2024-09-17
### Added ### Added
@ -19,6 +19,8 @@ All notable changes to this project will be documented in this file.
- crash when cataloguing some malformed MP4 files - crash when cataloguing some malformed MP4 files
- inconsistent launch screen - inconsistent launch screen
## <a id="v1.11.12"></a>[v1.11.12] - 2024-09-16 [YANKED AGAIN!]
## <a id="v1.11.11"></a>[v1.11.11] - 2024-09-16 [YANKED] ## <a id="v1.11.11"></a>[v1.11.11] - 2024-09-16 [YANKED]
## <a id="v1.11.10"></a>[v1.11.10] - 2024-09-01 ## <a id="v1.11.10"></a>[v1.11.10] - 2024-09-01

View file

@ -208,8 +208,8 @@ dependencies {
// - https://jitpack.io/p/deckerst/mp4parser // - https://jitpack.io/p/deckerst/mp4parser
// - https://jitpack.io/p/deckerst/pixymeta-android // - https://jitpack.io/p/deckerst/pixymeta-android
implementation 'com.github.deckerst:Android-TiffBitmapFactory:90c06eebf4' implementation 'com.github.deckerst:Android-TiffBitmapFactory:90c06eebf4'
implementation 'com.github.deckerst.mp4parser:isoparser:86d4b6baa1' implementation 'com.github.deckerst.mp4parser:isoparser:d5caf7a3dd'
implementation 'com.github.deckerst.mp4parser:muxer:86d4b6baa1' implementation 'com.github.deckerst.mp4parser:muxer:d5caf7a3dd'
implementation 'com.github.deckerst:pixymeta-android:9ec7097f17' implementation 'com.github.deckerst:pixymeta-android:9ec7097f17'
implementation project(':exifinterface') implementation project(':exifinterface')

View file

@ -320,7 +320,9 @@ open class MainActivity : FlutterFragmentActivity() {
val keyguardManager = getSystemService(Context.KEYGUARD_SERVICE) as android.app.KeyguardManager val keyguardManager = getSystemService(Context.KEYGUARD_SERVICE) as android.app.KeyguardManager
val isLocked = keyguardManager.isKeyguardLocked val isLocked = keyguardManager.isKeyguardLocked
setShowWhenLocked(isLocked) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
setShowWhenLocked(isLocked)
}
if (isLocked) { if (isLocked) {
// device is locked, so access to content is limited to intent URI by default // device is locked, so access to content is limited to intent URI by default
fields[INTENT_DATA_KEY_SECURE_URIS] = listOf(uri.toString()) fields[INTENT_DATA_KEY_SECURE_URIS] = listOf(uri.toString())

View file

@ -64,7 +64,7 @@ class MediaStoreHandler(private val context: Context) : MethodCallHandler {
} catch (e: Exception) { } catch (e: Exception) {
// may yield `IllegalArgumentException: Volume external_primary not found` // may yield `IllegalArgumentException: Volume external_primary not found`
val volumes = MediaStore.getExternalVolumeNames(context).joinToString(", ") 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 return
} }
} else { } else {

View file

@ -50,6 +50,7 @@ internal class FileImageProvider : ImageProvider() {
} }
} catch (e: SecurityException) { } catch (e: SecurityException) {
callback.onFailure(e) callback.onFailure(e)
return
} }
} }
entry.fillPreCatalogMetadata(context, safe = false) entry.fillPreCatalogMetadata(context, safe = false)

View file

@ -209,6 +209,7 @@ abstract class ImageProvider {
) { ) {
if (!supportedExportMimeTypes.contains(imageExportMimeType)) { if (!supportedExportMimeTypes.contains(imageExportMimeType)) {
callback.onFailure(Exception("unsupported export MIME type=$imageExportMimeType")) callback.onFailure(Exception("unsupported export MIME type=$imageExportMimeType"))
return
} }
val targetDirDocFile = StorageUtils.createDirectoryDocIfAbsent(activity, targetDir) val targetDirDocFile = StorageUtils.createDirectoryDocIfAbsent(activity, targetDir)
@ -858,6 +859,7 @@ abstract class ImageProvider {
} }
} catch (e: NoClassDefFoundError) { } catch (e: NoClassDefFoundError) {
callback.onFailure(e) callback.onFailure(e)
return false
} catch (e: Exception) { } catch (e: Exception) {
callback.onFailure(e) callback.onFailure(e)
return false return false

View file

@ -0,0 +1,3 @@
In v1.11.13:
- review photos from the lock screen
Full changelog available on GitHub

View file

@ -0,0 +1,3 @@
In v1.11.13:
- review photos from the lock screen
Full changelog available on GitHub

View file

@ -69,7 +69,9 @@ class PlatformMediaStoreService implements MediaStoreService {
try { try {
return await _platform.invokeMethod('getGeneration'); return await _platform.invokeMethod('getGeneration');
} on PlatformException catch (e, stack) { } on PlatformException catch (e, stack) {
await reportService.recordError(e, stack); if (e.code != 'getGeneration-primary') {
await reportService.recordError(e, stack);
}
} }
return null; return null;
} }

View file

@ -49,6 +49,8 @@ Future<Map<String, dynamic>> _drawWidget(dynamic args) async {
final reuseEntry = args['reuseEntry'] as bool; final reuseEntry = args['reuseEntry'] as bool;
final isSystemThemeDark = args['isSystemThemeDark'] as bool; final isSystemThemeDark = args['isSystemThemeDark'] as bool;
await reportService.log('Draw widget with widgetId=$widgetId');
final brightness = isSystemThemeDark ? Brightness.dark : Brightness.light; final brightness = isSystemThemeDark ? Brightness.dark : Brightness.light;
final outline = await settings.getWidgetOutline(widgetId).color(brightness); final outline = await settings.getWidgetOutline(widgetId).color(brightness);

View file

@ -8,6 +8,7 @@ import 'package:aves/model/source/album.dart';
import 'package:aves/model/source/collection_source.dart'; import 'package:aves/model/source/collection_source.dart';
import 'package:aves/model/vaults/details.dart'; import 'package:aves/model/vaults/details.dart';
import 'package:aves/model/vaults/vaults.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/durations.dart';
import 'package:aves/theme/icons.dart'; import 'package:aves/theme/icons.dart';
import 'package:aves/view/view.dart'; import 'package:aves/view/view.dart';
@ -35,6 +36,7 @@ Future<String?> pickAlbum({
}) async { }) async {
final source = context.read<CollectionSource>(); final source = context.read<CollectionSource>();
if (source.initState != SourceInitializationState.full) { if (source.initState != SourceInitializationState.full) {
await reportService.log('Complete source initialization to pick album');
// source may not be fully initialized in view mode // source may not be fully initialized in view mode
await source.init(); await source.init();
} }

View file

@ -209,12 +209,14 @@ class _HomePageState extends State<HomePage> {
final source = context.read<CollectionSource>(); final source = context.read<CollectionSource>();
source.safeMode = safeMode; source.safeMode = safeMode;
if (source.initState != SourceInitializationState.full) { if (source.initState != SourceInitializationState.full) {
await reportService.log('Initialize source (init state=${source.initState.name}) to start app with mode=$appMode');
await source.init( await source.init(
loadTopEntriesFirst: settings.homePage == HomePageSetting.collection && settings.homeCustomCollection.isEmpty, loadTopEntriesFirst: settings.homePage == HomePageSetting.collection && settings.homeCustomCollection.isEmpty,
); );
} }
case AppMode.screenSaver: case AppMode.screenSaver:
final source = context.read<CollectionSource>(); final source = context.read<CollectionSource>();
await reportService.log('Initialize source to start screen saver');
await source.init( await source.init(
canAnalyze: false, canAnalyze: false,
); );
@ -223,6 +225,7 @@ class _HomePageState extends State<HomePage> {
final directory = _viewerEntry?.directory; final directory = _viewerEntry?.directory;
if (directory != null) { if (directory != null) {
unawaited(AnalysisService.registerCallback()); unawaited(AnalysisService.registerCallback());
await reportService.log('Initialize source to view item in directory $directory');
final source = context.read<CollectionSource>(); final source = context.read<CollectionSource>();
await source.init( await source.init(
directory: directory, directory: directory,

View file

@ -7,7 +7,7 @@ repository: https://github.com/deckerst/aves
# - play changelog: /whatsnew/whatsnew-en-US # - play changelog: /whatsnew/whatsnew-en-US
# - izzy changelog: /fastlane/metadata/android/en-US/changelogs/XXX01.txt # - izzy changelog: /fastlane/metadata/android/en-US/changelogs/XXX01.txt
# - libre changelog: /fastlane/metadata/android/en-US/changelogs/XXX.txt # - libre changelog: /fastlane/metadata/android/en-US/changelogs/XXX.txt
version: 1.11.12+131 version: 1.11.13+132
publish_to: none publish_to: none
environment: environment:

View file

@ -1,3 +1,3 @@
In v1.11.12: In v1.11.13:
- review photos from the lock screen - review photos from the lock screen
Full changelog available on GitHub Full changelog available on GitHub