import 'package:paperless_mobile/core/type/types.dart'; import 'package:paperless_mobile/features/login/model/client_certificate.dart'; class AuthenticationInformation { static const usernameKey = 'username'; static const passwordKey = 'password'; static const tokenKey = 'token'; static const serverUrlKey = 'serverUrl'; static const clientCertificateKey = 'clientCertificate'; final String username; final String password; final String token; final String serverUrl; final ClientCertificate? clientCertificate; AuthenticationInformation({ required this.username, required this.password, required this.token, required this.serverUrl, this.clientCertificate, }); AuthenticationInformation.fromJson(JSON json) : username = json[usernameKey], password = json[passwordKey], token = json[tokenKey], serverUrl = json[serverUrlKey], clientCertificate = json[clientCertificateKey] != null ? ClientCertificate.fromJson(json[clientCertificateKey]) : null; JSON toJson() { return { usernameKey: username, passwordKey: password, tokenKey: token, serverUrlKey: serverUrl, clientCertificateKey: clientCertificate?.toJson(), }; } bool get isValid { return serverUrl.isNotEmpty && token.isNotEmpty; } AuthenticationInformation copyWith({ String? username, String? password, String? token, String? serverUrl, ClientCertificate? clientCertificate, bool removeClientCertificate = false, bool? isLocalAuthenticationEnabled, }) { return AuthenticationInformation( username: username ?? this.username, password: password ?? this.password, token: token ?? this.token, serverUrl: serverUrl ?? this.serverUrl, clientCertificate: clientCertificate ?? (removeClientCertificate ? null : this.clientCertificate), ); } }