diff --git a/main/src/ui/manage_accounts/add_account_dialog.vala b/main/src/ui/manage_accounts/add_account_dialog.vala index 558738aa..cefc3261 100644 --- a/main/src/ui/manage_accounts/add_account_dialog.vala +++ b/main/src/ui/manage_accounts/add_account_dialog.vala @@ -70,12 +70,14 @@ public class AddAccountDialog : Gtk.Dialog { }; private StreamInteractor stream_interactor; + private Database db; private HashMap list_box_jids = new HashMap(); private Jid? server_jid = null; private Xep.InBandRegistration.Form? form = null; - public AddAccountDialog(StreamInteractor stream_interactor) { + public AddAccountDialog(StreamInteractor stream_interactor, Database db) { this.stream_interactor = stream_interactor; + this.db = db; this.title = _("Add Account"); // Sign in - Jid @@ -258,8 +260,8 @@ public class AddAccountDialog : Gtk.Dialog { break; } } else { + add_activate_account(account); show_success(); - added(account); } } @@ -343,9 +345,9 @@ public class AddAccountDialog : Gtk.Dialog { case "password": password = field.get_value_string(); break; } } - Account account = new Account(new Jid(username + "@" + server_jid.domainpart), null, password, null); + Account account = new Account(new Jid.components(username, server_jid.domainpart, null), null, password, null); + add_activate_account(account); show_success(); - added(account); } else { display_notification(error); } @@ -360,6 +362,13 @@ public class AddAccountDialog : Gtk.Dialog { }); } + private void add_activate_account(Account account) { + account.enabled = true; + account.persist(db); + stream_interactor.connect_account(account); + added(account); + } + private void animate_window_resize(Widget widget) { // TODO code duplication int def_height, curr_width, curr_height; get_size(out curr_width, out curr_height); diff --git a/main/src/ui/manage_accounts/dialog.vala b/main/src/ui/manage_accounts/dialog.vala index bcc0f017..bb0614a2 100644 --- a/main/src/ui/manage_accounts/dialog.vala +++ b/main/src/ui/manage_accounts/dialog.vala @@ -108,10 +108,9 @@ public class Dialog : Gtk.Dialog { } private void show_add_account_dialog() { - AddAccountDialog add_account_dialog = new AddAccountDialog(stream_interactor); + AddAccountDialog add_account_dialog = new AddAccountDialog(stream_interactor, db); add_account_dialog.set_transient_for(this); add_account_dialog.added.connect((account) => { - account.persist(db); AccountRow account_item = add_account(account); account_list.select_row(account_item); account_list.queue_draw(); diff --git a/main/src/ui/unified_window_controller.vala b/main/src/ui/unified_window_controller.vala index dd5ed52d..1ca3daae 100644 --- a/main/src/ui/unified_window_controller.vala +++ b/main/src/ui/unified_window_controller.vala @@ -76,7 +76,7 @@ public class UnifiedWindowController : Object { }); window.welcome_placeholder.primary_button.clicked.connect(() => { - ManageAccounts.AddAccountDialog dialog = new ManageAccounts.AddAccountDialog(stream_interactor); + ManageAccounts.AddAccountDialog dialog = new ManageAccounts.AddAccountDialog(stream_interactor, db); dialog.set_transient_for(app.get_active_window()); dialog.present(); });