Skip to content

Commit

Permalink
pebble-dev#151 - Fix a bug where connecting to watch from pair page w…
Browse files Browse the repository at this point in the history
…ouldn't be remembered and app would show setup screen at next launch
  • Loading branch information
DreadBoy committed May 9, 2021
1 parent 45b24b3 commit 21514e1
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 16 deletions.
13 changes: 12 additions & 1 deletion lib/domain/preferences.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,16 @@
import 'package:hooks_riverpod/all.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shared_preferences/shared_preferences.dart';

final sharedPreferencesProvider =
Provider((ref) => SharedPreferences.getInstance());

/// Is set to bool after user has connected to their first watch.
/// ```dart
/// const futurePrefs = useProvider(sharedPreferencesProvider)
/// futurePrefs.then((prefs) {
/// // returns true if user has ever successfully connected to a watch,
/// // false otherwise
/// prefs.containsKey(hasBeenConnected)
/// });
/// ```
final hasBeenConnected = 'hasBeenConnected';
13 changes: 5 additions & 8 deletions lib/ui/setup/boot/rebble_setup_fail.dart
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,11 @@ class RebbleSetupFail extends StatelessWidget implements CobbleScreen {
),
floatingActionButton: FloatingActionButton.extended(
onPressed: () {
SharedPreferences.getInstance()
.then((value) => {
value.setBool("firstRun", false),
value.setBool("bootSetup", false)
})
.then(
(value) => context.pushAndRemoveAllBelow(HomePage()),
);
SharedPreferences.getInstance().then((prefs) {
prefs.setBool("bootSetup", false);
}).then((_) {
context.pushAndRemoveAllBelow(HomePage());
});
},
label: Text("OKAY")),
);
Expand Down
13 changes: 7 additions & 6 deletions lib/ui/setup/boot/rebble_setup_success.dart
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import 'package:cobble/domain/preferences.dart';
import 'package:cobble/infrastructure/datasources/web_services.dart';
import 'package:cobble/localization/localization.dart';
import 'package:cobble/ui/home/home_page.dart';
Expand Down Expand Up @@ -39,12 +40,12 @@ class _RebbleSetupSuccessState extends State<RebbleSetupSuccess> {
),
floatingActionButton: FloatingActionButton.extended(
onPressed: () {
SharedPreferences.getInstance()
.then((value) => {
value.setBool("firstRun", false),
value.setBool("bootSetup", true)
})
.then((value) => context.pushAndRemoveAllBelow(HomePage()));
SharedPreferences.getInstance().then((prefs) {
prefs.setBool(hasBeenConnected, true);
prefs.setBool("bootSetup", true);
}).then((_) {
context.pushAndRemoveAllBelow(HomePage());
});
},
label: Text(tr.setup.success.fab)),
);
Expand Down
3 changes: 3 additions & 0 deletions lib/ui/setup/pair_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import 'dart:ui';
import 'package:cobble/domain/connection/pair_provider.dart';
import 'package:cobble/domain/connection/scan_provider.dart';
import 'package:cobble/domain/entities/pebble_scan_device.dart';
import 'package:cobble/domain/preferences.dart';
import 'package:cobble/infrastructure/datasources/paired_storage.dart';
import 'package:cobble/infrastructure/pigeons/pigeons.g.dart';
import 'package:cobble/localization/localization.dart';
Expand Down Expand Up @@ -52,6 +53,7 @@ class PairPage extends HookWidget implements CobbleScreen {
final pairedStorage = useProvider(pairedStorageProvider);
final scan = useProvider(scanProvider.state);
final pair = useProvider(pairProvider).data?.value;
final prefs = useProvider(sharedPreferencesProvider);

useEffect(() {
if (pair == null || scan.devices.isEmpty) return null;
Expand Down Expand Up @@ -98,6 +100,7 @@ class PairPage extends HookWidget implements CobbleScreen {
NumberWrapper addressWrapper = NumberWrapper();
addressWrapper.value = dev.address;
uiConnectionControl.connectToWatch(addressWrapper);
prefs.then((pref) => pref.setBool(hasBeenConnected, true));
};

final title = tr.pairPage.title;
Expand Down
3 changes: 2 additions & 1 deletion lib/ui/splash/splash_page.dart
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import 'package:cobble/domain/preferences.dart';
import 'package:cobble/localization/localization.dart';
import 'package:cobble/main.dart';
import 'package:cobble/ui/common/components/cobble_button.dart';
Expand All @@ -17,7 +18,7 @@ class SplashPage extends StatefulWidget {
class _SplashPageState extends State<SplashPage> {
void _openHome() {
SharedPreferences.getInstance().then((prefs) {
if (!prefs.containsKey("firstRun")) {
if (!prefs.containsKey(hasBeenConnected)) {
context.pushReplacement(FirstRunPage());
} else {
context.pushReplacement(HomePage());
Expand Down

0 comments on commit 21514e1

Please sign in to comment.