Skip to content

Commit 2d6a892

Browse files
authored
Merge pull request #773 from wger-project/feature/improve-min-app-version
Refactor min app version handling
2 parents 6ee7dd0 + 59ea2d9 commit 2d6a892

18 files changed

+1023
-1052
lines changed

android/app/src/main/AndroidManifest.xml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,6 @@
2929
android:enableOnBackInvokedCallback="true"
3030
android:networkSecurityConfig="@xml/network_security_config">
3131

32-
<meta-data
33-
android:name="wger.check_min_app_version"
34-
android:value="true" />
35-
3632
<activity
3733
android:name=".MainActivity"
3834
android:exported="true"

lib/helpers/consts.dart

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,6 @@ const DEFAULT_SERVER_TEST = 'https://wger-master.rge.uber.space/';
3131
const TESTSERVER_USER_NAME = 'user';
3232
const TESTSERVER_PASSWORD = 'flutteruser';
3333

34-
/// Keys used in the android manifest
35-
const MANIFEST_KEY_CHECK_UPDATE = 'wger.check_min_app_version';
36-
3734
/// Default impression for a workout session (neutral)
3835
const DEFAULT_IMPRESSION = 2;
3936

lib/main.dart

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ import 'package:wger/screens/routine_list_screen.dart';
5454
import 'package:wger/screens/routine_logs_screen.dart';
5555
import 'package:wger/screens/routine_screen.dart';
5656
import 'package:wger/screens/splash_screen.dart';
57+
import 'package:wger/screens/update_app_screen.dart';
5758
import 'package:wger/screens/weight_screen.dart';
5859
import 'package:wger/theme/theme.dart';
5960
import 'package:wger/widgets/core/about.dart';
@@ -82,11 +83,27 @@ void main() async {
8283
await PreferenceHelper.instance.migrationSupportFunctionForSharedPreferences();
8384

8485
// Application
85-
runApp(const riverpod.ProviderScope(child: MyApp()));
86+
runApp(const riverpod.ProviderScope(child: MainApp()));
8687
}
8788

88-
class MyApp extends StatelessWidget {
89-
const MyApp();
89+
class MainApp extends StatelessWidget {
90+
const MainApp();
91+
92+
Widget _getHomeScreen(AuthProvider auth) {
93+
if (auth.state == AuthState.loggedIn) {
94+
return HomeTabsScreen();
95+
} else if (auth.state == AuthState.updateRequired) {
96+
return const UpdateAppScreen();
97+
} else {
98+
return FutureBuilder(
99+
future: auth.tryAutoLogin(),
100+
builder: (ctx, authResultSnapshot) =>
101+
authResultSnapshot.connectionState == ConnectionState.waiting
102+
? const SplashScreen()
103+
: const AuthScreen(),
104+
);
105+
}
106+
}
90107

91108
@override
92109
Widget build(BuildContext context) {
@@ -161,15 +178,7 @@ class MyApp extends StatelessWidget {
161178
highContrastTheme: wgerLightThemeHc,
162179
highContrastDarkTheme: wgerDarkThemeHc,
163180
themeMode: user.themeMode,
164-
home: auth.isAuth
165-
? HomeTabsScreen()
166-
: FutureBuilder(
167-
future: auth.tryAutoLogin(),
168-
builder: (ctx, authResultSnapshot) =>
169-
authResultSnapshot.connectionState == ConnectionState.waiting
170-
? const SplashScreen()
171-
: const AuthScreen(),
172-
),
181+
home: _getHomeScreen(auth),
173182
routes: {
174183
DashboardScreen.routeName: (ctx) => const DashboardScreen(),
175184
FormScreen.routeName: (ctx) => const FormScreen(),

lib/models/exercises/exercise_api.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ part 'exercise_api.g.dart';
1616
/// Basically this is just used as a convenience to create "real" exercise
1717
/// objects and nothing more
1818
@freezed
19-
class ExerciseApiData with _$ExerciseApiData {
19+
sealed class ExerciseApiData with _$ExerciseApiData {
2020
factory ExerciseApiData({
2121
required int id,
2222
required String uuid,
@@ -52,7 +52,7 @@ class ExerciseApiData with _$ExerciseApiData {
5252
/// Model for the search results returned from the /api/v2/exercise/search endpoint
5353
///
5454
@freezed
55-
class ExerciseSearchDetails with _$ExerciseSearchDetails {
55+
sealed class ExerciseSearchDetails with _$ExerciseSearchDetails {
5656
factory ExerciseSearchDetails({
5757
// ignore: invalid_annotation_target
5858
@JsonKey(name: 'id') required int translationId,
@@ -70,7 +70,7 @@ class ExerciseSearchDetails with _$ExerciseSearchDetails {
7070
}
7171

7272
@freezed
73-
class ExerciseSearchEntry with _$ExerciseSearchEntry {
73+
sealed class ExerciseSearchEntry with _$ExerciseSearchEntry {
7474
factory ExerciseSearchEntry({
7575
required String value,
7676
required ExerciseSearchDetails data,
@@ -81,7 +81,7 @@ class ExerciseSearchEntry with _$ExerciseSearchEntry {
8181
}
8282

8383
@freezed
84-
class ExerciseApiSearch with _$ExerciseApiSearch {
84+
sealed class ExerciseApiSearch with _$ExerciseApiSearch {
8585
factory ExerciseApiSearch({
8686
required List<ExerciseSearchEntry> suggestions,
8787
}) = _ExerciseApiSearch;

0 commit comments

Comments
 (0)