mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-06-14 19:53:35 -07:00
Add back API mismatch ignore dialog
This commit is contained in:
@@ -328,7 +328,10 @@ static LoaderStatus loader_start_external_app(
|
||||
|
||||
FlipperApplicationPreloadStatus preload_res =
|
||||
flipper_application_preload(loader->app.fap, path);
|
||||
if(preload_res != FlipperApplicationPreloadStatusSuccess) {
|
||||
bool api_mismatch = false;
|
||||
if(preload_res == FlipperApplicationPreloadStatusApiMismatch) {
|
||||
api_mismatch = true;
|
||||
} else if(preload_res != FlipperApplicationPreloadStatusSuccess) {
|
||||
const char* err_msg = flipper_application_preload_status_to_string(preload_res);
|
||||
status = loader_make_status_error(
|
||||
LoaderStatusErrorInternal, error_message, "Preload failed %s: %s", path, err_msg);
|
||||
@@ -338,14 +341,32 @@ static LoaderStatus loader_start_external_app(
|
||||
FURI_LOG_I(TAG, "Mapping");
|
||||
FlipperApplicationLoadStatus load_status =
|
||||
flipper_application_map_to_memory(loader->app.fap);
|
||||
FURI_LOG_I(TAG, "Loaded in %zums", (size_t)(furi_get_tick() - start));
|
||||
if(load_status != FlipperApplicationLoadStatusSuccess) {
|
||||
const char* err_msg = flipper_application_load_status_to_string(load_status);
|
||||
status = loader_make_status_error(
|
||||
LoaderStatusErrorInternal, error_message, "Load failed %s: %s", path, err_msg);
|
||||
break;
|
||||
} else if(api_mismatch) {
|
||||
// Successful map, but found api mismatch -> warn user
|
||||
DialogMessage* message = dialog_message_alloc();
|
||||
dialog_message_set_header(message, "API Mismatch", 64, 0, AlignCenter, AlignTop);
|
||||
dialog_message_set_buttons(message, "Cancel", NULL, "Continue");
|
||||
dialog_message_set_text(
|
||||
message,
|
||||
"This app might not\nwork correctly\nContinue anyways?",
|
||||
64,
|
||||
32,
|
||||
AlignCenter,
|
||||
AlignCenter);
|
||||
DialogMessageButton res = dialog_message_show(furi_record_open(RECORD_DIALOGS), message);
|
||||
dialog_message_free(message);
|
||||
furi_record_close(RECORD_DIALOGS);
|
||||
if(res != DialogMessageButtonRight) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
FURI_LOG_I(TAG, "Loaded in %zums", (size_t)(furi_get_tick() - start));
|
||||
FURI_LOG_I(TAG, "Starting app");
|
||||
|
||||
loader->app.thread = flipper_application_alloc_thread(loader->app.fap, args);
|
||||
@@ -363,12 +384,12 @@ static LoaderStatus loader_start_external_app(
|
||||
}
|
||||
|
||||
loader_start_app_thread(loader, FlipperInternalApplicationFlagDefault);
|
||||
|
||||
return status;
|
||||
} while(0);
|
||||
|
||||
if(status != LoaderStatusOk) {
|
||||
flipper_application_free(loader->app.fap);
|
||||
loader->app.fap = NULL;
|
||||
}
|
||||
flipper_application_free(loader->app.fap);
|
||||
loader->app.fap = NULL;
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user