diff --git a/lib/model/metadata_db.dart b/lib/model/metadata_db.dart index 43edc1ec9..7d0cdda26 100644 --- a/lib/model/metadata_db.dart +++ b/lib/model/metadata_db.dart @@ -1,3 +1,5 @@ +import 'dart:io'; + import 'package:aves/model/image_metadata.dart'; import 'package:flutter/foundation.dart'; import 'package:path/path.dart'; @@ -27,6 +29,11 @@ class MetadataDb { ); } + Future dbFileSize() async { + final file = File((await path)); + return await file.exists() ? file.length() : 0; + } + Future reset() async { debugPrint('$runtimeType reset'); await (await _database).close(); diff --git a/lib/widgets/debug_page.dart b/lib/widgets/debug_page.dart index f7f46da3f..4948dbbcd 100644 --- a/lib/widgets/debug_page.dart +++ b/lib/widgets/debug_page.dart @@ -2,9 +2,8 @@ import 'package:aves/model/image_entry.dart'; import 'package:aves/model/image_metadata.dart'; import 'package:aves/model/metadata_db.dart'; import 'package:aves/model/settings.dart'; -import 'package:aves/utils/android_file_utils.dart'; +import 'package:aves/utils/file_utils.dart'; import 'package:aves/widgets/common/providers/media_query_data_provider.dart'; -import 'package:collection/collection.dart'; import 'package:flutter/material.dart'; import 'package:flutter/scheduler.dart'; @@ -18,6 +17,7 @@ class DebugPage extends StatefulWidget { } class DebugPageState extends State { + Future _dbFileSizeLoader; Future> _dbMetadataLoader; Future> _dbAddressLoader; @@ -26,8 +26,7 @@ class DebugPageState extends State { @override void initState() { super.initState(); - _dbMetadataLoader = metadataDb.loadMetadataEntries(); - _dbAddressLoader = metadataDb.loadAddresses(); + _startDbReport(); } @override @@ -54,9 +53,20 @@ class DebugPageState extends State { Text('With address: ${located.length}'), const Divider(), RaisedButton( - onPressed: () => metadataDb.reset(), + onPressed: () async { + await metadataDb.reset(); + _startDbReport(); + }, child: const Text('Reset DB'), ), + FutureBuilder( + future: _dbFileSizeLoader, + builder: (context, AsyncSnapshot snapshot) { + if (snapshot.hasError) return Text(snapshot.error.toString()); + if (snapshot.connectionState != ConnectionState.done) return const SizedBox.shrink(); + return Text('DB file size: ${formatFilesize(snapshot.data)}'); + }, + ), FutureBuilder( future: _dbMetadataLoader, builder: (context, AsyncSnapshot> snapshot) { @@ -88,4 +98,11 @@ class DebugPageState extends State { ), ); } + + void _startDbReport() { + _dbFileSizeLoader = metadataDb.dbFileSize(); + _dbMetadataLoader = metadataDb.loadMetadataEntries(); + _dbAddressLoader = metadataDb.loadAddresses(); + setState(() {}); + } }