import 'package:flutter/material.dart'; import 'package:seshat/config/constants.dart'; import 'package:seshat/data/repositories/auth_repository.dart'; import 'package:seshat/utils/command.dart'; import 'package:seshat/utils/result.dart'; class LoginViewModel extends ChangeNotifier { LoginViewModel({required AuthRepository authRepository}) : _authRepository = authRepository { login = Command1(_login); load = Command0(_load)..execute(); } final AuthRepository _authRepository; late Command1 login; Future> _login((String, String) credentials) async { final (username, password) = credentials; final result = await _authRepository.login(username, password); return result; } /* * ================================= * =====[ COMMAND AND LOADING ]===== * ================================= */ late final Command0 load; bool isLoaded = false; bool isUpToDate = false; Future> _load() async { final result1 = await _loadApiVersion(); switch (result1) { case Ok(): isLoaded = true; break; default: break; } notifyListeners(); return result1; } Future> _loadApiVersion() async { final result = await _authRepository.getRemoteApiVersion(); switch (result) { case Ok(): isUpToDate = result.value == apiVersion; break; default: break; } return result; } }