aboutsummaryrefslogtreecommitdiff
path: root/main/src/ui/manage_accounts/add_account_dialog.vala
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/ui/manage_accounts/add_account_dialog.vala')
-rw-r--r--main/src/ui/manage_accounts/add_account_dialog.vala17
1 files changed, 13 insertions, 4 deletions
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<ListBoxRow, string> list_box_jids = new HashMap<ListBoxRow, string>();
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);