Commit cc628ff

derdilla <82763757+NobodyForNothing@users.noreply.github.com>
2023-10-01 08:15:14
add config.db export
Signed-off-by: derdilla <82763757+NobodyForNothing@users.noreply.github.com>
1 parent 7aa717a
Changed files (3)
lib
lib/l10n/app_en.arb
@@ -427,5 +427,7 @@
   "note": "Note",
   "@note": {},
   "color": "Color",
-  "@color": {}
+  "@color": {},
+  "exportConfigDB": "export config.db",
+  "configDBExplainer": "The config.db does not include all configuration info. For more debug information use the copy button at the top."
 }
lib/screens/subsettings/version.dart
@@ -1,9 +1,14 @@
+import 'dart:io';
+
 import 'package:blood_pressure_app/components/consistent_future_builder.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/services.dart';
 import 'package:flutter_gen/gen_l10n/app_localizations.dart';
 import 'package:package_info_plus/package_info_plus.dart';
+import 'package:path/path.dart';
+import 'package:share_plus/share_plus.dart';
 import 'package:shared_preferences/shared_preferences.dart';
+import 'package:sqflite/sqflite.dart';
 
 class VersionScreen extends StatelessWidget {
 
@@ -41,18 +46,41 @@ class VersionScreen extends StatelessWidget {
             child: ConsistentFutureBuilder<List<Object>>(
               future: Future.wait([PackageInfo.fromPlatform(), SharedPreferences.getInstance()]),
               onData: (context, data) {
-                final localizations = AppLocalizations.of(context);
                 PackageInfo packageInfo = data[0] as PackageInfo;
                 SharedPreferences sharedPrefs = data[1] as SharedPreferences;
 
                 return Column(
                     crossAxisAlignment: CrossAxisAlignment.start,
                     children: [
-                      Text(localizations!.packageNameOf(packageInfo.packageName)),
+                      Text(localizations.packageNameOf(packageInfo.packageName)),
                       Text(localizations.versionOf(packageInfo.version)),
                       Text(localizations.buildNumberOf(packageInfo.buildNumber)),
                       Text(localizations.buildSignatureOf(packageInfo.buildSignature)),
-                      const SizedBox(height: 30,),
+                      Container(
+                        padding: const EdgeInsets.symmetric(vertical: 20),
+                        child: Column(
+                          children: [
+                            Center(
+                              child: FilledButton.icon(
+                                onPressed: () async {
+                                  var dbPath = await getDatabasesPath();
+
+                                  assert(dbPath != inMemoryDatabasePath);
+                                  dbPath = join(dbPath, 'config.db');
+                                  assert(Platform.isAndroid);
+                                  Share.shareXFiles([
+                                    XFile(dbPath,)
+                                  ]);
+                                },
+                                icon: const Icon(Icons.share),
+                                label: Text(localizations.exportConfigDB),
+                              ),
+                            ),
+                            Text(localizations.configDBExplainer,
+                                style: Theme.of(context).textTheme.labelMedium,),
+                          ],
+                        ),
+                      ),
                       Text(localizations.sharedPrefsDump),
                       Table(
                         children: [
lib/screens/error_reporting.dart
@@ -114,6 +114,24 @@ class ErrorScreen extends StatelessWidget {
                       },
                       child: const Text('rescue measurements')
                   ),
+                  TextButton(
+                      onPressed: () async {
+                        try {
+                          var dbPath = await getDatabasesPath();
+
+                          assert(dbPath != inMemoryDatabasePath);
+                          dbPath = join(dbPath, 'config.db');
+                          assert(Platform.isAndroid);
+                          Share.shareXFiles([
+                            XFile(dbPath,)
+                          ]);
+                        } catch(e) {
+                          scaffoldMessenger.showSnackBar(SnackBar(
+                              content: Text('ERR: ${e.toString()}')));
+                        }
+                      },
+                      child: const Text('rescue config.db')
+                  ),
                   TextButton(
                       onPressed: () async {
                         try {