From 4b27c1a348d8de036dabd5525452f5b9ad08a32b Mon Sep 17 00:00:00 2001 From: nirav Date: Thu, 21 Mar 2019 16:34:24 +0530 Subject: Use g_threads, add builder ui for timeline --- src/login_window.c | 56 ++++++++++++++++++++++++++---------------------------- 1 file changed, 27 insertions(+), 29 deletions(-) (limited to 'src/login_window.c') diff --git a/src/login_window.c b/src/login_window.c index f1823b9..a060d6c 100644 --- a/src/login_window.c +++ b/src/login_window.c @@ -5,6 +5,7 @@ #include #include #include "auth.h" +#include "register.h" #include "http.h" #include "timeline.h" #include "timeline_window.h" @@ -17,54 +18,51 @@ static GtkWidget *instance_name_box, *email_box, *password_box; static GtkWidget *submit_button; static GtkWidget *spinner; -static void window_removed( - GtkApplication *application, GtkWindow *w, gpointer user_data) +static gboolean login_completed(gpointer data) { - /* gtk_widget_destroy(GTK_WIDGET(w)); */ -} - -static void login_callback(bool success) -{ - if (!success) { + int *val_ptr = data; + gtk_spinner_stop(GTK_SPINNER(spinner)); + if (*val_ptr) { log_msg(LOG_WARNING, "login_callback", "login failed"); - gtk_spinner_stop(GTK_SPINNER(spinner)); - return; + } else { + create_timeline_window(application, NULL); } - gtk_spinner_stop(GTK_SPINNER(spinner)); - create_timeline_window(application, NULL); /* gtk_window_close(GTK_WINDOW(window)); */ /* gtk_application_remove_window( */ /* GTK_APPLICATION(application), GTK_WINDOW(window)); */ + + free(val_ptr); + return G_SOURCE_REMOVE; } -static void register_callback(bool success) +static gpointer user_register(gpointer data) { - if (!success) { - gtk_spinner_stop(GTK_SPINNER(spinner)); - log_msg(LOG_WARNING, "register_callback", "register failed"); - return; - } + int *val_ptr; + const char *instance_name, *email, *password; - const char *email, *password; + instance_name = gtk_entry_get_text(GTK_ENTRY(instance_name_box)); email = gtk_entry_get_text(GTK_ENTRY(email_box)); password = gtk_entry_get_text(GTK_ENTRY(password_box)); - if (login(email, password, &login_callback)) { - gtk_spinner_stop(GTK_SPINNER(spinner)); - return; + val_ptr = malloc(sizeof(int)); + *val_ptr = register_app(instance_name); + if (*val_ptr) { + log_msg(LOG_WARNING, "user_register", "registration failed"); + } + *val_ptr = login(email, password); + if (*val_ptr) { + log_msg(LOG_WARNING, "user_register", "login failed"); } + + gdk_threads_add_idle(login_completed, val_ptr); + return NULL; } static void submit_login_form() { gtk_spinner_start(GTK_SPINNER(spinner)); - const char *instance_name; - instance_name = gtk_entry_get_text(GTK_ENTRY(instance_name_box)); - if (register_app(instance_name, ®ister_callback)) { - gtk_spinner_stop(GTK_SPINNER(spinner)); - return; - } + g_thread_new("register", user_register, NULL); return; } @@ -104,7 +102,7 @@ void create_login_window(GtkApplication *app, gpointer user_data) gtk_window_set_title(GTK_WINDOW(window), "ap_client"); gtk_window_set_default_size(GTK_WINDOW(window), 800, 600); gtk_container_set_border_width(GTK_CONTAINER(window), 10); - g_signal_connect(app, "window-removed", G_CALLBACK(window_removed), NULL); + /* g_signal_connect(app, "window-removed", G_CALLBACK(window_removed), NULL); */ box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 6); gtk_widget_set_valign(GTK_WIDGET(box), GTK_ALIGN_CENTER); -- cgit v1.2.3