Skip to content

Commit

Permalink
Merge pull request #1262 from bannzai/bugfix/bugfix/function/widget_c…
Browse files Browse the repository at this point in the history
…yclicSequential

bugfix/bugfix/function/widget cyclicSequential
  • Loading branch information
bannzai authored Nov 20, 2024
2 parents 6c64c81 + 2e78ca2 commit a281a95
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 27 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -44,3 +44,5 @@ app.*.map.json

lib/util/*secret.dart
*secret.dart

scripts/venv
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:pilll/components/molecules/indicator.dart';
import 'package:pilll/provider/pill_sheet_group.dart';
import 'package:pilll/provider/setting.dart';

// NOTE: [Migrate:PillSheetAppearanceMode] setting -> latestPillSheetGroup の移行処理
class PillSheetAppearanceModeMigrationResolver extends HookConsumerWidget {
final Widget Function(BuildContext) builder;

const PillSheetAppearanceModeMigrationResolver({
super.key,
required this.builder,
});

@override
Widget build(BuildContext context, WidgetRef ref) {
final setting = ref.watch(settingProvider);
final latestPillSheetGroup = ref.watch(latestPillSheetGroupProvider);
final setPillSheetGroup = ref.watch(setPillSheetGroupProvider);
final resolved = useState(false);

useEffect(() {
final f = (() async {
final settingData = setting.asData?.value;
final latestPillSheetGroupData = latestPillSheetGroup.asData?.value;
if (settingData == null || latestPillSheetGroupData == null) {
return;
}

try {
// NOTE: [Migrate:PillSheetAppearanceMode] SelectAppearanceModeModalでもsettingと同期をとっている。なので、移行が完了した後も実行し続けてもずれることはない
await setPillSheetGroup(
latestPillSheetGroupData.copyWith(
pillSheetAppearanceMode: settingData.pillSheetAppearanceMode,
),
);
if (!resolved.value) {
resolved.value = true;
}
} catch (error) {
debugPrint(error.toString());
}
});
f();
return null;
}, [latestPillSheetGroup.asData?.value != null, setting.asData?.value != null]);

if (resolved.value) {
return builder(context);
} else {
return const ScaffoldIndicator();
}
}
}
25 changes: 0 additions & 25 deletions lib/features/root/resolver/sync_data.dart
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ class SyncDataResolver extends HookConsumerWidget {
final user = ref.watch(userProvider);
final setting = ref.watch(settingProvider);
final latestPillSheetGroup = ref.watch(latestPillSheetGroupProvider);
final setPillSheetGroup = ref.watch(setPillSheetGroupProvider);
useAutomaticKeepAlive(wantKeepAlive: true);

useEffect(() {
Expand Down Expand Up @@ -66,30 +65,6 @@ class SyncDataResolver extends HookConsumerWidget {
return null;
}, [latestPillSheetGroup.asData?.value]);

// NOTE: [Migrate:PillSheetAppearanceMode] setting -> latestPillSheetGroup の移行処理
useEffect(() {
final f = (() async {
final settingData = setting.asData?.value;
final latestPillSheetGroupData = latestPillSheetGroup.asData?.value;
if (settingData == null || latestPillSheetGroupData == null) {
return;
}

try {
// NOTE: [Migrate:PillSheetAppearanceMode] SelectAppearanceModeModalでもsettingと同期をとっている。なので、移行が完了した後も実行し続けてもずれることはない
setPillSheetGroup(
latestPillSheetGroupData.copyWith(
pillSheetAppearanceMode: settingData.pillSheetAppearanceMode,
),
);
} catch (error) {
debugPrint(error.toString());
}
});
f();
return null;
}, [latestPillSheetGroup.asData?.value != null, setting.asData?.value != null]);

return const SizedBox();
}
}
9 changes: 7 additions & 2 deletions lib/features/root/root_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import 'package:pilll/features/root/resolver/firebase_auth_resolver.dart';
import 'package:pilll/features/root/resolver/force_update.dart';
import 'package:pilll/features/root/resolver/initial_setting_or_app_page.dart';
import 'package:pilll/features/root/resolver/migration20240819.dart';
import 'package:pilll/features/root/resolver/pill_sheet_appearance_mode_migration.dart';
import 'package:pilll/features/root/resolver/show_paywall_on_app_launch.dart';
import 'package:pilll/features/root/resolver/skip_initial_setting.dart';
import 'package:pilll/features/root/resolver/sync_data.dart';
Expand All @@ -31,10 +32,14 @@ class RootPage extends HookConsumerWidget {
initialSettingPageBuilder: (_) => ShowPaywallOnAppLaunch(
builder: (_) => SkipInitialSetting(
initialSettingPageBuilder: (context) => InitialSettingPillSheetGroupPageRoute.screen(),
homePageBuilder: (_) => const HomePage(),
homePageBuilder: (_) => PillSheetAppearanceModeMigrationResolver(
builder: (_) => const HomePage(),
),
),
),
homePageBuilder: (_) => const HomePage(),
homePageBuilder: (_) => PillSheetAppearanceModeMigrationResolver(
builder: (_) => const HomePage(),
),
),
],
),
Expand Down

0 comments on commit a281a95

Please sign in to comment.