[FL-2494, FL-2497] PIN Lock refactoring, IR library fix (#1167)

* PIN Lock refactoring
* Change tv.ir file type to prevent opening from archive
* Manifest update
* Assets: enforce sorting in fs traversal

Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
Nikolay Minaylov
2022-04-27 19:30:37 +03:00
committed by GitHub
parent c60562a02c
commit 2034b6ac4a
15 changed files with 168 additions and 136 deletions

View File

@@ -14,7 +14,7 @@
#include "desktop/views/desktop_view_pin_input.h"
#include "desktop/views/desktop_view_pin_timeout.h"
#include "desktop_i.h"
#include "desktop_helpers.h"
#include "helpers/pin_lock.h"
static void desktop_auto_lock_arm(Desktop*);
static void desktop_auto_lock_inhibit(Desktop*);
@@ -117,7 +117,6 @@ static void desktop_auto_lock_inhibit(Desktop* desktop) {
}
void desktop_lock(Desktop* desktop) {
furi_hal_rtc_set_pin_fails(0);
desktop_auto_lock_inhibit(desktop);
scene_manager_set_scene_state(
desktop->scene_manager, DesktopSceneLocked, SCENE_LOCKED_FIRST_ENTER);
@@ -126,8 +125,10 @@ void desktop_lock(Desktop* desktop) {
}
void desktop_unlock(Desktop* desktop) {
furi_hal_rtc_set_pin_fails(0);
desktop_helpers_unlock_system(desktop);
view_port_enabled_set(desktop->lock_viewport, false);
Gui* gui = furi_record_open("gui");
gui_set_lockdown(gui, false);
furi_record_close("gui");
desktop_view_locked_unlock(desktop->locked_view);
scene_manager_search_and_switch_to_previous_scene(desktop->scene_manager, DesktopSceneMain);
desktop_auto_lock_arm(desktop);
@@ -301,18 +302,15 @@ int32_t desktop_srv(void* p) {
bool loaded = LOAD_DESKTOP_SETTINGS(&desktop->settings);
if(!loaded) {
furi_hal_rtc_reset_flag(FuriHalRtcFlagLock);
memset(&desktop->settings, 0, sizeof(desktop->settings));
SAVE_DESKTOP_SETTINGS(&desktop->settings);
}
scene_manager_next_scene(desktop->scene_manager, DesktopSceneMain);
if(furi_hal_rtc_is_flag_set(FuriHalRtcFlagLock) && !desktop->settings.pin_code.length) {
furi_hal_rtc_reset_flag(FuriHalRtcFlagLock);
}
desktop_pin_lock_init(&desktop->settings);
if(!furi_hal_rtc_is_flag_set(FuriHalRtcFlagLock)) {
if(!desktop_pin_lock_is_locked()) {
if(!loader_is_locked(desktop->loader)) {
desktop_auto_lock_arm(desktop);
}