import 'dart:async'; import 'package:flutter/foundation.dart'; import '../login_config.dart'; import '../model/login_confirmation_result.dart'; import '../model/login_user.dart'; abstract class LoginRepository with ChangeNotifier { String? _loggedIn = ''; String loginError = ''; bool _initialized = false; bool isInitialized() => _initialized; /// This function returns true if the user is logged in. bool isLoggedIn() => _loggedIn != null && _loggedIn != ''; String get user => _loggedIn!; /// This function sets the logged in user. void setLoggedIn(String user) => _loggedIn = user; String getLoginError() => loginError; Future login(String username, String password); Future logout() async { _loggedIn = null; } /// This function returns a map with the username. Map getUser() => { 'username': _loggedIn, }; @mustCallSuper Future init() async { // Auto login here _initialized = true; } Future signInWithSocial(SocialLoginBundle bundle); Future userprofileExists(); Future sendLoginEmail(String input); Future trySignInWithPhoneNumber({ required String phoneNumber, void Function( String verificationId, int? resendToken, LoginConfirmationResult? resultWeb, )? onCodeSent, void Function(String errorCode)? onVerificationFailed, void Function(LoginUser? user)? onAutoLogin, }); Future signInWithSMSCode( String verificationId, String smsCode, String phoneNumber, { LoginConfirmationResult? resultWeb, }); Future forgotPassword(String email); Future isRegistrationRequired(LoginUser user); Future reLogin(); Future signInAnonymous(); }