Переглянути джерело

Update Login/Register Porcess

jblanked 1 рік тому
батько
коміт
b00b1ae7c0

+ 0 - 8
alloc/flip_social_alloc.c

@@ -222,14 +222,6 @@ FlipSocialApp *flip_social_app_alloc()
     //
     //
 
 
     // Allocate View(s)
     // Allocate View(s)
-    if (!easy_flipper_set_view(&app->view_process_login, FlipSocialViewLoggedOutProcessLogin, flip_social_callback_draw_login, NULL, flip_social_callback_to_login_logged_out, &app->view_dispatcher, app))
-    {
-        return NULL;
-    }
-    if (!easy_flipper_set_view(&app->view_process_register, FlipSocialViewLoggedOutProcessRegister, flip_social_callback_draw_register, NULL, flip_social_callback_to_register_logged_out, &app->view_dispatcher, app))
-    {
-        return NULL;
-    }
     if (!easy_flipper_set_view(&app->view_process_feed, FlipSocialViewLoggedInFeed, flip_social_callback_draw_feed, NULL, flip_social_callback_to_submenu_logged_in, &app->view_dispatcher, app))
     if (!easy_flipper_set_view(&app->view_process_feed, FlipSocialViewLoggedInFeed, flip_social_callback_draw_feed, NULL, flip_social_callback_to_submenu_logged_in, &app->view_dispatcher, app))
     {
     {
         return NULL;
         return NULL;

+ 151 - 4
callback/flip_social_callback.c

@@ -10,7 +10,7 @@
 #define DEV_CRASH()
 #define DEV_CRASH()
 #endif
 #endif
 
 
-static void flip_social_request_error_draw(Canvas *canvas)
+void flip_social_request_error_draw(Canvas *canvas)
 {
 {
     if (canvas == NULL)
     if (canvas == NULL)
     {
     {
@@ -63,6 +63,153 @@ static void flip_social_request_error_draw(Canvas *canvas)
     }
     }
 }
 }
 
 
+static bool flip_social_login_fetch(DataLoaderModel *model)
+{
+    UNUSED(model);
+    if (!app_instance->login_username_logged_out || !app_instance->login_password_logged_out || strlen(app_instance->login_username_logged_out) == 0 || strlen(app_instance->login_password_logged_out) == 0)
+    {
+        return false;
+    }
+
+    char buffer[256];
+    snprintf(buffer, sizeof(buffer), "{\"username\":\"%s\",\"password\":\"%s\"}", app_instance->login_username_logged_out, app_instance->login_password_logged_out);
+    auth_headers_alloc();
+    if (flipper_http_post_request_with_headers("https://www.flipsocial.net/api/user/login/", auth_headers, buffer))
+    {
+        fhttp.state = RECEIVING;
+        return true;
+    }
+    else
+    {
+        fhttp.state = ISSUE;
+        return false;
+    }
+}
+
+static char *flip_social_login_parse(DataLoaderModel *model)
+{
+    UNUSED(model);
+    // read response
+    if (strstr(fhttp.last_response, "[SUCCESS]") != NULL || strstr(fhttp.last_response, "User found") != NULL)
+    {
+        app_instance->is_logged_in = "true";
+
+        // set the logged_in_username and change_password_logged_in
+        if (app_instance->login_username_logged_out)
+        {
+            strcpy(app_instance->login_username_logged_in, app_instance->login_username_logged_out);
+        }
+        if (app_instance->login_password_logged_out)
+        {
+            strcpy(app_instance->change_password_logged_in, app_instance->login_password_logged_out);
+        }
+
+        save_settings(app_instance->wifi_ssid_logged_out, app_instance->wifi_password_logged_out, app_instance->login_username_logged_out, app_instance->login_username_logged_in, app_instance->login_password_logged_out, app_instance->change_password_logged_in, app_instance->is_logged_in);
+
+        // send user to the logged in submenu
+        view_dispatcher_switch_to_view(app_instance->view_dispatcher, FlipSocialViewLoggedInSubmenu);
+        return "Login successful!";
+    }
+    else if (strstr(fhttp.last_response, "User not found") != NULL)
+    {
+        return "Account not found...";
+    }
+    else
+    {
+        return "Failed to login...";
+    }
+}
+
+static void flip_social_login_switch_to_view(FlipSocialApp *app)
+{
+    flip_social_generic_switch_to_view(app, "Logging in...", flip_social_login_fetch, flip_social_login_parse, 1, flip_social_callback_to_login_logged_out, FlipSocialViewLoader);
+}
+
+static bool flip_social_register_fetch(DataLoaderModel *model)
+{
+    UNUSED(model);
+    // check if the username and password are valid
+    if (!app_instance->register_username_logged_out || !app_instance->register_password_logged_out || strlen(app_instance->register_username_logged_out) == 0 || strlen(app_instance->register_password_logged_out) == 0)
+    {
+        FURI_LOG_E(TAG, "Username or password is NULL");
+        return false;
+    }
+
+    // check if both passwords match
+    if (strcmp(app_instance->register_password_logged_out, app_instance->register_password_2_logged_out) != 0)
+    {
+        FURI_LOG_E(TAG, "Passwords do not match");
+        return false;
+    }
+
+    char buffer[128];
+    snprintf(buffer, sizeof(buffer), "{\"username\":\"%s\",\"password\":\"%s\"}", app_instance->register_username_logged_out, app_instance->register_password_logged_out);
+
+    if (flipper_http_post_request_with_headers("https://www.flipsocial.net/api/user/register/", "{\"Content-Type\":\"application/json\"}", buffer))
+    {
+        // Set the state to RECEIVING to ensure we continue to see the receiving message
+        fhttp.state = RECEIVING;
+        return true;
+    }
+    else
+    {
+        fhttp.state = ISSUE;
+        return false;
+    }
+}
+
+static char *flip_social_register_parse(DataLoaderModel *model)
+{
+    UNUSED(model);
+    // read response
+    if (fhttp.last_response != NULL && (strstr(fhttp.last_response, "[SUCCESS]") != NULL || strstr(fhttp.last_response, "User created") != NULL))
+    {
+        // set the login credentials
+        if (app_instance->login_username_logged_out)
+        {
+            app_instance->login_username_logged_out = app_instance->register_username_logged_out;
+        }
+        if (app_instance->login_password_logged_out)
+        {
+            app_instance->login_password_logged_out = app_instance->register_password_logged_out;
+            app_instance->change_password_logged_in = app_instance->register_password_logged_out;
+        }
+        if (app_instance->login_username_logged_in)
+        {
+            app_instance->login_username_logged_in = app_instance->register_username_logged_out;
+        }
+
+        app_instance->is_logged_in = "true";
+
+        // update header credentials
+        auth_headers_alloc();
+
+        // save the credentials
+        save_settings(app_instance->wifi_ssid_logged_out, app_instance->wifi_password_logged_out, app_instance->login_username_logged_out, app_instance->login_username_logged_in, app_instance->login_password_logged_out, app_instance->change_password_logged_in, app_instance->is_logged_in);
+
+        // send user to the logged in submenu
+        view_dispatcher_switch_to_view(app_instance->view_dispatcher, FlipSocialViewLoggedInSubmenu);
+        return "Registration successful!\nWelcome to FlipSocial!";
+    }
+    else if (strstr(fhttp.last_response, "Username or password not provided") != NULL)
+    {
+        return "Please enter your credentials.\nPress BACK to return.";
+    }
+    else if (strstr(fhttp.last_response, "User already exists") != NULL || strstr(fhttp.last_response, "Multiple users found") != NULL)
+    {
+        return "Registration failed...\nUsername already exists.\nPress BACK to return.";
+    }
+    else
+    {
+        return "Registration failed...\nUpdate your credentials.\nPress BACK to return.";
+    }
+}
+
+static void flip_social_register_switch_to_view(FlipSocialApp *app)
+{
+    flip_social_generic_switch_to_view(app, "Registering...", flip_social_register_fetch, flip_social_register_parse, 1, flip_social_callback_to_register_logged_out, FlipSocialViewLoader);
+}
+
 /**
 /**
  * @brief Navigation callback to go back to the submenu Logged out.
  * @brief Navigation callback to go back to the submenu Logged out.
  * @param context The context - unused
  * @param context The context - unused
@@ -670,7 +817,7 @@ void flip_social_text_input_logged_out_login_item_selected(void *context, uint32
         view_dispatcher_switch_to_view(app->view_dispatcher, FlipSocialViewLoggedOutLoginPasswordInput);
         view_dispatcher_switch_to_view(app->view_dispatcher, FlipSocialViewLoggedOutLoginPasswordInput);
         break;
         break;
     case 2: // Login Button
     case 2: // Login Button
-        view_dispatcher_switch_to_view(app->view_dispatcher, FlipSocialViewLoggedOutProcessLogin);
+        flip_social_login_switch_to_view(app);
         break;
         break;
     default:
     default:
         FURI_LOG_E(TAG, "Unknown configuration item index");
         FURI_LOG_E(TAG, "Unknown configuration item index");
@@ -788,7 +935,7 @@ void flip_social_text_input_logged_out_register_item_selected(void *context, uin
         view_dispatcher_switch_to_view(app->view_dispatcher, FlipSocialViewLoggedOutRegisterPassword2Input);
         view_dispatcher_switch_to_view(app->view_dispatcher, FlipSocialViewLoggedOutRegisterPassword2Input);
         break;
         break;
     case 3: // Register button
     case 3: // Register button
-        view_dispatcher_switch_to_view(app->view_dispatcher, FlipSocialViewLoggedOutProcessRegister);
+        flip_social_register_switch_to_view(app);
         break;
         break;
     default:
     default:
         FURI_LOG_E(TAG, "Unknown configuration item index");
         FURI_LOG_E(TAG, "Unknown configuration item index");
@@ -1333,7 +1480,7 @@ void flip_social_loader_draw_callback(Canvas *canvas, void *model)
 
 
     if (http_state == SENDING)
     if (http_state == SENDING)
     {
     {
-        canvas_draw_str(canvas, 0, 27, "Sending...");
+        canvas_draw_str(canvas, 0, 27, "Fetching...");
         return;
         return;
     }
     }
 
 

+ 2 - 0
callback/flip_social_callback.h

@@ -9,6 +9,8 @@
 #include <draw/flip_social_draw.h>
 #include <draw/flip_social_draw.h>
 #include <flip_storage/flip_social_storage.h>
 #include <flip_storage/flip_social_storage.h>
 
 
+void flip_social_request_error_draw(Canvas *canvas);
+
 /**
 /**
  * @brief Navigation callback to go back to the submenu Logged out.
  * @brief Navigation callback to go back to the submenu Logged out.
  * @param context The context - unused
  * @param context The context - unused

+ 0 - 281
draw/flip_social_draw.c

@@ -15,39 +15,6 @@ bool flip_social_board_is_active(Canvas *canvas)
     return true;
     return true;
 }
 }
 
 
-void flip_social_handle_error(Canvas *canvas)
-{
-    if (fhttp.last_response != NULL)
-    {
-        if (strstr(fhttp.last_response, "[ERROR] Not connected to Wifi. Failed to reconnect.") != NULL)
-        {
-            canvas_clear(canvas);
-            canvas_draw_str(canvas, 0, 10, "[ERROR] Not connected to Wifi.");
-            canvas_draw_str(canvas, 0, 50, "Update your WiFi settings.");
-            canvas_draw_str(canvas, 0, 60, "Press BACK to return.");
-        }
-        else if (strstr(fhttp.last_response, "[ERROR] Failed to connect to Wifi.") != NULL)
-        {
-            canvas_clear(canvas);
-            canvas_draw_str(canvas, 0, 10, "[ERROR] Not connected to Wifi.");
-            canvas_draw_str(canvas, 0, 50, "Update your WiFi settings.");
-            canvas_draw_str(canvas, 0, 60, "Press BACK to return.");
-        }
-        else
-        {
-            canvas_draw_str(canvas, 0, 42, "Failed...");
-            canvas_draw_str(canvas, 0, 52, "Update your credentials.");
-            canvas_draw_str(canvas, 0, 62, "Press BACK to return.");
-        }
-    }
-    else
-    {
-        canvas_draw_str(canvas, 0, 42, "Failed...");
-        canvas_draw_str(canvas, 0, 52, "Update your credentials.");
-        canvas_draw_str(canvas, 0, 62, "Press BACK to return.");
-    }
-}
-
 void on_input(const void *event, void *ctx)
 void on_input(const void *event, void *ctx)
 {
 {
     UNUSED(ctx);
     UNUSED(ctx);
@@ -541,254 +508,6 @@ void flip_social_callback_draw_feed(Canvas *canvas, void *model)
         action = ActionNone;
         action = ActionNone;
     }
     }
 }
 }
-/**
- * @brief Navigation callback for asynchonously handling the login process.
- * @param canvas The canvas to draw on.
- * @param model The model - unused
- * @return void
- */
-void flip_social_callback_draw_login(Canvas *canvas, void *model)
-{
-    UNUSED(model);
-    if (!canvas)
-    {
-        FURI_LOG_E(TAG, "Canvas is NULL");
-        return;
-    }
-
-    canvas_set_font(canvas, FontSecondary);
-
-    if (!flip_social_board_is_active(canvas))
-    {
-        return;
-    }
-
-    canvas_draw_str(canvas, 0, 7, "Logging in...");
-
-    // Perform login request
-    if (!flip_social_sent_login_request)
-    {
-
-        if (!app_instance->login_username_logged_out || !app_instance->login_password_logged_out || strlen(app_instance->login_username_logged_out) == 0 || strlen(app_instance->login_password_logged_out) == 0)
-        {
-            canvas_clear(canvas);
-            canvas_draw_str(canvas, 0, 10, "Please enter your credentials.");
-            canvas_draw_str(canvas, 0, 60, "Press BACK to return.");
-            return;
-        }
-
-        flip_social_sent_login_request = true;
-
-        char buffer[256];
-        snprintf(buffer, sizeof(buffer), "{\"username\":\"%s\",\"password\":\"%s\"}", app_instance->login_username_logged_out, app_instance->login_password_logged_out);
-        auth_headers_alloc();
-        flip_social_login_success = flipper_http_post_request_with_headers("https://www.flipsocial.net/api/user/login/", auth_headers, buffer);
-        if (flip_social_login_success)
-        {
-            fhttp.state = RECEIVING;
-            return;
-        }
-        else
-        {
-            fhttp.state = ISSUE;
-            return;
-        }
-    }
-    // handle response
-    if (flip_social_sent_login_request && flip_social_login_success)
-    {
-        canvas_set_font(canvas, FontSecondary);
-        canvas_draw_str(canvas, 0, 17, "Request Sent!");
-        canvas_draw_str(canvas, 0, 32, "Awaiting reponse...");
-
-        if (fhttp.state == IDLE && fhttp.last_response != NULL)
-        {
-            // read response
-            if (strstr(fhttp.last_response, "[SUCCESS]") != NULL || strstr(fhttp.last_response, "User found") != NULL)
-            {
-                canvas_draw_str(canvas, 0, 42, "Login successful!");
-                canvas_draw_str(canvas, 0, 62, "Welcome back!");
-
-                app_instance->is_logged_in = "true";
-
-                // set the logged_in_username and change_password_logged_in
-                if (app_instance->login_username_logged_out)
-                {
-                    strcpy(app_instance->login_username_logged_in, app_instance->login_username_logged_out);
-                }
-                if (app_instance->login_password_logged_out)
-                {
-                    strcpy(app_instance->change_password_logged_in, app_instance->login_password_logged_out);
-                }
-
-                save_settings(app_instance->wifi_ssid_logged_out, app_instance->wifi_password_logged_out, app_instance->login_username_logged_out, app_instance->login_username_logged_in, app_instance->login_password_logged_out, app_instance->change_password_logged_in, app_instance->is_logged_in);
-
-                // send user to the logged in submenu
-                view_dispatcher_switch_to_view(app_instance->view_dispatcher, FlipSocialViewLoggedInSubmenu);
-            }
-            else if (strstr(fhttp.last_response, "User not found") != NULL)
-            {
-                canvas_clear(canvas);
-                canvas_draw_str(canvas, 0, 10, "Account not found...");
-                canvas_draw_str(canvas, 0, 60, "Press BACK to return.");
-            }
-            else
-            {
-                flip_social_handle_error(canvas);
-            }
-        }
-        else if ((fhttp.state == ISSUE || fhttp.state == INACTIVE) && fhttp.last_response != NULL)
-        {
-            flip_social_handle_error(canvas);
-        }
-        else if (fhttp.state == IDLE && fhttp.last_response == NULL)
-        {
-            flip_social_handle_error(canvas);
-        }
-    }
-    else if (flip_social_sent_login_request && !flip_social_login_success)
-    {
-        canvas_clear(canvas);
-        canvas_draw_str(canvas, 0, 10, "Failed sending request.");
-        canvas_draw_str(canvas, 0, 50, "Update your WiFi settings.");
-        canvas_draw_str(canvas, 0, 62, "Press BACK to return.");
-    }
-}
-
-/**
- * @brief Navigation callback for asynchonously handling the register process.
- * @param canvas The canvas to draw on.
- * @param model The model - unused
- * @return void
- */
-void flip_social_callback_draw_register(Canvas *canvas, void *model)
-{
-    UNUSED(model);
-    if (!canvas)
-    {
-        FURI_LOG_E(TAG, "Canvas is NULL");
-        return;
-    }
-
-    canvas_set_font(canvas, FontSecondary);
-
-    if (!flip_social_board_is_active(canvas))
-    {
-        return;
-    }
-
-    canvas_draw_str(canvas, 0, 7, "Registering...");
-
-    // Perform login request
-    if (!flip_social_sent_register_request)
-    {
-
-        // check if the username and password are valid
-        if (!app_instance->register_username_logged_out || !app_instance->register_password_logged_out || strlen(app_instance->register_username_logged_out) == 0 || strlen(app_instance->register_password_logged_out) == 0)
-        {
-            canvas_clear(canvas);
-            canvas_draw_str(canvas, 0, 10, "Please enter your credentials.");
-            canvas_draw_str(canvas, 0, 60, "Press BACK to return.");
-            return;
-        }
-
-        // check if both passwords match
-        if (strcmp(app_instance->register_password_logged_out, app_instance->register_password_2_logged_out) != 0)
-        {
-            canvas_clear(canvas);
-            canvas_draw_str(canvas, 0, 10, "Passwords do not match.");
-            canvas_draw_str(canvas, 0, 60, "Press BACK to return.");
-            return;
-        }
-
-        char buffer[128];
-        snprintf(buffer, sizeof(buffer), "{\"username\":\"%s\",\"password\":\"%s\"}", app_instance->register_username_logged_out, app_instance->register_password_logged_out);
-        flip_social_register_success = flipper_http_post_request_with_headers("https://www.flipsocial.net/api/user/register/", "{\"Content-Type\":\"application/json\"}", buffer);
-
-        flip_social_sent_register_request = true;
-        if (flip_social_register_success)
-        {
-            // Set the state to RECEIVING to ensure we continue to see the receiving message
-            fhttp.state = RECEIVING;
-        }
-        else
-        {
-            fhttp.state = ISSUE;
-        }
-    }
-    // handle response
-    if (flip_social_sent_register_request && flip_social_register_success)
-    {
-        canvas_set_font(canvas, FontSecondary);
-        canvas_draw_str(canvas, 0, 17, "Request Sent!");
-        canvas_draw_str(canvas, 0, 32, "Awaiting reponse...");
-
-        if (fhttp.state == IDLE)
-        {
-            // read response
-            if (fhttp.last_response != NULL && (strstr(fhttp.last_response, "[SUCCESS]") != NULL || strstr(fhttp.last_response, "User created") != NULL))
-            {
-                canvas_draw_str(canvas, 0, 42, "Registeration successful!");
-                canvas_draw_str(canvas, 0, 62, "Welcome to FlipSocial!");
-
-                // set the login credentials
-                if (app_instance->login_username_logged_out)
-                {
-                    app_instance->login_username_logged_out = app_instance->register_username_logged_out;
-                }
-                if (app_instance->login_password_logged_out)
-                {
-                    app_instance->login_password_logged_out = app_instance->register_password_logged_out;
-                    app_instance->change_password_logged_in = app_instance->register_password_logged_out;
-                }
-                if (app_instance->login_username_logged_in)
-                {
-                    app_instance->login_username_logged_in = app_instance->register_username_logged_out;
-                }
-
-                app_instance->is_logged_in = "true";
-
-                // update header credentials
-                auth_headers_alloc();
-
-                // save the credentials
-                save_settings(app_instance->wifi_ssid_logged_out, app_instance->wifi_password_logged_out, app_instance->login_username_logged_out, app_instance->login_username_logged_in, app_instance->login_password_logged_out, app_instance->change_password_logged_in, app_instance->is_logged_in);
-
-                // send user to the logged in submenu
-                view_dispatcher_switch_to_view(app_instance->view_dispatcher, FlipSocialViewLoggedInSubmenu);
-            }
-            else if (strstr(fhttp.last_response, "Username or password not provided") != NULL)
-            {
-                canvas_clear(canvas);
-                canvas_draw_str(canvas, 0, 10, "Please enter your credentials.");
-                canvas_draw_str(canvas, 0, 60, "Press BACK to return.");
-            }
-            else if (strstr(fhttp.last_response, "User already exists") != NULL || strstr(fhttp.last_response, "Multiple users found") != NULL)
-            {
-                canvas_draw_str(canvas, 0, 42, "Registration failed...");
-                canvas_draw_str(canvas, 0, 52, "Username already exists.");
-                canvas_draw_str(canvas, 0, 62, "Press BACK to return.");
-            }
-            else
-            {
-                canvas_draw_str(canvas, 0, 42, "Registration failed...");
-                canvas_draw_str(canvas, 0, 52, "Update your credentials.");
-                canvas_draw_str(canvas, 0, 62, "Press BACK to return.");
-            }
-        }
-        else if (fhttp.state == ISSUE || fhttp.state == INACTIVE)
-        {
-            flip_social_handle_error(canvas);
-        }
-    }
-    else if (flip_social_sent_register_request && !flip_social_register_success)
-    {
-        canvas_clear(canvas);
-        canvas_draw_str(canvas, 0, 10, "Failed sending request.");
-        canvas_draw_str(canvas, 0, 50, "Update your WiFi settings.");
-        canvas_draw_str(canvas, 0, 62, "Press BACK to return.");
-    }
-}
 
 
 // function to draw the dialog canvas
 // function to draw the dialog canvas
 void flip_social_canvas_draw_explore(Canvas *canvas, char *user_username, char *content)
 void flip_social_canvas_draw_explore(Canvas *canvas, char *user_username, char *content)

+ 0 - 14
draw/flip_social_draw.h

@@ -29,20 +29,6 @@ void flip_social_callback_draw_compose(Canvas *canvas, void *model);
 void flip_social_canvas_draw_message(Canvas *canvas, char *user_username, char *user_message, bool is_flipped, bool show_prev, bool show_next, int flip_count);
 void flip_social_canvas_draw_message(Canvas *canvas, char *user_username, char *user_message, bool is_flipped, bool show_prev, bool show_next, int flip_count);
 // Callback function to handle the feed dialog
 // Callback function to handle the feed dialog
 void flip_social_callback_draw_feed(Canvas *canvas, void *model);
 void flip_social_callback_draw_feed(Canvas *canvas, void *model);
-/**
- * @brief Navigation callback for asynchonously handling the login process.
- * @param canvas The canvas to draw on.
- * @param model The model - unused
- * @return void
- */
-void flip_social_callback_draw_login(Canvas *canvas, void *model);
-/**
- * @brief Navigation callback for asynchonously handling the register process.
- * @param canvas The canvas to draw on.
- * @param model The model - unused
- * @return void
- */
-void flip_social_callback_draw_register(Canvas *canvas, void *model);
 
 
 // function to draw the dialog canvas
 // function to draw the dialog canvas
 void flip_social_canvas_draw_explore(Canvas *canvas, char *user_username, char *content);
 void flip_social_canvas_draw_explore(Canvas *canvas, char *user_username, char *content);