From b755d609392b3e02dcd9beabd3215924ae879388 Mon Sep 17 00:00:00 2001 From: Andrew nuark G Date: Mon, 8 May 2023 12:21:31 +0700 Subject: [PATCH] Added endpoint field on login page --- lib/api_controller.dart | 5 ++--- lib/pages/login_page.dart | 30 ++++++++++++++++++++++++++---- 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/lib/api_controller.dart b/lib/api_controller.dart index 4dafa6f..0c3558d 100644 --- a/lib/api_controller.dart +++ b/lib/api_controller.dart @@ -8,9 +8,8 @@ class ApiController extends GetxController { final apiStorageBox = GetStorage(); - final _endPoint = "http://127.0.0.1:8000".obs; - String get endPoint => _endPoint.value; - set endPoint(String value) => _endPoint.value = value; + String get endPoint => apiStorageBox.read("endPoint") ?? ""; + set endPoint(String value) => apiStorageBox.write("endPoint", value); String get token => apiStorageBox.read("accessToken") ?? ""; set token(String value) => apiStorageBox.write("accessToken", value); diff --git a/lib/pages/login_page.dart b/lib/pages/login_page.dart index d774e1d..d51f9e9 100644 --- a/lib/pages/login_page.dart +++ b/lib/pages/login_page.dart @@ -7,6 +7,10 @@ import 'package:tuuli_api/tuuli_api.dart'; import 'package:tuuli_app/api_controller.dart'; class LoginPageController extends GetxController { + final _endpoint = ApiController.to.endPoint.obs; + String get endpoint => _endpoint.value; + set endpoint(String value) => _endpoint.value = value; + final _username = "".obs; String get username => _username.value; set username(String value) => _username.value = value; @@ -19,12 +23,14 @@ class LoginPageController extends GetxController { bool get submitted => _submitted.value; set submitted(bool value) => _submitted.value = value; - bool get isFormValid => username.isNotEmpty && password.isNotEmpty; + bool get isFormValid => + endpoint.isNotEmpty && username.isNotEmpty && password.isNotEmpty; Future submitForm() async { submitted = true; if (isFormValid) { try { + ApiController.to.endPoint = endpoint; final resp = await ApiController.to.apiClient.getAccessToken( authModel: AuthModel( username: username, @@ -100,6 +106,21 @@ class LoginPage extends GetView { mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.stretch, children: [ + TextFormField( + enabled: !controller.submitted, + decoration: const InputDecoration( + labelText: 'Endpoint', + hintText: 'Enter Tuuli Endpoint', + ), + initialValue: ApiController.to.endPoint, + onChanged: (value) => controller.endpoint = value, + validator: (value) { + if (value == null || value.isEmpty) { + return 'Please enter Tuuli Endpoint'; + } + return null; + }, + ), TextFormField( enabled: !controller.submitted, decoration: const InputDecoration( @@ -131,9 +152,10 @@ class LoginPage extends GetView { ), const SizedBox(height: 16), ElevatedButton( - onPressed: controller.submitted - ? null - : () => controller.submitForm(), + onPressed: + !controller.isFormValid || controller.submitted + ? null + : () => controller.submitForm(), child: const Text('Login'), ), ],