From ebe02f4dfb15bc17143649825aa81a0f7e57066d Mon Sep 17 00:00:00 2001 From: Thibault Deckers Date: Fri, 18 Sep 2020 16:15:48 +0900 Subject: [PATCH] welcome: crash reporting opt-out --- lib/main.dart | 12 +++++++++++- lib/model/settings/settings.dart | 2 +- lib/widgets/home_page.dart | 2 ++ lib/widgets/welcome_page.dart | 29 +++++++++++++++++++++-------- 4 files changed, 35 insertions(+), 10 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 5298919b4..a7988e332 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -7,6 +7,7 @@ import 'package:aves/widgets/home_page.dart'; import 'package:aves/widgets/welcome_page.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_crashlytics/firebase_crashlytics.dart'; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:overlay_support/overlay_support.dart'; @@ -47,7 +48,16 @@ class _AvesAppState extends State { } Future _setup() async { - await Firebase.initializeApp().then((app) => FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterError); + await Firebase.initializeApp().then((app) { + FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterError; + FirebaseCrashlytics.instance.setCustomKey( + 'build_mode', + kReleaseMode + ? 'release' + : kProfileMode + ? 'profile' + : 'debug'); + }); await settings.init(); } diff --git a/lib/model/settings/settings.dart b/lib/model/settings/settings.dart index 448e5c103..93d54b742 100644 --- a/lib/model/settings/settings.dart +++ b/lib/model/settings/settings.dart @@ -64,7 +64,7 @@ class Settings extends ChangeNotifier { set hasAcceptedTerms(bool newValue) => setAndNotify(hasAcceptedTermsKey, newValue); - bool get isCrashlyticsEnabled => getBoolOrDefault(isCrashlyticsEnabledKey, false); + bool get isCrashlyticsEnabled => getBoolOrDefault(isCrashlyticsEnabledKey, true); set isCrashlyticsEnabled(bool newValue) { setAndNotify(isCrashlyticsEnabledKey, newValue); diff --git a/lib/widgets/home_page.dart b/lib/widgets/home_page.dart index 753e3ab94..5dd7eaf71 100644 --- a/lib/widgets/home_page.dart +++ b/lib/widgets/home_page.dart @@ -14,6 +14,7 @@ import 'package:aves/widgets/common/data_providers/media_store_collection_provid import 'package:aves/widgets/common/routes.dart'; import 'package:aves/widgets/filter_grids/albums_page.dart'; import 'package:aves/widgets/fullscreen/fullscreen_page.dart'; +import 'package:firebase_crashlytics/firebase_crashlytics.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:pedantic/pedantic.dart'; @@ -94,6 +95,7 @@ class _HomePageState extends State { _shortcutFilters = extraFilters != null ? (extraFilters as List).cast() : null; } } + unawaited(FirebaseCrashlytics.instance.setCustomKey('app_mode', AvesApp.mode.toString())); if (AvesApp.mode != AppMode.view) { _mediaStore = MediaStoreSource(); diff --git a/lib/widgets/welcome_page.dart b/lib/widgets/welcome_page.dart index b1e1cc4e6..09bc45696 100644 --- a/lib/widgets/welcome_page.dart +++ b/lib/widgets/welcome_page.dart @@ -52,6 +52,7 @@ class _WelcomePageState extends State { children: [ ..._buildTop(context), Flexible(child: _buildTerms(terms)), + SizedBox(height: 16), ..._buildBottomControls(context), ], ), @@ -92,12 +93,23 @@ class _WelcomePageState extends State { } List _buildBottomControls(BuildContext context) { - final checkbox = LabeledCheckbox( - key: Key('agree-checkbox'), - value: _hasAcceptedTerms, - onChanged: (v) => setState(() => _hasAcceptedTerms = v), - text: 'I agree to the terms and conditions', + final checkboxes = Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + LabeledCheckbox( + value: settings.isCrashlyticsEnabled, + onChanged: (v) => setState(() => settings.isCrashlyticsEnabled = v), + text: 'Allow anonymous crash reporting', + ), + LabeledCheckbox( + key: Key('agree-termsCheckbox'), + value: _hasAcceptedTerms, + onChanged: (v) => setState(() => _hasAcceptedTerms = v), + text: 'I agree to the terms and conditions', + ), + ], ); + final button = RaisedButton( key: Key('continue-button'), child: Text('Continue'), @@ -114,16 +126,17 @@ class _WelcomePageState extends State { } : null, ); + return MediaQuery.of(context).orientation == Orientation.portrait ? [ - checkbox, + checkboxes, button, ] : [ - SizedBox(height: 16), Row( + crossAxisAlignment: CrossAxisAlignment.end, children: [ - checkbox, + checkboxes, Spacer(), button, ],