Initial and done prolly
This commit is contained in:
commit
6f88b9966f
175 changed files with 15445 additions and 0 deletions
128
lib/pages/login/login_controller.dart
Normal file
128
lib/pages/login/login_controller.dart
Normal file
|
|
@ -0,0 +1,128 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:groceries_manager/db/database.dart';
|
||||
import 'package:groceries_manager/services/db_service.dart';
|
||||
import 'package:groceries_manager/services/toaster_service.dart';
|
||||
|
||||
enum LoginState {
|
||||
idle,
|
||||
loading,
|
||||
}
|
||||
|
||||
class LoginController extends GetxController {
|
||||
final loginController = TextEditingController();
|
||||
final passwordController = TextEditingController();
|
||||
|
||||
final anyUserExists = false.obs;
|
||||
|
||||
final loginState = LoginState.idle.obs;
|
||||
|
||||
@override
|
||||
void onInit() {
|
||||
super.onInit();
|
||||
|
||||
init();
|
||||
}
|
||||
|
||||
Future<void> init() async {
|
||||
loginState.value = LoginState.loading;
|
||||
|
||||
anyUserExists.value = await DBService.to.db.anyUserExists();
|
||||
|
||||
loginState.value = LoginState.idle;
|
||||
}
|
||||
|
||||
@override
|
||||
void onClose() {
|
||||
loginController.dispose();
|
||||
passwordController.dispose();
|
||||
super.onClose();
|
||||
}
|
||||
|
||||
String sanitize(String value) {
|
||||
return value.replaceAll(RegExp(r'[^а-яА-Яa-zA-Z0-9]'), '');
|
||||
}
|
||||
|
||||
Future<void> register() async {
|
||||
final login = loginController.text;
|
||||
final password = passwordController.text;
|
||||
|
||||
if (login.isEmpty || password.isEmpty) {
|
||||
ToasterService.to.error(
|
||||
title: "Ошибка",
|
||||
message: "Логин и пароль не могут быть пустыми",
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
loginState.value = LoginState.loading;
|
||||
|
||||
final UserData? user;
|
||||
try {
|
||||
user = await DBService.to.db.addUser(
|
||||
login: login,
|
||||
password: password,
|
||||
);
|
||||
} catch (e) {
|
||||
ToasterService.to.error(
|
||||
title: "Ошибка",
|
||||
message: "Пользователь с таким логином уже существует",
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
loginState.value = LoginState.idle;
|
||||
|
||||
if (user == null) {
|
||||
ToasterService.to.error(
|
||||
title: "Ошибка",
|
||||
message: "Пользователь с таким логином уже существует",
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
ToasterService.to.success(
|
||||
title: "Успех",
|
||||
message: "Пользователь успешно зарегистрирован",
|
||||
);
|
||||
|
||||
Get.offAllNamed("/", arguments: user);
|
||||
}
|
||||
|
||||
Future<void> login() async {
|
||||
final login = loginController.text;
|
||||
final password = passwordController.text;
|
||||
|
||||
if (login.isEmpty || password.isEmpty) {
|
||||
ToasterService.to.error(
|
||||
title: "Ошибка",
|
||||
message: "Логин и пароль не могут быть пустыми!",
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
loginState.value = LoginState.loading;
|
||||
|
||||
final user = await DBService.to.db.findUser(
|
||||
login: login,
|
||||
password: password,
|
||||
);
|
||||
|
||||
loginState.value = LoginState.idle;
|
||||
|
||||
if (user == null) {
|
||||
ToasterService.to.error(
|
||||
title: "Ошибка",
|
||||
message: "Пользователь с такой связкой данных не существует!",
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
ToasterService.to.success(
|
||||
title: "Успех",
|
||||
message: "Привет, ${user.login}!",
|
||||
);
|
||||
|
||||
Get.offAllNamed("/", arguments: user);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue