summaryrefslogtreecommitdiff
path: root/src/login_window.c
diff options
context:
space:
mode:
authornirav <nirav@teisuu.com>2019-03-21 16:34:24 +0530
committerDandelion <nirav@teisuu.com>2019-03-21 16:50:20 +0530
commit4b27c1a348d8de036dabd5525452f5b9ad08a32b (patch)
treef70c35351dc357d4297f985607fce9221ced96f0 /src/login_window.c
parentc608bcc3dfab2abe7b66c10f8556086b2d45b3a3 (diff)
downloadap_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.c56
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, &register_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);