浏览代码

Fix several edge cases

zinongli 11 月之前
父节点
当前提交
e579e30056

+ 0 - 1
scenes/metroflip_scene_load.c

@@ -42,7 +42,6 @@ void metroflip_scene_load_on_enter(void* context) {
         scene_manager_next_scene(app->scene_manager, MetroflipSceneStart);
     }
     furi_string_free(file_path);
-    furi_string_free(card_type);
     furi_record_close(RECORD_STORAGE);
 }
 

+ 1 - 0
scenes/metroflip_scene_parse.c

@@ -64,4 +64,5 @@ void metroflip_scene_parse_on_exit(void* context) {
         composite_api_resolver_free(app->resolver);
     }
     app->card_type = "unknown";
+    app->data_loaded = false;
 }

+ 1 - 1
scenes/plugins/bip.c

@@ -385,7 +385,7 @@ static bool bip_on_event(Metroflip* app, SceneManagerEvent event) {
 static void bip_on_exit(Metroflip* app) {
     widget_reset(app->widget);
 
-    if(app->poller) {
+    if(app->poller && !app->data_loaded) {
         nfc_poller_stop(app->poller);
         nfc_poller_free(app->poller);
     }

+ 1 - 1
scenes/plugins/calypso.c

@@ -2484,7 +2484,7 @@ static bool calypso_on_event(Metroflip* app, SceneManagerEvent event) {
 }
 
 static void calypso_on_exit(Metroflip* app) {
-    if(app->poller) {
+    if(app->poller && !app->data_loaded) {
         nfc_poller_stop(app->poller);
         nfc_poller_free(app->poller);
     }

+ 1 - 1
scenes/plugins/charliecard.c

@@ -1298,7 +1298,7 @@ static bool charliecard_on_event(Metroflip* app, SceneManagerEvent event) {
 static void charliecard_on_exit(Metroflip* app) {
     widget_reset(app->widget);
 
-    if(app->poller) {
+    if(app->poller && !app->data_loaded) {
         nfc_poller_stop(app->poller);
         nfc_poller_free(app->poller);
     }

+ 1 - 1
scenes/plugins/clipper.c

@@ -651,7 +651,7 @@ static void clipper_on_exit(Metroflip* app) {
     widget_reset(app->widget);
     metroflip_app_blink_stop(app);
 
-    if(app->poller) {
+    if(app->poller && !app->data_loaded) {
         nfc_poller_stop(app->poller);
         nfc_poller_free(app->poller);
     }

+ 1 - 1
scenes/plugins/itso.c

@@ -197,7 +197,7 @@ static bool itso_on_event(Metroflip* app, SceneManagerEvent event) {
 static void itso_on_exit(Metroflip* app) {
     widget_reset(app->widget);
     metroflip_app_blink_stop(app);
-    if(app->poller) {
+    if(app->poller && !app->data_loaded) {
         nfc_poller_stop(app->poller);
         nfc_poller_free(app->poller);
     }

+ 1 - 1
scenes/plugins/metromoney.c

@@ -188,7 +188,7 @@ static bool metromoney_on_event(Metroflip* app, SceneManagerEvent event) {
 static void metromoney_on_exit(Metroflip* app) {
     widget_reset(app->widget);
 
-    if(app->poller) {
+    if(app->poller && !app->data_loaded) {
         nfc_poller_stop(app->poller);
         nfc_poller_free(app->poller);
     }

+ 1 - 1
scenes/plugins/myki.c

@@ -180,7 +180,7 @@ static bool myki_on_event(Metroflip* app, SceneManagerEvent event) {
 static void myki_on_exit(Metroflip* app) {
     widget_reset(app->widget);
     metroflip_app_blink_stop(app);
-    if(app->poller) {
+    if(app->poller && !app->data_loaded) {
         nfc_poller_stop(app->poller);
         nfc_poller_free(app->poller);
     }

+ 1 - 1
scenes/plugins/opal.c

@@ -301,7 +301,7 @@ static bool opal_on_event(Metroflip* app, SceneManagerEvent event) {
 static void opal_on_exit(Metroflip* app) {
     widget_reset(app->widget);
     metroflip_app_blink_stop(app);
-    if(app->poller) {
+    if(app->poller && !app->data_loaded) {
         nfc_poller_stop(app->poller);
         nfc_poller_free(app->poller);
     }

+ 1 - 1
scenes/plugins/smartrider.c

@@ -384,7 +384,7 @@ static bool smartrider_on_event(Metroflip* app, SceneManagerEvent event) {
 static void smartrider_on_exit(Metroflip* app) {
     widget_reset(app->widget);
 
-    if(app->poller) {
+    if(app->poller && !app->data_loaded) {
         nfc_poller_stop(app->poller);
         nfc_poller_free(app->poller);
     }

+ 1 - 1
scenes/plugins/troika.c

@@ -285,7 +285,7 @@ static bool troika_on_event(Metroflip* app, SceneManagerEvent event) {
 static void troika_on_exit(Metroflip* app) {
     widget_reset(app->widget);
 
-    if(app->poller) {
+    if(app->poller && !app->data_loaded) {
         nfc_poller_stop(app->poller);
         nfc_poller_free(app->poller);
     }