ui: Set account data after 'login'

This commit is contained in:
PapaTutuWawa 2021-12-27 18:18:28 +01:00
parent 2338648afb
commit e090b34158
2 changed files with 24 additions and 8 deletions

View File

@ -49,8 +49,8 @@ class _ListViewWrapperState extends State<ListViewWrapper> {
Widget build(BuildContext build) { Widget build(BuildContext build) {
return StoreConnector<MoxxyState, _ListViewWrapperViewModel>( return StoreConnector<MoxxyState, _ListViewWrapperViewModel>(
converter: (store) => _ListViewWrapperViewModel( converter: (store) => _ListViewWrapperViewModel(
conversations: store.state.conversations // TODO: Sort conversations by timestamp
), conversations: store.state.conversations,
builder: (context, viewModel) { builder: (context, viewModel) {
double maxTextWidth = MediaQuery.of(context).size.width * 0.6; double maxTextWidth = MediaQuery.of(context).size.width * 0.6;

View File

@ -4,6 +4,9 @@ import 'package:moxxyv2/ui/widgets/textfield.dart';
import 'package:moxxyv2/ui/constants.dart'; import 'package:moxxyv2/ui/constants.dart';
import "package:moxxyv2/redux/state.dart"; import "package:moxxyv2/redux/state.dart";
import "package:moxxyv2/redux/login/actions.dart"; import "package:moxxyv2/redux/login/actions.dart";
// TODO: REMOVE
import "package:moxxyv2/redux/account/actions.dart";
// TODO END
import "package:moxxyv2/helpers.dart"; import "package:moxxyv2/helpers.dart";
import 'package:flutter_redux/flutter_redux.dart'; import 'package:flutter_redux/flutter_redux.dart';
@ -19,8 +22,13 @@ class _LoginPageViewModel {
final bool showPassword; final bool showPassword;
final String? passwordError; final String? passwordError;
final String? jidError; final String? jidError;
// --- START ---
// TODO: REMOVE
final void Function(String jid) setAccountJid;
final void Function(String displayName) setAccountDisplayName;
// --- END ---
_LoginPageViewModel({ required this.togglePasswordVisibility, required this.performLogin, required this.doingWork, required this.showPassword, required this.setJidError, required this.setPasswordError, this.passwordError, this.jidError, required this.resetErrors }); _LoginPageViewModel({ required this.togglePasswordVisibility, required this.performLogin, required this.doingWork, required this.showPassword, required this.setJidError, required this.setPasswordError, this.passwordError, this.jidError, required this.resetErrors, required this.setAccountJid, required this.setAccountDisplayName });
} }
class LoginPage extends StatelessWidget { class LoginPage extends StatelessWidget {
@ -38,8 +46,11 @@ class LoginPage extends StatelessWidget {
void _performLogin(BuildContext context, _LoginPageViewModel viewModel) { void _performLogin(BuildContext context, _LoginPageViewModel viewModel) {
viewModel.resetErrors(); viewModel.resetErrors();
String jid = this.jidController.text;
String password = this.passwordController.text;
// Validate first // Validate first
switch (validateJid(this.jidController.text)) { switch (validateJid(jid)) {
case JidFormatError.EMPTY: { case JidFormatError.EMPTY: {
viewModel.setJidError("XMPP-Address cannot be empty"); viewModel.setJidError("XMPP-Address cannot be empty");
return; return;
@ -64,13 +75,17 @@ class LoginPage extends StatelessWidget {
case JidFormatError.NONE: break; case JidFormatError.NONE: break;
} }
if (this.passwordController.text.isEmpty) { if (password.isEmpty) {
viewModel.setPasswordError("Password cannot be empty"); viewModel.setPasswordError("Password cannot be empty");
return; return;
} }
// TODO: Remove // TODO: Remove
Future.delayed(Duration(seconds: 3), () => this._navigateToConversations(context)); Future.delayed(Duration(seconds: 3), () {
viewModel.setAccountJid(jid);
viewModel.setAccountDisplayName(jid.split("@")[0]);
this._navigateToConversations(context);
});
viewModel.performLogin(); viewModel.performLogin();
} }
@ -87,8 +102,9 @@ class LoginPage extends StatelessWidget {
jidError: store.state.loginPageState.jidError, jidError: store.state.loginPageState.jidError,
setJidError: (text) => store.dispatch(LoginSetJidErrorAction(text: text)), setJidError: (text) => store.dispatch(LoginSetJidErrorAction(text: text)),
setPasswordError: (text) => store.dispatch(LoginSetPasswordErrorAction(text: text)), setPasswordError: (text) => store.dispatch(LoginSetPasswordErrorAction(text: text)),
resetErrors: () => store.dispatch(LoginResetErrorsAction()) resetErrors: () => store.dispatch(LoginResetErrorsAction()),
setAccountJid: (jid) => store.dispatch(SetJidAction(jid: jid)),
setAccountDisplayName: (displayName) => store.dispatch(SetDisplayNameAction(displayName: displayName))
), ),
builder: (context, viewModel) => WillPopScope( builder: (context, viewModel) => WillPopScope(
onWillPop: () async => !viewModel.doingWork, onWillPop: () async => !viewModel.doingWork,