Add and enable newly created (first) account

fixes #584
This commit is contained in:
fiaxh 2019-08-23 21:19:26 +02:00
parent 130965f322
commit a99c3ff16d
3 changed files with 15 additions and 7 deletions

View file

@ -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);

View file

@ -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();

View file

@ -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();
});