diff options
author | nirav <nirav@teisuu.com> | 2019-03-21 16:34:24 +0530 |
---|---|---|
committer | Dandelion <nirav@teisuu.com> | 2019-03-21 16:50:20 +0530 |
commit | 4b27c1a348d8de036dabd5525452f5b9ad08a32b (patch) | |
tree | f70c35351dc357d4297f985607fce9221ced96f0 /src/login_window.c | |
parent | c608bcc3dfab2abe7b66c10f8556086b2d45b3a3 (diff) | |
download | ap_client-4b27c1a348d8de036dabd5525452f5b9ad08a32b.tar.gz ap_client-4b27c1a348d8de036dabd5525452f5b9ad08a32b.zip |
Use g_threads, add builder ui for timeline
Diffstat (limited to 'src/login_window.c')
-rw-r--r-- | src/login_window.c | 56 |
1 files changed, 27 insertions, 29 deletions
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 <stdbool.h> #include <gtk-3.0/gtk/gtk.h> #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); |