Procházet zdrojové kódy

text input flow cleanup

Struan Clark před 2 roky
rodič
revize
b149ebc0e5
3 změnil soubory, kde provedl 28 přidání a 17 odebrání
  1. 14 7
      flipbip.c
  2. 10 3
      flipbip.h
  3. 4 7
      scenes/flipbip_scene_settings.c

+ 14 - 7
flipbip.c

@@ -24,14 +24,20 @@ static void text_input_callback(void* context) {
     furi_assert(context);
     furi_assert(context);
     FlipBip* app = context;
     FlipBip* app = context;
 
 
-    if(app->passphrase == FlipBipPassphraseOn && strlen(app->input) > 0) {
-        strcpy(app->passphrase_text, app->input);
-    } else {
-        memzero(app->passphrase_text, TEXT_BUFFER_SIZE);
+    // check that there is text in the input
+    if(strlen(app->input_text) > 0) {
+        if(app->input_state == FlipBipTextInputPassphrase) {
+            if(app->passphrase == FlipBipPassphraseOn) {
+                strcpy(app->passphrase_text, app->input_text);
+            }
+            view_dispatcher_switch_to_view(app->view_dispatcher, FlipBipViewIdSettings);
+        }
     }
     }
-    memzero(app->input, TEXT_BUFFER_SIZE);
 
 
-    view_dispatcher_switch_to_view(app->view_dispatcher, FlipBipViewIdSettings);
+    // clear input text
+    memzero(app->input_text, TEXT_BUFFER_SIZE);
+    // reset input state
+    app->input_state = FlipBipTextInputDefault;
 }
 }
 
 
 FlipBip* flipbip_app_alloc() {
 FlipBip* flipbip_app_alloc() {
@@ -62,6 +68,7 @@ FlipBip* flipbip_app_alloc() {
     app->bip39_strength = FlipBipStrength256; // 256 bits (24 words)
     app->bip39_strength = FlipBipStrength256; // 256 bits (24 words)
     app->bip44_coin = FlipBipCoinBTC0; // 0 (BTC)
     app->bip44_coin = FlipBipCoinBTC0; // 0 (BTC)
     app->overwrite_saved_seed = 0;
     app->overwrite_saved_seed = 0;
+    app->input_state = FlipBipTextInputDefault;
 
 
     view_dispatcher_add_view(
     view_dispatcher_add_view(
         app->view_dispatcher, FlipBipViewIdMenu, submenu_get_view(app->submenu));
         app->view_dispatcher, FlipBipViewIdMenu, submenu_get_view(app->submenu));
@@ -84,7 +91,7 @@ FlipBip* flipbip_app_alloc() {
         app->text_input,
         app->text_input,
         text_input_callback,
         text_input_callback,
         (void*)app,
         (void*)app,
-        app->input,
+        app->input_text,
         TEXT_BUFFER_SIZE,
         TEXT_BUFFER_SIZE,
         //clear default text
         //clear default text
         true);
         true);

+ 10 - 3
flipbip.h

@@ -31,16 +31,17 @@ typedef struct {
     SceneManager* scene_manager;
     SceneManager* scene_manager;
     VariableItemList* variable_item_list;
     VariableItemList* variable_item_list;
     TextInput* text_input;
     TextInput* text_input;
-    char input[TEXT_BUFFER_SIZE];
     FlipBipStartscreen* flipbip_startscreen;
     FlipBipStartscreen* flipbip_startscreen;
     FlipBipScene1* flipbip_scene_1;
     FlipBipScene1* flipbip_scene_1;
     int haptic;
     int haptic;
     int led;
     int led;
     int passphrase;
     int passphrase;
-    char passphrase_text[TEXT_BUFFER_SIZE];
     int bip39_strength;
     int bip39_strength;
     int bip44_coin;
     int bip44_coin;
     int overwrite_saved_seed;
     int overwrite_saved_seed;
+    int input_state;
+    char passphrase_text[TEXT_BUFFER_SIZE];
+    char input_text[TEXT_BUFFER_SIZE];
 } FlipBip;
 } FlipBip;
 
 
 typedef enum {
 typedef enum {
@@ -76,4 +77,10 @@ typedef enum {
     FlipBipCoinBTC0,
     FlipBipCoinBTC0,
     FlipBipCoinETH60,
     FlipBipCoinETH60,
     FlipBipCoinDOGE3,
     FlipBipCoinDOGE3,
-} FlipBipCoin;
+} FlipBipCoin;
+
+typedef enum {
+    FlipBipTextInputDefault,
+    FlipBipTextInputPassphrase,
+    FlipBipTextInputMnemonic
+} FlipBipTextInputState;

+ 4 - 7
scenes/flipbip_scene_settings.c

@@ -1,13 +1,7 @@
 #include "../flipbip.h"
 #include "../flipbip.h"
+#include "../crypto/memzero.h"
 #include <lib/toolbox/value_index.h>
 #include <lib/toolbox/value_index.h>
 
 
-// enum SettingsIndex {
-//     SettingsIndexBip39Strength = 10,
-//     SettingsIndexBip44Coin,
-//     SettingsIndexHaptic,
-//     SettingsIndexValue1,
-// };
-
 const char* const haptic_text[2] = {
 const char* const haptic_text[2] = {
     "OFF",
     "OFF",
     "ON",
     "ON",
@@ -74,7 +68,10 @@ static void flipbip_scene_settings_set_passphrase(VariableItem* item) {
     app->passphrase = passphrase_value[index];
     app->passphrase = passphrase_value[index];
 
 
     if(app->passphrase == FlipBipPassphraseOn) {
     if(app->passphrase == FlipBipPassphraseOn) {
+        app->input_state = FlipBipTextInputPassphrase;
         view_dispatcher_switch_to_view(app->view_dispatcher, FlipBipViewIdTextInput);
         view_dispatcher_switch_to_view(app->view_dispatcher, FlipBipViewIdTextInput);
+    } else {
+        memzero(app->passphrase_text, TEXT_BUFFER_SIZE);
     }
     }
 }
 }