alloc.c 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442
  1. #include <alloc/alloc.h>
  2. void auth_headers_alloc(void)
  3. {
  4. if (!app_instance)
  5. {
  6. snprintf(auth_headers, sizeof(auth_headers), "{\"Content-Type\":\"application/json\"}");
  7. return;
  8. }
  9. if (app_instance->login_username_logged_out && app_instance->login_password_logged_out && strlen(app_instance->login_username_logged_out) > 0 && strlen(app_instance->login_password_logged_out) > 0)
  10. {
  11. snprintf(auth_headers, sizeof(auth_headers), "{\"Content-Type\":\"application/json\",\"username\":\"%s\",\"password\":\"%s\"}", app_instance->login_username_logged_out, app_instance->login_password_logged_out);
  12. }
  13. else if (app_instance->login_username_logged_in && app_instance->change_password_logged_in && strlen(app_instance->login_username_logged_in) > 0 && strlen(app_instance->change_password_logged_in) > 0)
  14. {
  15. snprintf(auth_headers, sizeof(auth_headers), "{\"Content-Type\":\"application/json\",\"username\":\"%s\",\"password\":\"%s\"}", app_instance->login_username_logged_in, app_instance->change_password_logged_in);
  16. }
  17. else
  18. {
  19. snprintf(auth_headers, sizeof(auth_headers), "{\"Content-Type\":\"application/json\"}");
  20. }
  21. }
  22. FlipSocialFeedMini *flip_feed_info_alloc(void)
  23. {
  24. FlipSocialFeedMini *feed_info = (FlipSocialFeedMini *)malloc(sizeof(FlipSocialFeedMini));
  25. if (!feed_info)
  26. {
  27. FURI_LOG_E(TAG, "Failed to allocate memory for feed_info");
  28. return NULL;
  29. }
  30. feed_info->count = 0;
  31. feed_info->index = 0;
  32. return feed_info;
  33. }
  34. bool messages_dialog_alloc(bool free_first)
  35. {
  36. if (free_first)
  37. {
  38. flip_social_free_messages_dialog();
  39. }
  40. if (!app_instance->dialog_messages)
  41. {
  42. if (!easy_flipper_set_dialog_ex(
  43. &app_instance->dialog_messages,
  44. FlipSocialViewMessagesDialog,
  45. flip_social_messages->usernames[flip_social_messages->index],
  46. 0,
  47. 0,
  48. flip_social_messages->messages[flip_social_messages->index],
  49. 0,
  50. 10,
  51. flip_social_messages->index != 0 ? "Prev" : NULL,
  52. flip_social_messages->index != flip_social_messages->count - 1 ? "Next" : NULL,
  53. "Create",
  54. messages_dialog_callback,
  55. flip_social_callback_to_messages_logged_in,
  56. &app_instance->view_dispatcher,
  57. app_instance))
  58. {
  59. return false;
  60. }
  61. return true;
  62. }
  63. return false;
  64. }
  65. static char *updated_user_message(const char *user_message)
  66. {
  67. if (user_message == NULL)
  68. {
  69. FURI_LOG_E(TAG, "User message is NULL.");
  70. return NULL;
  71. }
  72. size_t msg_length = strlen(user_message);
  73. size_t start = 0;
  74. int line_num = 0;
  75. // Allocate memory for the updated message
  76. char *updated_message = malloc(MAX_MESSAGE_LENGTH + 10);
  77. if (updated_message == NULL)
  78. {
  79. FURI_LOG_E(TAG, "Failed to allocate memory for updated_message.");
  80. return NULL;
  81. }
  82. size_t current_pos = 0; // Tracks the current position in updated_message
  83. updated_message[0] = '\0'; // Initialize as empty string
  84. while (start < msg_length && line_num < 4)
  85. {
  86. size_t remaining = msg_length - start;
  87. size_t len = (remaining > MAX_LINE_LENGTH) ? MAX_LINE_LENGTH : remaining;
  88. // Adjust length to the last space if the line exceeds MAX_LINE_LENGTH
  89. if (remaining > MAX_LINE_LENGTH)
  90. {
  91. size_t last_space = len;
  92. while (last_space > 0 && user_message[start + last_space - 1] != ' ')
  93. {
  94. last_space--;
  95. }
  96. if (last_space > 0)
  97. {
  98. len = last_space; // Adjust len to the position of the last space
  99. }
  100. }
  101. // Check if the new line fits in the updated_message buffer
  102. if (current_pos + len + 1 >= (MAX_MESSAGE_LENGTH + 10))
  103. {
  104. FURI_LOG_E(TAG, "Updated message exceeds maximum length.");
  105. // break and return what we have so far
  106. break;
  107. }
  108. // Copy the line and append a newline character
  109. memcpy(updated_message + current_pos, user_message + start, len);
  110. current_pos += len;
  111. updated_message[current_pos++] = '\n'; // Append newline
  112. // Update the start position for the next line
  113. start += len;
  114. // Skip any spaces to avoid leading spaces on the next line
  115. while (start < msg_length && user_message[start] == ' ')
  116. {
  117. start++;
  118. }
  119. // Increment the line number
  120. line_num++;
  121. }
  122. // Null-terminate the final string
  123. if (current_pos < (MAX_MESSAGE_LENGTH + 10))
  124. {
  125. updated_message[current_pos] = '\0';
  126. }
  127. else
  128. {
  129. FURI_LOG_E(TAG, "Buffer overflow while null-terminating.");
  130. free(updated_message);
  131. return NULL;
  132. }
  133. return updated_message;
  134. }
  135. bool feed_dialog_alloc()
  136. {
  137. if (!flip_feed_item)
  138. {
  139. FURI_LOG_E(TAG, "Feed item is NULL");
  140. return false;
  141. }
  142. flip_social_free_feed_dialog();
  143. if (!app_instance->dialog_feed)
  144. {
  145. char updated_message[MAX_MESSAGE_LENGTH + 10];
  146. snprintf(updated_message, MAX_MESSAGE_LENGTH + 10, "%s (%u %s)", flip_feed_item->message, flip_feed_item->flips, flip_feed_item->flips == 1 ? "flip" : "flips");
  147. char *real_message = updated_user_message(updated_message);
  148. if (!real_message)
  149. {
  150. FURI_LOG_E(TAG, "Failed to update the user message");
  151. return false;
  152. }
  153. if (!easy_flipper_set_dialog_ex(
  154. &app_instance->dialog_feed,
  155. FlipSocialViewFeedDialog,
  156. flip_feed_item->username,
  157. 0,
  158. 0,
  159. updated_message,
  160. 0,
  161. 10,
  162. flip_feed_info->index != 0 ? "Prev" : NULL,
  163. flip_feed_info->index != flip_feed_info->count - 1 ? "Next" : NULL,
  164. flip_feed_item->is_flipped ? "Unflip" : "Flip",
  165. feed_dialog_callback,
  166. flip_social_callback_to_submenu_logged_in,
  167. &app_instance->view_dispatcher,
  168. app_instance))
  169. {
  170. free(real_message);
  171. return false;
  172. }
  173. free(real_message);
  174. return true;
  175. }
  176. return false;
  177. }
  178. bool alloc_text_input(uint32_t view_id)
  179. {
  180. if (!app_instance)
  181. {
  182. return false;
  183. }
  184. if (!app_instance->text_input)
  185. {
  186. switch (view_id)
  187. {
  188. case FlipSocialViewLoggedOutWifiSettingsSSIDInput:
  189. if (!easy_flipper_set_uart_text_input(&app_instance->text_input, FlipSocialViewTextInput, "Enter SSID", app_instance->wifi_ssid_logged_out_temp_buffer, app_instance->wifi_ssid_logged_out_temp_buffer_size, flip_social_logged_out_wifi_settings_ssid_updated, flip_social_callback_to_wifi_settings_logged_out, &app_instance->view_dispatcher, app_instance))
  190. {
  191. return false;
  192. }
  193. break;
  194. case FlipSocialViewLoggedOutWifiSettingsPasswordInput:
  195. if (!easy_flipper_set_uart_text_input(&app_instance->text_input, FlipSocialViewTextInput, "Enter Password", app_instance->wifi_password_logged_out_temp_buffer, app_instance->wifi_password_logged_out_temp_buffer_size, flip_social_logged_out_wifi_settings_password_updated, flip_social_callback_to_wifi_settings_logged_out, &app_instance->view_dispatcher, app_instance))
  196. {
  197. return false;
  198. }
  199. break;
  200. case FlipSocialViewLoggedOutLoginUsernameInput:
  201. if (!easy_flipper_set_uart_text_input(&app_instance->text_input, FlipSocialViewTextInput, "Enter Username", app_instance->login_username_logged_out_temp_buffer, app_instance->login_username_logged_out_temp_buffer_size, flip_social_logged_out_login_username_updated, flip_social_callback_to_login_logged_out, &app_instance->view_dispatcher, app_instance))
  202. {
  203. return false;
  204. }
  205. break;
  206. case FlipSocialViewLoggedOutLoginPasswordInput:
  207. if (!easy_flipper_set_uart_text_input(&app_instance->text_input, FlipSocialViewTextInput, "Enter Password", app_instance->login_password_logged_out_temp_buffer, app_instance->login_password_logged_out_temp_buffer_size, flip_social_logged_out_login_password_updated, flip_social_callback_to_login_logged_out, &app_instance->view_dispatcher, app_instance))
  208. {
  209. return false;
  210. }
  211. break;
  212. case FlipSocialViewLoggedOutRegisterUsernameInput:
  213. if (!easy_flipper_set_uart_text_input(&app_instance->text_input, FlipSocialViewTextInput, "Enter Username", app_instance->register_username_logged_out_temp_buffer, app_instance->register_username_logged_out_temp_buffer_size, flip_social_logged_out_register_username_updated, flip_social_callback_to_register_logged_out, &app_instance->view_dispatcher, app_instance))
  214. {
  215. return false;
  216. }
  217. break;
  218. case FlipSocialViewLoggedOutRegisterPasswordInput:
  219. if (!easy_flipper_set_uart_text_input(&app_instance->text_input, FlipSocialViewTextInput, "Enter Password", app_instance->register_password_logged_out_temp_buffer, app_instance->register_password_logged_out_temp_buffer_size, flip_social_logged_out_register_password_updated, flip_social_callback_to_register_logged_out, &app_instance->view_dispatcher, app_instance))
  220. {
  221. return false;
  222. }
  223. break;
  224. case FlipSocialViewLoggedOutRegisterPassword2Input:
  225. if (!easy_flipper_set_uart_text_input(&app_instance->text_input, FlipSocialViewTextInput, "Confirm Password", app_instance->register_password_2_logged_out_temp_buffer, app_instance->register_password_2_logged_out_temp_buffer_size, flip_social_logged_out_register_password_2_updated, flip_social_callback_to_register_logged_out, &app_instance->view_dispatcher, app_instance))
  226. {
  227. return false;
  228. }
  229. break;
  230. case FlipSocialViewLoggedInChangePasswordInput:
  231. if (!easy_flipper_set_uart_text_input(&app_instance->text_input, FlipSocialViewTextInput, "Change Password", app_instance->change_password_logged_in_temp_buffer, app_instance->change_password_logged_in_temp_buffer_size, flip_social_logged_in_profile_change_password_updated, flip_social_callback_to_profile_logged_in, &app_instance->view_dispatcher, app_instance))
  232. {
  233. return false;
  234. }
  235. break;
  236. case FlipSocialViewLoggedInChangeBioInput:
  237. if (!easy_flipper_set_uart_text_input(&app_instance->text_input, FlipSocialViewTextInput, "Bio", app_instance->change_bio_logged_in_temp_buffer, app_instance->change_bio_logged_in_temp_buffer_size, flip_social_logged_in_profile_change_bio_updated, flip_social_callback_to_profile_logged_in, &app_instance->view_dispatcher, app_instance))
  238. {
  239. return false;
  240. }
  241. break;
  242. case FlipSocialViewLoggedInComposeAddPreSaveInput:
  243. if (!easy_flipper_set_uart_text_input(&app_instance->text_input, FlipSocialViewTextInput, "Enter Pre-Save Message", app_instance->compose_pre_save_logged_in_temp_buffer, app_instance->compose_pre_save_logged_in_temp_buffer_size, flip_social_logged_in_compose_pre_save_updated, flip_social_callback_to_compose_logged_in, &app_instance->view_dispatcher, app_instance))
  244. {
  245. return false;
  246. }
  247. break;
  248. case FlipSocialViewLoggedInWifiSettingsSSIDInput:
  249. if (!easy_flipper_set_uart_text_input(&app_instance->text_input, FlipSocialViewTextInput, "Enter SSID", app_instance->wifi_ssid_logged_in_temp_buffer, app_instance->wifi_ssid_logged_in_temp_buffer_size, flip_social_logged_in_wifi_settings_ssid_updated, flip_social_callback_to_wifi_settings_logged_in, &app_instance->view_dispatcher, app_instance))
  250. {
  251. return false;
  252. }
  253. break;
  254. case FlipSocialViewLoggedInWifiSettingsPasswordInput:
  255. if (!easy_flipper_set_uart_text_input(&app_instance->text_input, FlipSocialViewTextInput, "Enter Password", app_instance->wifi_password_logged_in_temp_buffer, app_instance->wifi_password_logged_in_temp_buffer_size, flip_social_logged_in_wifi_settings_password_updated, flip_social_callback_to_wifi_settings_logged_in, &app_instance->view_dispatcher, app_instance))
  256. {
  257. return false;
  258. }
  259. break;
  260. case FlipSocialViewLoggedInMessagesNewMessageInput:
  261. if (!easy_flipper_set_uart_text_input(&app_instance->text_input, FlipSocialViewTextInput, "Enter Message", app_instance->messages_new_message_logged_in_temp_buffer, app_instance->messages_new_message_logged_in_temp_buffer_size, flip_social_logged_in_messages_new_message_updated, flip_social_callback_to_messages_logged_in, &app_instance->view_dispatcher, app_instance))
  262. {
  263. return false;
  264. }
  265. break;
  266. case FlipSocialViewLoggedInMessagesNewMessageUserChoicesInput:
  267. if (!easy_flipper_set_uart_text_input(&app_instance->text_input, FlipSocialViewTextInput, "Enter Message", app_instance->message_user_choice_logged_in_temp_buffer, app_instance->message_user_choice_logged_in_temp_buffer_size, flip_social_logged_in_messages_user_choice_message_updated, flip_social_callback_to_messages_user_choices, &app_instance->view_dispatcher, app_instance))
  268. {
  269. return false;
  270. }
  271. break;
  272. case FlipSocialViewLoggedInExploreInput:
  273. if (!easy_flipper_set_uart_text_input(&app_instance->text_input, FlipSocialViewTextInput, "Enter Username or Keyword", app_instance->explore_logged_in_temp_buffer, app_instance->explore_logged_in_temp_buffer_size, flip_social_logged_in_explore_updated, flip_social_callback_to_submenu_logged_in, &app_instance->view_dispatcher, app_instance))
  274. {
  275. return false;
  276. }
  277. break;
  278. case FlipSocialViewLoggedInMessageUsersInput:
  279. if (!easy_flipper_set_uart_text_input(&app_instance->text_input, FlipSocialViewTextInput, "Enter Username or Keyword", app_instance->message_users_logged_in_temp_buffer, app_instance->message_users_logged_in_temp_buffer_size, flip_social_logged_in_message_users_updated, flip_social_callback_to_submenu_logged_in, &app_instance->view_dispatcher, app_instance))
  280. {
  281. return false;
  282. }
  283. break;
  284. }
  285. }
  286. return true;
  287. }
  288. bool about_widget_alloc(bool is_logged_in)
  289. {
  290. if (!is_logged_in)
  291. {
  292. if (!app_instance->widget_logged_out_about)
  293. {
  294. return easy_flipper_set_widget(&app_instance->widget_logged_out_about, FlipSocialViewLoggedOutAbout, "Welcome to FlipSocial\n---\nThe social media app for\nFlipper Zero, created by\nJBlanked: www.flipsocial.net\n---\nPress BACK to return.", flip_social_callback_to_submenu_logged_out, &app_instance->view_dispatcher);
  295. }
  296. }
  297. else
  298. {
  299. if (!app_instance->widget_logged_in_about)
  300. {
  301. return easy_flipper_set_widget(&app_instance->widget_logged_in_about, FlipSocialViewLoggedInSettingsAbout, "Welcome to FlipSocial\n---\nThe social media app for\nFlipper Zero, created by\nJBlanked: www.flipsocial.net\n---\nPress BACK to return.", flip_social_callback_to_settings_logged_in, &app_instance->view_dispatcher);
  302. }
  303. }
  304. return true;
  305. }
  306. bool pre_saved_messages_alloc(void)
  307. {
  308. if (!app_instance)
  309. {
  310. return false;
  311. }
  312. if (!app_instance->submenu_compose)
  313. {
  314. if (!easy_flipper_set_submenu(&app_instance->submenu_compose, FlipSocialViewLoggedInCompose, "Create A Post", flip_social_callback_to_submenu_logged_in, &app_instance->view_dispatcher))
  315. {
  316. return false;
  317. }
  318. submenu_reset(app_instance->submenu_compose);
  319. submenu_add_item(app_instance->submenu_compose, "Add Pre-Save", FlipSocialSubmenuComposeIndexAddPreSave, flip_social_callback_submenu_choices, app_instance);
  320. // Load the playlist
  321. if (load_playlist(&app_instance->pre_saved_messages))
  322. {
  323. // Update the playlist submenu
  324. for (uint32_t i = 0; i < app_instance->pre_saved_messages.count; i++)
  325. {
  326. if (app_instance->pre_saved_messages.messages[i][0] != '\0') // Check if the string is not empty
  327. {
  328. submenu_add_item(app_instance->submenu_compose, app_instance->pre_saved_messages.messages[i], FlipSocialSubemnuComposeIndexStartIndex + i, flip_social_callback_submenu_choices, app_instance);
  329. }
  330. }
  331. }
  332. }
  333. return true;
  334. }
  335. bool alloc_submenu(uint32_t view_id)
  336. {
  337. if (!app_instance)
  338. {
  339. return false;
  340. }
  341. if (!app_instance->submenu)
  342. {
  343. switch (view_id)
  344. {
  345. case FlipSocialViewLoggedInSettings:
  346. if (!easy_flipper_set_submenu(&app_instance->submenu, FlipSocialViewSubmenu, "Settings", flip_social_callback_to_submenu_logged_in, &app_instance->view_dispatcher))
  347. {
  348. return false;
  349. }
  350. submenu_reset(app_instance->submenu);
  351. submenu_add_item(app_instance->submenu, "About", FlipSocialSubmenuLoggedInIndexAbout, flip_social_callback_submenu_choices, app_instance);
  352. submenu_add_item(app_instance->submenu, "WiFi", FlipSocialSubmenuLoggedInIndexWifiSettings, flip_social_callback_submenu_choices, app_instance);
  353. break;
  354. }
  355. }
  356. return true;
  357. }
  358. bool alloc_variable_item_list(uint32_t view_id)
  359. {
  360. if (!app_instance)
  361. {
  362. return false;
  363. }
  364. switch (view_id)
  365. {
  366. case FlipSocialViewLoggedOutWifiSettings:
  367. if (!easy_flipper_set_variable_item_list(&app_instance->variable_item_list, FlipSocialViewVariableItemList, flip_social_text_input_logged_out_wifi_settings_item_selected, flip_social_callback_to_submenu_logged_out, &app_instance->view_dispatcher, app_instance))
  368. {
  369. return false;
  370. }
  371. app_instance->variable_item_logged_out_wifi_settings_ssid = variable_item_list_add(app_instance->variable_item_list, "SSID", 1, NULL, app_instance);
  372. app_instance->variable_item_logged_out_wifi_settings_password = variable_item_list_add(app_instance->variable_item_list, "Password", 1, NULL, app_instance);
  373. if (app_instance->wifi_ssid_logged_out)
  374. variable_item_set_current_value_text(app_instance->variable_item_logged_out_wifi_settings_ssid, app_instance->wifi_ssid_logged_out);
  375. return true;
  376. case FlipSocialViewLoggedOutLogin:
  377. if (!easy_flipper_set_variable_item_list(&app_instance->variable_item_list, FlipSocialViewVariableItemList, flip_social_text_input_logged_out_login_item_selected, flip_social_callback_to_submenu_logged_out, &app_instance->view_dispatcher, app_instance))
  378. {
  379. return false;
  380. }
  381. app_instance->variable_item_logged_out_login_username = variable_item_list_add(app_instance->variable_item_list, "Username", 1, NULL, app_instance);
  382. app_instance->variable_item_logged_out_login_password = variable_item_list_add(app_instance->variable_item_list, "Password", 1, NULL, app_instance);
  383. app_instance->variable_item_logged_out_login_button = variable_item_list_add(app_instance->variable_item_list, "Login", 0, NULL, app_instance);
  384. if (app_instance->login_username_logged_out)
  385. variable_item_set_current_value_text(app_instance->variable_item_logged_out_login_username, app_instance->login_username_logged_out);
  386. return true;
  387. case FlipSocialViewLoggedOutRegister:
  388. if (!easy_flipper_set_variable_item_list(&app_instance->variable_item_list, FlipSocialViewVariableItemList, flip_social_text_input_logged_out_register_item_selected, flip_social_callback_to_submenu_logged_out, &app_instance->view_dispatcher, app_instance))
  389. {
  390. return false;
  391. }
  392. app_instance->variable_item_logged_out_register_username = variable_item_list_add(app_instance->variable_item_list, "Username", 1, NULL, app_instance);
  393. app_instance->variable_item_logged_out_register_password = variable_item_list_add(app_instance->variable_item_list, "Password", 1, NULL, app_instance);
  394. app_instance->variable_item_logged_out_register_password_2 = variable_item_list_add(app_instance->variable_item_list, "Confirm Password", 1, NULL, app_instance);
  395. app_instance->variable_item_logged_out_register_button = variable_item_list_add(app_instance->variable_item_list, "Register", 0, NULL, app_instance);
  396. return true;
  397. case FlipSocialViewLoggedInProfile:
  398. if (!easy_flipper_set_variable_item_list(&app_instance->variable_item_list, FlipSocialViewVariableItemList, flip_social_text_input_logged_in_profile_item_selected, flip_social_callback_to_submenu_logged_in, &app_instance->view_dispatcher, app_instance))
  399. {
  400. return false;
  401. }
  402. app_instance->variable_item_logged_in_profile_username = variable_item_list_add(app_instance->variable_item_list, "Username", 1, NULL, app_instance);
  403. app_instance->variable_item_logged_in_profile_change_password = variable_item_list_add(app_instance->variable_item_list, "Password", 1, NULL, app_instance);
  404. app_instance->variable_item_logged_in_profile_change_bio = variable_item_list_add(app_instance->variable_item_list, "Bio", 1, NULL, app_instance);
  405. app_instance->variable_item_logged_in_profile_friends = variable_item_list_add(app_instance->variable_item_list, "Friends", 0, NULL, app_instance);
  406. if (app_instance->login_username_logged_in)
  407. variable_item_set_current_value_text(app_instance->variable_item_logged_in_profile_username, app_instance->login_username_logged_in);
  408. if (app_instance->change_bio_logged_in)
  409. variable_item_set_current_value_text(app_instance->variable_item_logged_in_profile_change_bio, app_instance->change_bio_logged_in);
  410. return true;
  411. case FlipSocialViewLoggedInSettingsWifi:
  412. if (!easy_flipper_set_variable_item_list(&app_instance->variable_item_list, FlipSocialViewVariableItemList, flip_social_text_input_logged_in_wifi_settings_item_selected, flip_social_callback_to_settings_logged_in, &app_instance->view_dispatcher, app_instance))
  413. {
  414. return false;
  415. }
  416. app_instance->variable_item_logged_in_wifi_settings_ssid = variable_item_list_add(app_instance->variable_item_list, "SSID", 1, NULL, app_instance);
  417. app_instance->variable_item_logged_in_wifi_settings_password = variable_item_list_add(app_instance->variable_item_list, "Password", 1, NULL, app_instance);
  418. if (app_instance->wifi_ssid_logged_in)
  419. variable_item_set_current_value_text(app_instance->variable_item_logged_in_wifi_settings_ssid, app_instance->wifi_ssid_logged_in);
  420. return true;
  421. }
  422. return false;
  423. }