Skip to content

Commit d5e3032

Browse files
authored
Don't force the product type with custom URLs (#6309)
1 parent e21ef79 commit d5e3032

File tree

6 files changed

+35
-7
lines changed

6 files changed

+35
-7
lines changed

packages/smooth_app/lib/data_models/login_result.dart

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
22
import 'package:openfoodfacts/openfoodfacts.dart';
3+
import 'package:smooth_app/data_models/preferences/user_preferences.dart';
4+
import 'package:smooth_app/pages/preferences/user_preferences_dev_mode.dart';
35
import 'package:smooth_app/query/product_query.dart';
46

57
/// How did the login attempt work?
@@ -34,12 +36,19 @@ class LoginResult {
3436
text.startsWith('Failed host lookup: ');
3537

3638
/// Checks credentials. Returns null if OK, or an error message.
37-
static Future<LoginResult> getLoginResult(final User user) async {
39+
static Future<LoginResult> getLoginResult(
40+
final User user,
41+
final UserPreferences userPreferences,
42+
) async {
3843
try {
44+
final bool prodUrl = userPreferences
45+
.getFlag(UserPreferencesDevMode.userPreferencesFlagProd) ??
46+
true;
47+
3948
final LoginStatus? loginStatus = await OpenFoodAPIClient.login2(
4049
user,
4150
uriHelper: ProductQuery.getUriProductHelper(
42-
productType: ProductType.food,
51+
productType: prodUrl ? ProductType.food : null,
4352
),
4453
);
4554
if (loginStatus == null) {

packages/smooth_app/lib/data_models/user_management_provider.dart

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import 'package:flutter/material.dart';
44
import 'package:flutter/services.dart';
55
import 'package:openfoodfacts/openfoodfacts.dart';
66
import 'package:smooth_app/data_models/login_result.dart';
7+
import 'package:smooth_app/data_models/preferences/user_preferences.dart';
78
import 'package:smooth_app/database/dao_secured_string.dart';
89
import 'package:smooth_app/query/product_query.dart';
910
import 'package:smooth_app/services/smooth_services.dart';
@@ -14,8 +15,14 @@ class UserManagementProvider with ChangeNotifier {
1415
static const String _COOKIE = 'user_cookie';
1516

1617
/// Checks credentials and conditionally saves them.
17-
Future<LoginResult> login(final User user) async {
18-
final LoginResult loginResult = await LoginResult.getLoginResult(user);
18+
Future<LoginResult> login(
19+
final User user,
20+
final UserPreferences preferences,
21+
) async {
22+
final LoginResult loginResult = await LoginResult.getLoginResult(
23+
user,
24+
preferences,
25+
);
1926
if (loginResult.type != LoginResultType.successful) {
2027
return loginResult;
2128
}
@@ -101,7 +108,7 @@ class UserManagementProvider with ChangeNotifier {
101108

102109
/// Check if the user is still logged in and the credentials are still valid
103110
/// If not, the user is logged out
104-
Future<void> checkUserLoginValidity() async {
111+
Future<void> checkUserLoginValidity(UserPreferences preferences) async {
105112
if (!ProductQuery.isLoggedIn()) {
106113
return;
107114
}
@@ -111,6 +118,7 @@ class UserManagementProvider with ChangeNotifier {
111118
userId: user.userId,
112119
password: user.password,
113120
),
121+
preferences,
114122
);
115123

116124
if (loginResult.type == LoginResultType.unsuccessful) {

packages/smooth_app/lib/main.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ Future<bool> _init1() async {
144144
daoString: DaoString(_localDatabase),
145145
);
146146
ProductQuery.setQueryType(_userPreferences);
147-
UserManagementProvider().checkUserLoginValidity();
147+
UserManagementProvider().checkUserLoginValidity(_userPreferences);
148148

149149
await AnalyticsHelper.linkPreferences(_userPreferences);
150150

packages/smooth_app/lib/pages/user_management/login_page.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ class _LoginPageState extends State<LoginPage> with TraceableClientMixin {
5555
userId: userIdController.text,
5656
password: passwordController.text,
5757
),
58+
context.read<UserPreferences>(),
5859
);
5960
if (!context.mounted) {
6061
return;

packages/smooth_app/lib/pages/user_management/sign_up_page.dart

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import 'package:smooth_app/generic_lib/loading_dialog.dart';
1212
import 'package:smooth_app/generic_lib/widgets/smooth_text_form_field.dart';
1313
import 'package:smooth_app/helpers/analytics_helper.dart';
1414
import 'package:smooth_app/helpers/user_management_helper.dart';
15+
import 'package:smooth_app/pages/preferences/user_preferences_dev_mode.dart';
1516
import 'package:smooth_app/query/product_query.dart';
1617
import 'package:smooth_app/widgets/smooth_app_bar.dart';
1718
import 'package:smooth_app/widgets/smooth_scaffold.dart';
@@ -331,6 +332,11 @@ class _SignUpPageState extends State<SignUpPage> with TraceableClientMixin {
331332
userId: _userController.trimmedText,
332333
password: _password1Controller.text,
333334
);
335+
final bool prodUrl = context
336+
.read<UserPreferences>()
337+
.getFlag(UserPreferencesDevMode.userPreferencesFlagProd) ??
338+
true;
339+
334340
final SignUpStatus? status = await LoadingDialog.run<SignUpStatus>(
335341
context: context,
336342
future: OpenFoodAPIClient.register(
@@ -342,7 +348,7 @@ class _SignUpPageState extends State<SignUpPage> with TraceableClientMixin {
342348
country: ProductQuery.getCountry(),
343349
language: ProductQuery.getLanguage(),
344350
uriHelper: ProductQuery.getUriProductHelper(
345-
productType: ProductType.food,
351+
productType: prodUrl ? ProductType.food : null,
346352
),
347353
),
348354
title: appLocalisations.sign_up_page_action_doing_it,

packages/smooth_app/lib/query/product_query.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,10 @@ abstract class ProductQuery {
249249
);
250250
}
251251

252+
static String getProductTypeFromDomain(UriProductHelper uriProductHelper) {
253+
return uriProductHelper.domain;
254+
}
255+
252256
static List<ProductField> get fields => const <ProductField>[
253257
ProductField.NAME,
254258
ProductField.NAME_ALL_LANGUAGES,

0 commit comments

Comments
 (0)