Added endpoint field on login page

This commit is contained in:
Andrew 2023-05-08 12:21:31 +07:00
parent bce8e97368
commit b755d60939
2 changed files with 28 additions and 7 deletions

View file

@ -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<void> 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<LoginPageController> {
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<LoginPageController> {
),
const SizedBox(height: 16),
ElevatedButton(
onPressed: controller.submitted
? null
: () => controller.submitForm(),
onPressed:
!controller.isFormValid || controller.submitted
? null
: () => controller.submitForm(),
child: const Text('Login'),
),
],