#include "../evil_portal_app_i.h"
#include "../helpers/evil_portal_storage.h"

void evil_portal_show_loading_popup(Evil_PortalApp* app, bool show) {
    TaskHandle_t timer_task = xTaskGetHandle(configTIMER_SERVICE_TASK_NAME);
    ViewStack* view_stack = app->view_stack;
    Loading* loading = app->loading;
    if(show) {
        // Raise timer priority so that animations can play
        vTaskPrioritySet(timer_task, configMAX_PRIORITIES - 1);
        view_stack_add_view(view_stack, loading_get_view(loading));
    } else {
        view_stack_remove_view(view_stack, loading_get_view(loading));
        // Restore default timer priority
        vTaskPrioritySet(timer_task, configTIMER_TASK_PRIORITY);
    }
}

void evil_portal_scene_select_html_on_enter(void* context) {
    Evil_PortalApp* app = context;
    DialogsFileBrowserOptions browser_options;
    evil_portal_create_html_folder_if_not_exists();

    dialog_file_browser_set_basic_options(&browser_options, HTML_EXTENSION, &I_evil_portal_10px);
    browser_options.base_path = HTML_FOLDER;

    FuriString* path;
    path = furi_string_alloc();

    furi_string_set(path, HTML_FOLDER);

    bool success = dialog_file_browser_show(app->dialogs, app->file_path, path, &browser_options);
    furi_string_free(path);

    if(success) {
        //Replace HTML File
        evil_portal_show_loading_popup(app, true);
        evil_portal_replace_index_html(app->file_path);
        evil_portal_show_loading_popup(app, false);
    }

    scene_manager_search_and_switch_to_previous_scene(app->scene_manager, Evil_PortalSceneStart);
}

bool evil_portal_scene_select_html_on_event(void* context, SceneManagerEvent event) {
    UNUSED(context);
    UNUSED(event);
    bool consumed = true;
    return consumed;
}

void evil_portal_scene_select_html_on_exit(void* context) {
    UNUSED(context);
}
