free.c 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. #include <alloc/free.h>
  2. void free_all(bool should_free_variable_item_list, bool should_free_submenu)
  3. {
  4. free_text_input();
  5. flip_social_free_friends();
  6. flip_social_free_messages();
  7. flip_social_free_explore();
  8. flip_social_free_feed_dialog();
  9. flip_social_free_compose_dialog();
  10. flip_social_free_explore_dialog();
  11. flip_social_free_friends_dialog();
  12. flip_social_free_messages_dialog();
  13. flip_feed_info_free();
  14. free_pre_saved_messages();
  15. free_about_widget(true);
  16. free_about_widget(false);
  17. if (should_free_variable_item_list)
  18. free_variable_item_list();
  19. if (should_free_submenu)
  20. free_submenu();
  21. }
  22. void free_text_input()
  23. {
  24. if (app_instance->text_input)
  25. {
  26. uart_text_input_free(app_instance->text_input);
  27. app_instance->text_input = NULL;
  28. view_dispatcher_remove_view(app_instance->view_dispatcher, FlipSocialViewTextInput);
  29. }
  30. }
  31. void flip_social_free_explore_dialog()
  32. {
  33. if (app_instance->dialog_explore)
  34. {
  35. dialog_ex_free(app_instance->dialog_explore);
  36. app_instance->dialog_explore = NULL;
  37. view_dispatcher_remove_view(app_instance->view_dispatcher, FlipSocialViewExploreDialog);
  38. }
  39. }
  40. void flip_social_free_friends_dialog()
  41. {
  42. if (app_instance->dialog_friends)
  43. {
  44. dialog_ex_free(app_instance->dialog_friends);
  45. app_instance->dialog_friends = NULL;
  46. view_dispatcher_remove_view(app_instance->view_dispatcher, FlipSocialViewFriendsDialog);
  47. }
  48. }
  49. void flip_social_free_messages_dialog()
  50. {
  51. if (app_instance->dialog_messages)
  52. {
  53. dialog_ex_free(app_instance->dialog_messages);
  54. app_instance->dialog_messages = NULL;
  55. view_dispatcher_remove_view(app_instance->view_dispatcher, FlipSocialViewMessagesDialog);
  56. return;
  57. }
  58. }
  59. void flip_social_free_compose_dialog()
  60. {
  61. if (app_instance->dialog_compose)
  62. {
  63. dialog_ex_free(app_instance->dialog_compose);
  64. app_instance->dialog_compose = NULL;
  65. view_dispatcher_remove_view(app_instance->view_dispatcher, FlipSocialViewComposeDialog);
  66. }
  67. }
  68. void flip_social_free_feed_dialog()
  69. {
  70. if (app_instance->dialog_feed)
  71. {
  72. dialog_ex_free(app_instance->dialog_feed);
  73. app_instance->dialog_feed = NULL;
  74. view_dispatcher_remove_view(app_instance->view_dispatcher, FlipSocialViewFeedDialog);
  75. }
  76. }
  77. void free_about_widget(bool is_logged_in)
  78. {
  79. if (is_logged_in && app_instance->widget_logged_in_about)
  80. {
  81. widget_free(app_instance->widget_logged_in_about);
  82. app_instance->widget_logged_in_about = NULL;
  83. view_dispatcher_remove_view(app_instance->view_dispatcher, FlipSocialViewLoggedInSettingsAbout);
  84. }
  85. if (!is_logged_in && app_instance->widget_logged_out_about)
  86. {
  87. widget_free(app_instance->widget_logged_out_about);
  88. app_instance->widget_logged_out_about = NULL;
  89. view_dispatcher_remove_view(app_instance->view_dispatcher, FlipSocialViewLoggedOutAbout);
  90. }
  91. }
  92. void free_pre_saved_messages(void)
  93. {
  94. if (app_instance->submenu_compose)
  95. {
  96. submenu_free(app_instance->submenu_compose);
  97. app_instance->submenu_compose = NULL;
  98. view_dispatcher_remove_view(app_instance->view_dispatcher, FlipSocialViewLoggedInCompose);
  99. }
  100. }
  101. void flip_social_free_friends(void)
  102. {
  103. if (!flip_social_friends)
  104. {
  105. return;
  106. }
  107. free(flip_social_friends);
  108. flip_social_friends = NULL;
  109. if (app_instance->submenu_friends)
  110. {
  111. submenu_free(app_instance->submenu_friends);
  112. app_instance->submenu_friends = NULL;
  113. view_dispatcher_remove_view(app_instance->view_dispatcher, FlipSocialViewLoggedInFriendsSubmenu);
  114. }
  115. }
  116. void flip_feed_info_free(void)
  117. {
  118. if (!flip_feed_info)
  119. {
  120. return;
  121. }
  122. free(flip_feed_info);
  123. flip_feed_info = NULL;
  124. }
  125. void free_variable_item_list(void)
  126. {
  127. if (app_instance->variable_item_list)
  128. {
  129. variable_item_list_free(app_instance->variable_item_list);
  130. app_instance->variable_item_list = NULL;
  131. view_dispatcher_remove_view(app_instance->view_dispatcher, FlipSocialViewVariableItemList);
  132. }
  133. }
  134. void free_submenu(void)
  135. {
  136. if (!app_instance)
  137. {
  138. return;
  139. }
  140. if (app_instance->submenu)
  141. {
  142. submenu_free(app_instance->submenu);
  143. app_instance->submenu = NULL;
  144. view_dispatcher_remove_view(app_instance->view_dispatcher, FlipSocialViewSubmenu);
  145. }
  146. }