diff --git a/project/backend/manager.c b/project/backend/manager.c index 1221e0f..fc59010 100644 --- a/project/backend/manager.c +++ b/project/backend/manager.c @@ -134,7 +134,55 @@ void manager_loadnames(Manager* manager, int page){ // Cleanup free(split); } +void manager_loadpass(Manager* manager, char* name) { + // Freeing previous password + if (manager->current != NULL) { + free(manager->current); + } + + // DEBUG + FURI_LOG_I(TAG, "Loading password of name %s", name); + + // Loading password string + char* data = store_load("Data"); + + // Splitting string + int count = 0; + char** split = split_string(data, '|', &count); + + // Unloading data + free(data); + + // Going through string to grab data + for(int i = 0; i < count; i++) { + // Is it a multiple of four? + if (i % 4 == 0) { + // Does the password name match? + if (!strcmp(name, split[i])) { + // Setting the new current password + manager->current = pass_create( + name, + split[i+1], + split[i+2], + 0); + + // Break! + break; + } + } + } + + // Cleanup + free(split); + + // DEBUG + FURI_LOG_D(TAG, "Loaded Password: %s, %s, %s", manager->current->name, manager->current->user, manager->current->phrase); +} void manager_delete(Manager* manager) { - free(manager->names); + for(int i = 0; i < 4; i++) { + free(manager->names[i]); + } + + free(manager->current); free(manager); } \ No newline at end of file diff --git a/project/backend/manager.h b/project/backend/manager.h index a4f5cc8..dc919b5 100644 --- a/project/backend/manager.h +++ b/project/backend/manager.h @@ -11,6 +11,8 @@ // Structures typedef struct { + Password* current; + char* names[4]; int page; } Manager; @@ -21,6 +23,7 @@ Manager* manager_create(); // Functions void manager_switchpage(Manager* manager, int dir); void manager_loadnames(Manager* manager, int page); +void manager_loadpass(Manager* manager, char* name); void manager_delete(Manager* manager); #endif \ No newline at end of file diff --git a/project/backend/ui.c b/project/backend/ui.c index a7889bf..400e888 100644 --- a/project/backend/ui.c +++ b/project/backend/ui.c @@ -248,6 +248,10 @@ void ui_p_view(Canvas* canvas, UIManager* manager) { manager_switchpage(manager->manager, 1); break; case Ok: + char* pass_name = manager->manager->names[manager->selection]; + manager_loadpass(manager->manager, pass_name); + + manager->page = 3; break; default: break; @@ -262,6 +266,8 @@ void ui_p_view(Canvas* canvas, UIManager* manager) { } void ui_p_vpass(Canvas* canvas, UIManager* manager) { // TODO: Do this after figuring out how to select password + UNUSED(canvas); + UNUSED(manager); } void ui_delete(UIManager* manager) {