diff options
author | nirav <nirav@teisuu.com> | 2019-03-28 09:10:52 +0530 |
---|---|---|
committer | nirav <nirav@teisuu.com> | 2019-03-28 09:10:52 +0530 |
commit | 477e1ba2977435ae7bb75c7dbd95cf28247f89bd (patch) | |
tree | ce1f9719a7d11bbd47e9adea26dd610bc087962e /src/login_window.c | |
parent | cc727e972f7fdc871ee1f42cf014151b67422bf0 (diff) | |
download | ap_client-477e1ba2977435ae7bb75c7dbd95cf28247f89bd.tar.gz ap_client-477e1ba2977435ae7bb75c7dbd95cf28247f89bd.zip |
Diffstat (limited to 'src/login_window.c')
-rw-r--r-- | src/login_window.c | 48 |
1 files changed, 23 insertions, 25 deletions
diff --git a/src/login_window.c b/src/login_window.c index 241ca9b..54f7174 100644 --- a/src/login_window.c +++ b/src/login_window.c @@ -1,16 +1,13 @@ #define _POSIX_C_SOURCE 200809L -#include <err.h> +#include <stdbool.h> #include <stdio.h> #include <stdlib.h> -#include <stdbool.h> #include <gtk-3.0/gtk/gtk.h> -#include "auth.h" -#include "register.h" -#include "http.h" -#include "timeline.h" +#include <gs.h> #include "main_window.h" #include "log.h" +static GSClient *gs_client = NULL; GtkApplication *application; GObject *login_dialog; GObject *instance_domain_entry, *email_entry, *password_entry; @@ -19,39 +16,40 @@ GObject *spinner; static gboolean login_completed(gpointer data) { - int *val_ptr = data; gtk_spinner_stop(GTK_SPINNER(spinner)); - if (*val_ptr) { - free(val_ptr); - log_msg(LOG_WARNING, "login_callback", "login failed"); - return G_SOURCE_REMOVE; - } else { - free(val_ptr); - gtk_widget_destroy(GTK_WIDGET(login_dialog)); - return G_SOURCE_REMOVE; - } + gtk_widget_destroy(GTK_WIDGET(login_dialog)); + return G_SOURCE_REMOVE; +} + +static gboolean login_failed(gpointer data) +{ + gtk_spinner_stop(GTK_SPINNER(spinner)); + return G_SOURCE_REMOVE; } static gpointer user_register(gpointer data) { - int *val_ptr; const char *instance_name, *email, *password; + struct gs_app *app; instance_name = gtk_entry_get_text(GTK_ENTRY(instance_domain_entry)); email = gtk_entry_get_text(GTK_ENTRY(email_entry)); password = gtk_entry_get_text(GTK_ENTRY(password_entry)); - val_ptr = malloc(sizeof(int)); - *val_ptr = register_app(instance_name); + app = gs_app_register(instance_name); if (*val_ptr) { log_msg(LOG_WARNING, "user_register", "registration failed"); } - *val_ptr = login(email, password); - if (*val_ptr) { + + gs_client = gs_client_new(instance_name, app->client_id, app->client_secret); + + if (gs_auth_authenticate(gs_client, email, password)) { log_msg(LOG_WARNING, "user_register", "login failed"); + gdk_threads_add_idle(login_failed, NULL); + return; } - gdk_threads_add_idle(login_completed, val_ptr); + gdk_threads_add_idle(login_completed, NULL); return NULL; } @@ -73,7 +71,6 @@ static bool is_form_valid() static void login_button_click(GtkButton *button, gpointer user_data) { - g_print("clicked\n"); if (is_form_valid()) submit_login_form(); } @@ -92,14 +89,15 @@ static void login_form_changed(GtkWidget *widget, gpointer data) gtk_widget_set_sensitive(GTK_WIDGET(login_button), false); } -int create_login_dialog() +int create_login_dialog(gpointer data) { GtkBuilder *login_builder; login_builder = gtk_builder_new_from_file("data/login_window.ui"); login_dialog = gtk_builder_get_object(login_builder, "login_dialog"); - instance_domain_entry = gtk_builder_get_object(login_builder, "instance_name"); + instance_domain_entry = gtk_builder_get_object(login_builder, + "instance_name"); g_signal_connect(G_OBJECT(instance_domain_entry), "changed", G_CALLBACK(login_form_changed), NULL); g_signal_connect(GTK_ENTRY(instance_domain_entry), "activate", |