From a1e0dac4f4c72d4feebc5f01bb0f68e05a762dbd Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Thu, 11 Jun 2020 13:34:22 +0300 Subject: [PATCH] Remove checkUrl function --- lib/data/repositories/auth_repository.dart | 4 +-- lib/data/web_client.dart | 37 +++++++++------------- lib/redux/app/app_state.dart | 1 - lib/redux/auth/auth_middleware.dart | 4 --- lib/redux/auth/auth_reducer.dart | 11 ++++++- lib/ui/app/upgrade_dialog.dart | 2 +- lib/ui/auth/login_view.dart | 6 ++-- lib/ui/auth/login_vm.dart | 7 ++-- lib/ui/settings/account_management.dart | 4 +-- lib/utils/designs.dart | 3 +- lib/utils/templates.dart | 3 +- 11 files changed, 38 insertions(+), 44 deletions(-) diff --git a/lib/data/repositories/auth_repository.dart b/lib/data/repositories/auth_repository.dart index 5e1f7bd7e..8e2ad1393 100644 --- a/lib/data/repositories/auth_repository.dart +++ b/lib/data/repositories/auth_repository.dart @@ -118,7 +118,7 @@ class AuthRepository { Future addCompany({ @required Credentials credentials, }) async { - final url = formatApiUrl(credentials.url) + '/companies'; + final url = '${credentials.url}/companies'; final data = { 'token_name': _tokenName, }; @@ -131,7 +131,7 @@ class AuthRepository { @required String companyId, @required String password, }) async { - final url = formatApiUrl(credentials.url) + '/companies/$companyId'; + final url = '${credentials.url}/companies/$companyId'; return webClient.delete(url, credentials.token, password: password); } diff --git a/lib/data/web_client.dart b/lib/data/web_client.dart index 0f4a8ce80..008c979b6 100644 --- a/lib/data/web_client.dart +++ b/lib/data/web_client.dart @@ -19,7 +19,9 @@ class WebClient { throw 'Server requests are not supported in the demo'; } - url = _checkUrl(url); + if (!url.contains('?')) { + url += '?'; + } print('GET: $url'); if (url.contains('invoiceninja.com')) { @@ -56,7 +58,10 @@ class WebClient { throw 'Server requests are not supported in the demo'; } - url = _checkUrl(url); + if (!url.contains('?')) { + url += '?'; + } + print('POST: $url'); printWrapped('Data: $data'); http.Response response; @@ -94,7 +99,10 @@ class WebClient { throw 'Server requests are not supported in the demo'; } - url = _checkUrl(url); + if (!url.contains('?')) { + url += '?'; + } + print('PUT: $url'); printWrapped('Data: $data'); @@ -121,7 +129,10 @@ class WebClient { throw 'Server requests are not supported in the demo'; } - url = _checkUrl(url); + if (!url.contains('?')) { + url += '?'; + } + print('Delete: $url'); final http.Response response = await http.Client().delete( @@ -135,24 +146,6 @@ class WebClient { } } -String _checkUrl(String url) { - print('## _checkUrl (PRE): $url'); - if (!url.contains('/api/v1')) { - url = '/api/v1' + url; - } - - if (!url.startsWith('http')) { - url = Constants.hostedApiUrl + url; - } - - if (!url.contains('?')) { - url += '?'; - } - - print('## _checkUrl (POST): $url'); - return url; -} - Map _getHeaders(String url, String token, {String secret, String password}) { if (url.startsWith(Constants.hostedApiUrl)) { diff --git a/lib/redux/app/app_state.dart b/lib/redux/app/app_state.dart index d188bd087..add5d0062 100644 --- a/lib/redux/app/app_state.dart +++ b/lib/redux/app/app_state.dart @@ -563,7 +563,6 @@ abstract class AppState implements Built { //return 'Account: $account'; //return 'Payment Terms: ${paymentTermState.map}'; //return 'Selected client: ${uiState.clientUIState.selectedId}, Filter: ${uiState.filterEntityType} ${uiState.filterEntityId}'; - return 'Columns: ${userCompany?.settings?.tableColumns ?? 'null'}'; return 'Layout: ${prefState.appLayout}, Route: ${uiState.currentRoute} Prev: ${uiState.previousRoute}'; } } diff --git a/lib/redux/auth/auth_middleware.dart b/lib/redux/auth/auth_middleware.dart index b66a25770..521bbc023 100644 --- a/lib/redux/auth/auth_middleware.dart +++ b/lib/redux/auth/auth_middleware.dart @@ -52,10 +52,6 @@ void _saveAuthLocal( } void _loadAuthLocal(Store store) async { - if (kIsWeb) { - return; - } - final SharedPreferences prefs = await SharedPreferences.getInstance(); final String email = kReleaseMode ? (prefs.getString(kSharedPrefEmail) ?? '') diff --git a/lib/redux/auth/auth_reducer.dart b/lib/redux/auth/auth_reducer.dart index 449f12faf..7ad373b2f 100644 --- a/lib/redux/auth/auth_reducer.dart +++ b/lib/redux/auth/auth_reducer.dart @@ -1,3 +1,4 @@ +import 'package:invoiceninja_flutter/constants.dart'; import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:redux/redux.dart'; import 'package:invoiceninja_flutter/redux/auth/auth_actions.dart'; @@ -7,6 +8,7 @@ Reducer authReducer = combineReducers([ TypedReducer(userLoginLoadedReducer), TypedReducer(userLoginRequestReducer), TypedReducer(oauthLoginRequestReducer), + TypedReducer(oauthSignUpRequestReducer), TypedReducer(userSignUpRequestReducer), TypedReducer(userLoginSuccessReducer), TypedReducer(userVerifiedPasswordReducer), @@ -15,7 +17,7 @@ Reducer authReducer = combineReducers([ AuthState userSignUpRequestReducer( AuthState authState, UserSignUpRequest action) { return authState.rebuild((b) => b - ..url = '' + ..url = formatApiUrl(kAppProductionUrl) ..secret = ''); } @@ -42,6 +44,13 @@ AuthState oauthLoginRequestReducer( ..secret = action.secret); } +AuthState oauthSignUpRequestReducer( + AuthState authState, OAuthSignUpRequest action) { + return authState.rebuild((b) => b + ..url = formatApiUrl(kAppProductionUrl) + ..secret = ''); +} + AuthState userLoginSuccessReducer( AuthState authState, UserLoginSuccess action) { return authState.rebuild((b) => b diff --git a/lib/ui/app/upgrade_dialog.dart b/lib/ui/app/upgrade_dialog.dart index 452034d56..8a77b657a 100644 --- a/lib/ui/app/upgrade_dialog.dart +++ b/lib/ui/app/upgrade_dialog.dart @@ -60,7 +60,7 @@ class _UpgradeDialogState extends State { try { final dynamic response = await webClient.post( - '/api/v1/upgrade', state.credentials.token, + '$kAppProductionUrl/api/v1/upgrade', state.credentials.token, data: json.encode(data)); final String message = response['message']; diff --git a/lib/ui/auth/login_view.dart b/lib/ui/auth/login_view.dart index 0aa47e437..45f69b391 100644 --- a/lib/ui/auth/login_view.dart +++ b/lib/ui/auth/login_view.dart @@ -264,7 +264,7 @@ class _LoginState extends State { context, completer, email: _emailController.text, - url: _isSelfHosted ? _urlController.text : '', + url: _isSelfHosted ? _urlController.text : kAppProductionUrl, secret: _isSelfHosted ? _secretController.text : '', ); } else { @@ -273,14 +273,14 @@ class _LoginState extends State { completer, email: _emailController.text, password: _passwordController.text, - url: _isSelfHosted ? _urlController.text : '', + url: _isSelfHosted ? _urlController.text : kAppProductionUrl, secret: _isSelfHosted ? _secretController.text : '', oneTimePassword: _oneTimePasswordController.text, ); } } else { viewModel.onGoogleLoginPressed(context, completer, - url: _isSelfHosted ? _urlController.text : '', + url: _isSelfHosted ? _urlController.text : kAppProductionUrl, secret: _isSelfHosted ? _secretController.text : '', oneTimePassword: _oneTimePasswordController.text); } diff --git a/lib/ui/auth/login_vm.dart b/lib/ui/auth/login_vm.dart index f5eff700f..bda95aac0 100644 --- a/lib/ui/auth/login_vm.dart +++ b/lib/ui/auth/login_vm.dart @@ -7,6 +7,7 @@ import 'package:invoiceninja_flutter/redux/app/app_actions.dart'; import 'package:invoiceninja_flutter/redux/dashboard/dashboard_actions.dart'; import 'package:invoiceninja_flutter/redux/ui/pref_state.dart'; import 'package:invoiceninja_flutter/ui/app/app_builder.dart'; +import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:invoiceninja_flutter/utils/platforms.dart'; import 'package:redux/redux.dart'; import 'package:invoiceninja_flutter/redux/app/app_state.dart'; @@ -124,7 +125,7 @@ class LoginVM { accessToken: value.accessToken, serverAuthCode: account .displayName, // TODO fix this once PR is merged https://github.com/flutter/plugins/pull/2116 - url: url.trim(), + url: formatApiUrl(url.trim()), secret: secret.trim(), platform: getPlatform(context), oneTimePassword: oneTimePassword, @@ -194,7 +195,7 @@ class LoginVM { store.dispatch(RecoverPasswordRequest( completer: completer, email: email.trim(), - url: url.trim(), + url: formatApiUrl(url.trim()), secret: secret.trim(), )); completer.future.then((_) { @@ -222,7 +223,7 @@ class LoginVM { completer: completer, email: email.trim(), password: password.trim(), - url: url.trim(), + url: formatApiUrl(url.trim()), secret: secret.trim(), platform: getPlatform(context), oneTimePassword: oneTimePassword.trim(), diff --git a/lib/ui/settings/account_management.dart b/lib/ui/settings/account_management.dart index 491c2d771..651b2c21a 100644 --- a/lib/ui/settings/account_management.dart +++ b/lib/ui/settings/account_management.dart @@ -8,7 +8,6 @@ import 'package:invoiceninja_flutter/ui/app/forms/app_form.dart'; import 'package:invoiceninja_flutter/ui/app/edit_scaffold.dart'; import 'package:invoiceninja_flutter/ui/settings/account_management_vm.dart'; import 'package:invoiceninja_flutter/utils/dialogs.dart'; -import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:url_launcher/url_launcher.dart'; @@ -171,8 +170,7 @@ class _AccountOverview extends StatelessWidget { callback: (value) { final state = viewModel.state; final credentials = state.credentials; - final url = formatApiUrl(credentials.url) + - '/claim_license?license_key=$value'; + final url = '${credentials.url}/claim_license?license_key=$value'; WebClient() .post( url, diff --git a/lib/utils/designs.dart b/lib/utils/designs.dart index b717196e2..c9581d806 100644 --- a/lib/utils/designs.dart +++ b/lib/utils/designs.dart @@ -6,7 +6,6 @@ import 'package:invoiceninja_flutter/data/models/design_model.dart'; import 'package:invoiceninja_flutter/data/models/serializers.dart'; import 'package:invoiceninja_flutter/data/web_client.dart'; import 'package:invoiceninja_flutter/redux/app/app_state.dart'; -import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:invoiceninja_flutter/.env.dart'; import 'dialogs.dart'; @@ -24,7 +23,7 @@ void loadDesign({ final webClient = WebClient(); final state = StoreProvider.of(context).state; final credentials = state.credentials; - final url = formatApiUrl(credentials.url) + '/preview'; + final url = '${credentials.url}/preview'; final request = DesignPreviewRequest(design: design); final data = diff --git a/lib/utils/templates.dart b/lib/utils/templates.dart index 6cc828329..ad9bd4617 100644 --- a/lib/utils/templates.dart +++ b/lib/utils/templates.dart @@ -4,7 +4,6 @@ import 'package:flutter_redux/flutter_redux.dart'; import 'package:invoiceninja_flutter/data/models/invoice_model.dart'; import 'package:invoiceninja_flutter/data/web_client.dart'; import 'package:invoiceninja_flutter/redux/app/app_state.dart'; -import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:invoiceninja_flutter/.env.dart'; import 'dialogs.dart'; @@ -24,7 +23,7 @@ void loadEmailTemplate({ final webClient = WebClient(); final state = StoreProvider.of(context).state; final credentials = state.credentials; - final url = formatApiUrl(credentials.url) + '/templates'; + final url = '${credentials.url}/templates'; /* final invoice = state.invoiceState.list.isEmpty