flip_social_alloc.c 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940
  1. #include <alloc/flip_social_alloc.h>
  2. FlipSocialApp* flip_social_app_alloc() {
  3. // Initiailize the app
  4. FlipSocialApp* app = (FlipSocialApp*)malloc(sizeof(FlipSocialApp));
  5. // Initialize gui
  6. Gui* gui = furi_record_open(RECORD_GUI);
  7. // Initialize UART
  8. if(!flipper_http_init(flipper_http_rx_callback, app)) {
  9. FURI_LOG_E(TAG, "Failed to initialize UART");
  10. return NULL;
  11. }
  12. // Allocate ViewDispatcher
  13. if(!easy_flipper_set_view_dispatcher(&app->view_dispatcher, gui, app)) {
  14. return NULL;
  15. }
  16. // Allocate the text input buffers
  17. app->wifi_ssid_logged_out_temp_buffer_size = MAX_USER_LENGTH;
  18. app->wifi_password_logged_out_temp_buffer_size = MAX_USER_LENGTH;
  19. app->login_username_logged_out_temp_buffer_size = MAX_USER_LENGTH;
  20. app->login_password_logged_out_temp_buffer_size = MAX_USER_LENGTH;
  21. app->register_username_logged_out_temp_buffer_size = MAX_USER_LENGTH;
  22. app->register_password_logged_out_temp_buffer_size = MAX_USER_LENGTH;
  23. app->register_password_2_logged_out_temp_buffer_size = MAX_USER_LENGTH;
  24. app->change_password_logged_in_temp_buffer_size = MAX_USER_LENGTH;
  25. app->compose_pre_save_logged_in_temp_buffer_size = MAX_MESSAGE_LENGTH;
  26. app->wifi_ssid_logged_in_temp_buffer_size = MAX_USER_LENGTH;
  27. app->wifi_password_logged_in_temp_buffer_size = MAX_USER_LENGTH;
  28. app->is_logged_in_size = 8;
  29. app->login_username_logged_in_temp_buffer_size = MAX_USER_LENGTH;
  30. app->messages_new_message_logged_in_temp_buffer_size = MAX_MESSAGE_LENGTH;
  31. app->message_user_choice_logged_in_temp_buffer_size = MAX_MESSAGE_LENGTH;
  32. if(!easy_flipper_set_buffer(
  33. &app->wifi_ssid_logged_out_temp_buffer, app->wifi_ssid_logged_out_temp_buffer_size)) {
  34. return NULL;
  35. }
  36. if(!easy_flipper_set_buffer(
  37. &app->wifi_password_logged_out_temp_buffer,
  38. app->wifi_password_logged_out_temp_buffer_size)) {
  39. return NULL;
  40. }
  41. if(!easy_flipper_set_buffer(
  42. &app->login_username_logged_out_temp_buffer,
  43. app->login_username_logged_out_temp_buffer_size)) {
  44. return NULL;
  45. }
  46. if(!easy_flipper_set_buffer(
  47. &app->login_password_logged_out_temp_buffer,
  48. app->login_password_logged_out_temp_buffer_size)) {
  49. return NULL;
  50. }
  51. if(!easy_flipper_set_buffer(
  52. &app->register_username_logged_out_temp_buffer,
  53. app->register_username_logged_out_temp_buffer_size)) {
  54. return NULL;
  55. }
  56. if(!easy_flipper_set_buffer(
  57. &app->register_password_logged_out_temp_buffer,
  58. app->register_password_logged_out_temp_buffer_size)) {
  59. return NULL;
  60. }
  61. if(!easy_flipper_set_buffer(
  62. &app->register_password_2_logged_out_temp_buffer,
  63. app->register_password_2_logged_out_temp_buffer_size)) {
  64. return NULL;
  65. }
  66. if(!easy_flipper_set_buffer(
  67. &app->change_password_logged_in_temp_buffer,
  68. app->change_password_logged_in_temp_buffer_size)) {
  69. return NULL;
  70. }
  71. if(!easy_flipper_set_buffer(
  72. &app->compose_pre_save_logged_in_temp_buffer,
  73. app->compose_pre_save_logged_in_temp_buffer_size)) {
  74. return NULL;
  75. }
  76. if(!easy_flipper_set_buffer(
  77. &app->wifi_ssid_logged_in_temp_buffer, app->wifi_ssid_logged_in_temp_buffer_size)) {
  78. return NULL;
  79. }
  80. if(!easy_flipper_set_buffer(
  81. &app->wifi_password_logged_in_temp_buffer,
  82. app->wifi_password_logged_in_temp_buffer_size)) {
  83. return NULL;
  84. }
  85. if(!easy_flipper_set_buffer(&app->is_logged_in, app->is_logged_in_size)) {
  86. return NULL;
  87. }
  88. if(!easy_flipper_set_buffer(
  89. &app->login_username_logged_in_temp_buffer,
  90. app->login_username_logged_in_temp_buffer_size)) {
  91. return NULL;
  92. }
  93. if(!easy_flipper_set_buffer(
  94. &app->wifi_ssid_logged_out, app->wifi_ssid_logged_out_temp_buffer_size)) {
  95. return NULL;
  96. }
  97. if(!easy_flipper_set_buffer(
  98. &app->wifi_password_logged_out, app->wifi_password_logged_out_temp_buffer_size)) {
  99. return NULL;
  100. }
  101. if(!easy_flipper_set_buffer(
  102. &app->login_username_logged_out, app->login_username_logged_out_temp_buffer_size)) {
  103. return NULL;
  104. }
  105. if(!easy_flipper_set_buffer(
  106. &app->login_password_logged_out, app->login_password_logged_out_temp_buffer_size)) {
  107. return NULL;
  108. }
  109. if(!easy_flipper_set_buffer(
  110. &app->register_username_logged_out,
  111. app->register_username_logged_out_temp_buffer_size)) {
  112. return NULL;
  113. }
  114. if(!easy_flipper_set_buffer(
  115. &app->register_password_logged_out,
  116. app->register_password_logged_out_temp_buffer_size)) {
  117. return NULL;
  118. }
  119. if(!easy_flipper_set_buffer(
  120. &app->register_password_2_logged_out,
  121. app->register_password_2_logged_out_temp_buffer_size)) {
  122. return NULL;
  123. }
  124. if(!easy_flipper_set_buffer(
  125. &app->change_password_logged_in, app->change_password_logged_in_temp_buffer_size)) {
  126. return NULL;
  127. }
  128. if(!easy_flipper_set_buffer(
  129. &app->compose_pre_save_logged_in, app->compose_pre_save_logged_in_temp_buffer_size)) {
  130. return NULL;
  131. }
  132. if(!easy_flipper_set_buffer(
  133. &app->wifi_ssid_logged_in, app->wifi_ssid_logged_in_temp_buffer_size)) {
  134. return NULL;
  135. }
  136. if(!easy_flipper_set_buffer(
  137. &app->wifi_password_logged_in, app->wifi_password_logged_in_temp_buffer_size)) {
  138. return NULL;
  139. }
  140. if(!easy_flipper_set_buffer(
  141. &app->login_username_logged_in, app->login_username_logged_in_temp_buffer_size)) {
  142. return NULL;
  143. }
  144. //
  145. if(!easy_flipper_set_buffer(
  146. &app->messages_new_message_logged_in,
  147. app->messages_new_message_logged_in_temp_buffer_size)) {
  148. return NULL;
  149. }
  150. if(!easy_flipper_set_buffer(
  151. &app->messages_new_message_logged_in_temp_buffer,
  152. app->messages_new_message_logged_in_temp_buffer_size)) {
  153. return NULL;
  154. }
  155. if(!easy_flipper_set_buffer(
  156. &app->message_user_choice_logged_in,
  157. app->message_user_choice_logged_in_temp_buffer_size)) {
  158. return NULL;
  159. }
  160. if(!easy_flipper_set_buffer(
  161. &app->message_user_choice_logged_in_temp_buffer,
  162. app->message_user_choice_logged_in_temp_buffer_size)) {
  163. return NULL;
  164. }
  165. if(!easy_flipper_set_buffer(
  166. &selected_message, app->message_user_choice_logged_in_temp_buffer_size)) {
  167. return NULL;
  168. }
  169. if(!easy_flipper_set_buffer(
  170. &last_explore_response, app->message_user_choice_logged_in_temp_buffer_size)) {
  171. return NULL;
  172. }
  173. // Allocate Submenu(s)
  174. if(!easy_flipper_set_submenu(
  175. &app->submenu_logged_out,
  176. FlipSocialViewLoggedOutSubmenu,
  177. "FlipSocial v0.6",
  178. flip_social_callback_exit_app,
  179. &app->view_dispatcher)) {
  180. return NULL;
  181. }
  182. if(!easy_flipper_set_submenu(
  183. &app->submenu_logged_in,
  184. FlipSocialViewLoggedInSubmenu,
  185. "FlipSocial v0.6",
  186. flip_social_callback_exit_app,
  187. &app->view_dispatcher)) {
  188. return NULL;
  189. }
  190. if(!easy_flipper_set_submenu(
  191. &app->submenu_compose,
  192. FlipSocialViewLoggedInCompose,
  193. "Create A Post",
  194. flip_social_callback_to_submenu_logged_in,
  195. &app->view_dispatcher)) {
  196. return NULL;
  197. }
  198. if(!easy_flipper_set_submenu(
  199. &app->submenu_explore,
  200. FlipSocialViewLoggedInExploreSubmenu,
  201. "Explore",
  202. flip_social_callback_to_submenu_logged_in,
  203. &app->view_dispatcher)) {
  204. return NULL;
  205. }
  206. if(!easy_flipper_set_submenu(
  207. &app->submenu_friends,
  208. FlipSocialViewLoggedInFriendsSubmenu,
  209. "Friends",
  210. flip_social_callback_to_profile_logged_in,
  211. &app->view_dispatcher)) {
  212. return NULL;
  213. }
  214. if(!easy_flipper_set_submenu(
  215. &app->submenu_messages,
  216. FlipSocialViewLoggedInMessagesSubmenu,
  217. "Messages",
  218. flip_social_callback_to_submenu_logged_in,
  219. &app->view_dispatcher)) {
  220. return NULL;
  221. }
  222. if(!easy_flipper_set_submenu(
  223. &app->submenu_messages_user_choices,
  224. FlipSocialViewLoggedInMessagesUserChoices,
  225. "Users",
  226. flip_social_callback_to_messages_logged_in,
  227. &app->view_dispatcher)) {
  228. return NULL;
  229. }
  230. submenu_add_item(
  231. app->submenu_logged_out,
  232. "Login",
  233. FlipSocialSubmenuLoggedOutIndexLogin,
  234. flip_social_callback_submenu_choices,
  235. app);
  236. submenu_add_item(
  237. app->submenu_logged_out,
  238. "Register",
  239. FlipSocialSubmenuLoggedOutIndexRegister,
  240. flip_social_callback_submenu_choices,
  241. app);
  242. submenu_add_item(
  243. app->submenu_logged_out,
  244. "About",
  245. FlipSocialSubmenuLoggedOutIndexAbout,
  246. flip_social_callback_submenu_choices,
  247. app);
  248. submenu_add_item(
  249. app->submenu_logged_out,
  250. "Settings",
  251. FlipSocialSubmenuLoggedOutIndexWifiSettings,
  252. flip_social_callback_submenu_choices,
  253. app);
  254. //
  255. submenu_add_item(
  256. app->submenu_logged_in,
  257. "Explore",
  258. FlipSocialSubmenuExploreIndex,
  259. flip_social_callback_submenu_choices,
  260. app);
  261. submenu_add_item(
  262. app->submenu_logged_in,
  263. "Feed",
  264. FlipSocialSubmenuLoggedInIndexFeed,
  265. flip_social_callback_submenu_choices,
  266. app);
  267. submenu_add_item(
  268. app->submenu_logged_in,
  269. "Post",
  270. FlipSocialSubmenuLoggedInIndexCompose,
  271. flip_social_callback_submenu_choices,
  272. app);
  273. submenu_add_item(
  274. app->submenu_logged_in,
  275. "Messages",
  276. FlipSocialSubmenuLoggedInIndexMessages,
  277. flip_social_callback_submenu_choices,
  278. app);
  279. submenu_add_item(
  280. app->submenu_logged_in,
  281. "Profile",
  282. FlipSocialSubmenuLoggedInIndexProfile,
  283. flip_social_callback_submenu_choices,
  284. app);
  285. submenu_add_item(
  286. app->submenu_logged_in,
  287. "Settings",
  288. FlipSocialSubmenuLoggedInIndexSettings,
  289. flip_social_callback_submenu_choices,
  290. app);
  291. submenu_add_item(
  292. app->submenu_logged_in,
  293. "Sign Out",
  294. FlipSocialSubmenuLoggedInSignOutButton,
  295. flip_social_callback_submenu_choices,
  296. app);
  297. //
  298. submenu_add_item(
  299. app->submenu_compose,
  300. "Add Pre-Save",
  301. FlipSocialSubmenuComposeIndexAddPreSave,
  302. flip_social_callback_submenu_choices,
  303. app);
  304. //
  305. // Allocate View(s)
  306. if(!easy_flipper_set_view(
  307. &app->view_process_login,
  308. FlipSocialViewLoggedOutProcessLogin,
  309. flip_social_callback_draw_login,
  310. NULL,
  311. flip_social_callback_to_login_logged_out,
  312. &app->view_dispatcher,
  313. app)) {
  314. return NULL;
  315. }
  316. if(!easy_flipper_set_view(
  317. &app->view_process_register,
  318. FlipSocialViewLoggedOutProcessRegister,
  319. flip_social_callback_draw_register,
  320. NULL,
  321. flip_social_callback_to_register_logged_out,
  322. &app->view_dispatcher,
  323. app)) {
  324. return NULL;
  325. }
  326. if(!easy_flipper_set_view(
  327. &app->view_process_feed,
  328. FlipSocialViewLoggedInFeed,
  329. flip_social_callback_draw_feed,
  330. NULL,
  331. flip_social_callback_to_submenu_logged_in,
  332. &app->view_dispatcher,
  333. app)) {
  334. return NULL;
  335. }
  336. if(!easy_flipper_set_view(
  337. &app->view_process_compose,
  338. FlipSocialViewLoggedInProcessCompose,
  339. flip_social_callback_draw_compose,
  340. NULL,
  341. flip_social_callback_to_compose_logged_in,
  342. &app->view_dispatcher,
  343. app)) {
  344. return NULL;
  345. }
  346. if(!easy_flipper_set_view(
  347. &app->view_process_explore,
  348. FlipSocialViewLoggedInExploreProccess,
  349. flip_social_callback_draw_explore,
  350. NULL,
  351. flip_social_callback_to_explore_logged_in,
  352. &app->view_dispatcher,
  353. app)) {
  354. return NULL;
  355. }
  356. if(!easy_flipper_set_view(
  357. &app->view_process_friends,
  358. FlipSocialViewLoggedInFriendsProcess,
  359. flip_social_callback_draw_friends,
  360. NULL,
  361. flip_social_callback_to_friends_logged_in,
  362. &app->view_dispatcher,
  363. app)) {
  364. return NULL;
  365. }
  366. if(!easy_flipper_set_view(
  367. &app->view_process_messages,
  368. FlipSocialViewLoggedInMessagesProcess,
  369. flip_social_callback_draw_messages,
  370. NULL,
  371. flip_social_callback_to_messages_logged_in,
  372. &app->view_dispatcher,
  373. app)) {
  374. return NULL;
  375. }
  376. // Setup Variable Item List(s)
  377. if(!easy_flipper_set_variable_item_list(
  378. &app->variable_item_list_logged_out_wifi_settings,
  379. FlipSocialViewLoggedOutWifiSettings,
  380. flip_social_text_input_logged_out_wifi_settings_item_selected,
  381. flip_social_callback_to_submenu_logged_out,
  382. &app->view_dispatcher,
  383. app)) {
  384. return NULL;
  385. }
  386. if(!easy_flipper_set_variable_item_list(
  387. &app->variable_item_list_logged_out_login,
  388. FlipSocialViewLoggedOutLogin,
  389. flip_social_text_input_logged_out_login_item_selected,
  390. flip_social_callback_to_submenu_logged_out,
  391. &app->view_dispatcher,
  392. app)) {
  393. return NULL;
  394. }
  395. if(!easy_flipper_set_variable_item_list(
  396. &app->variable_item_list_logged_out_register,
  397. FlipSocialViewLoggedOutRegister,
  398. flip_social_text_input_logged_out_register_item_selected,
  399. flip_social_callback_to_submenu_logged_out,
  400. &app->view_dispatcher,
  401. app)) {
  402. return NULL;
  403. }
  404. if(!easy_flipper_set_variable_item_list(
  405. &app->variable_item_list_logged_in_profile,
  406. FlipSocialViewLoggedInProfile,
  407. flip_social_text_input_logged_in_profile_item_selected,
  408. flip_social_callback_to_submenu_logged_in,
  409. &app->view_dispatcher,
  410. app)) {
  411. return NULL;
  412. }
  413. if(!easy_flipper_set_variable_item_list(
  414. &app->variable_item_list_logged_in_settings,
  415. FlipSocialViewLoggedInSettings,
  416. flip_social_text_input_logged_in_settings_item_selected,
  417. flip_social_callback_to_submenu_logged_in,
  418. &app->view_dispatcher,
  419. app)) {
  420. return NULL;
  421. }
  422. if(!easy_flipper_set_variable_item_list(
  423. &app->variable_item_list_logged_in_settings_wifi,
  424. FlipSocialViewLoggedInSettingsWifi,
  425. flip_social_text_input_logged_in_wifi_settings_item_selected,
  426. flip_social_callback_to_settings_logged_in,
  427. &app->view_dispatcher,
  428. app)) {
  429. return NULL;
  430. }
  431. app->variable_item_logged_out_wifi_settings_ssid = variable_item_list_add(
  432. app->variable_item_list_logged_out_wifi_settings, "SSID", 1, NULL, NULL);
  433. app->variable_item_logged_out_wifi_settings_password = variable_item_list_add(
  434. app->variable_item_list_logged_out_wifi_settings, "Password", 1, NULL, NULL);
  435. //
  436. app->variable_item_logged_out_login_username = variable_item_list_add(
  437. app->variable_item_list_logged_out_login, "Username", 1, NULL, NULL);
  438. app->variable_item_logged_out_login_password = variable_item_list_add(
  439. app->variable_item_list_logged_out_login, "Password", 1, NULL, NULL);
  440. app->variable_item_logged_out_login_button =
  441. variable_item_list_add(app->variable_item_list_logged_out_login, "Login", 0, NULL, NULL);
  442. //
  443. app->variable_item_logged_out_register_username = variable_item_list_add(
  444. app->variable_item_list_logged_out_register, "Username", 1, NULL, NULL);
  445. app->variable_item_logged_out_register_password = variable_item_list_add(
  446. app->variable_item_list_logged_out_register, "Password", 1, NULL, NULL);
  447. app->variable_item_logged_out_register_password_2 = variable_item_list_add(
  448. app->variable_item_list_logged_out_register, "Confirm Password", 1, NULL, NULL);
  449. app->variable_item_logged_out_register_button = variable_item_list_add(
  450. app->variable_item_list_logged_out_register, "Register", 0, NULL, NULL);
  451. //
  452. app->variable_item_logged_in_profile_username = variable_item_list_add(
  453. app->variable_item_list_logged_in_profile, "Username", 0, NULL, NULL);
  454. app->variable_item_logged_in_profile_change_password = variable_item_list_add(
  455. app->variable_item_list_logged_in_profile, "Change Password", 0, NULL, NULL);
  456. app->variable_item_logged_in_profile_friends = variable_item_list_add(
  457. app->variable_item_list_logged_in_profile, "Friends", 0, NULL, NULL);
  458. //
  459. app->variable_item_logged_in_settings_about =
  460. variable_item_list_add(app->variable_item_list_logged_in_settings, "About", 0, NULL, NULL);
  461. app->variable_item_logged_in_settings_wifi =
  462. variable_item_list_add(app->variable_item_list_logged_in_settings, "WiFi", 0, NULL, NULL);
  463. //
  464. app->variable_item_logged_in_wifi_settings_ssid = variable_item_list_add(
  465. app->variable_item_list_logged_in_settings_wifi, "SSID", 1, NULL, NULL);
  466. app->variable_item_logged_in_wifi_settings_password = variable_item_list_add(
  467. app->variable_item_list_logged_in_settings_wifi, "Password", 1, NULL, NULL);
  468. // Setup Text Input(s)
  469. if(!easy_flipper_set_uart_text_input(
  470. &app->text_input_logged_out_wifi_settings_ssid,
  471. FlipSocialViewLoggedOutWifiSettingsSSIDInput,
  472. "Enter SSID",
  473. app->wifi_ssid_logged_out_temp_buffer,
  474. app->wifi_ssid_logged_out_temp_buffer_size,
  475. flip_social_logged_out_wifi_settings_ssid_updated,
  476. flip_social_callback_to_wifi_settings_logged_out,
  477. &app->view_dispatcher,
  478. app)) {
  479. return NULL;
  480. }
  481. if(!easy_flipper_set_uart_text_input(
  482. &app->text_input_logged_out_wifi_settings_password,
  483. FlipSocialViewLoggedOutWifiSettingsPasswordInput,
  484. "Enter Password",
  485. app->wifi_password_logged_out_temp_buffer,
  486. app->wifi_password_logged_out_temp_buffer_size,
  487. flip_social_logged_out_wifi_settings_password_updated,
  488. flip_social_callback_to_wifi_settings_logged_out,
  489. &app->view_dispatcher,
  490. app)) {
  491. return NULL;
  492. }
  493. if(!easy_flipper_set_uart_text_input(
  494. &app->text_input_logged_out_login_username,
  495. FlipSocialViewLoggedOutLoginUsernameInput,
  496. "Enter Username",
  497. app->login_username_logged_out_temp_buffer,
  498. app->login_username_logged_out_temp_buffer_size,
  499. flip_social_logged_out_login_username_updated,
  500. flip_social_callback_to_login_logged_out,
  501. &app->view_dispatcher,
  502. app)) {
  503. return NULL;
  504. }
  505. if(!easy_flipper_set_uart_text_input(
  506. &app->text_input_logged_out_login_password,
  507. FlipSocialViewLoggedOutLoginPasswordInput,
  508. "Enter Password",
  509. app->login_password_logged_out_temp_buffer,
  510. app->login_password_logged_out_temp_buffer_size,
  511. flip_social_logged_out_login_password_updated,
  512. flip_social_callback_to_login_logged_out,
  513. &app->view_dispatcher,
  514. app)) {
  515. return NULL;
  516. }
  517. if(!easy_flipper_set_uart_text_input(
  518. &app->text_input_logged_out_register_username,
  519. FlipSocialViewLoggedOutRegisterUsernameInput,
  520. "Enter Username",
  521. app->register_username_logged_out_temp_buffer,
  522. app->register_username_logged_out_temp_buffer_size,
  523. flip_social_logged_out_register_username_updated,
  524. flip_social_callback_to_register_logged_out,
  525. &app->view_dispatcher,
  526. app)) {
  527. return NULL;
  528. }
  529. if(!easy_flipper_set_uart_text_input(
  530. &app->text_input_logged_out_register_password,
  531. FlipSocialViewLoggedOutRegisterPasswordInput,
  532. "Enter Password",
  533. app->register_password_logged_out_temp_buffer,
  534. app->register_password_logged_out_temp_buffer_size,
  535. flip_social_logged_out_register_password_updated,
  536. flip_social_callback_to_register_logged_out,
  537. &app->view_dispatcher,
  538. app)) {
  539. return NULL;
  540. }
  541. if(!easy_flipper_set_uart_text_input(
  542. &app->text_input_logged_out_register_password_2,
  543. FlipSocialViewLoggedOutRegisterPassword2Input,
  544. "Confirm Password",
  545. app->register_password_2_logged_out_temp_buffer,
  546. app->register_password_2_logged_out_temp_buffer_size,
  547. flip_social_logged_out_register_password_2_updated,
  548. flip_social_callback_to_register_logged_out,
  549. &app->view_dispatcher,
  550. app)) {
  551. return NULL;
  552. }
  553. //
  554. if(!easy_flipper_set_uart_text_input(
  555. &app->text_input_logged_in_change_password,
  556. FlipSocialViewLoggedInChangePasswordInput,
  557. "Enter New Password",
  558. app->change_password_logged_in_temp_buffer,
  559. app->change_password_logged_in_temp_buffer_size,
  560. flip_social_logged_in_profile_change_password_updated,
  561. flip_social_callback_to_profile_logged_in,
  562. &app->view_dispatcher,
  563. app)) {
  564. return NULL;
  565. }
  566. if(!easy_flipper_set_uart_text_input(
  567. &app->text_input_logged_in_compose_pre_save_input,
  568. FlipSocialViewLoggedInComposeAddPreSaveInput,
  569. "Enter Pre-Save Message",
  570. app->compose_pre_save_logged_in_temp_buffer,
  571. app->compose_pre_save_logged_in_temp_buffer_size,
  572. flip_social_logged_in_compose_pre_save_updated,
  573. flip_social_callback_to_compose_logged_in,
  574. &app->view_dispatcher,
  575. app)) {
  576. return NULL;
  577. }
  578. if(!easy_flipper_set_uart_text_input(
  579. &app->text_input_logged_in_wifi_settings_ssid,
  580. FlipSocialViewLoggedInWifiSettingsSSIDInput,
  581. "Enter SSID",
  582. app->wifi_ssid_logged_in_temp_buffer,
  583. app->wifi_ssid_logged_in_temp_buffer_size,
  584. flip_social_logged_in_wifi_settings_ssid_updated,
  585. flip_social_callback_to_wifi_settings_logged_in,
  586. &app->view_dispatcher,
  587. app)) {
  588. return NULL;
  589. }
  590. if(!easy_flipper_set_uart_text_input(
  591. &app->text_input_logged_in_wifi_settings_password,
  592. FlipSocialViewLoggedInWifiSettingsPasswordInput,
  593. "Enter Password",
  594. app->wifi_password_logged_in_temp_buffer,
  595. app->wifi_password_logged_in_temp_buffer_size,
  596. flip_social_logged_in_wifi_settings_password_updated,
  597. flip_social_callback_to_wifi_settings_logged_in,
  598. &app->view_dispatcher,
  599. app)) {
  600. return NULL;
  601. }
  602. //
  603. if(!easy_flipper_set_uart_text_input(
  604. &app->text_input_logged_in_messages_new_message,
  605. FlipSocialViewLoggedInMessagesNewMessageInput,
  606. "Enter Message",
  607. app->messages_new_message_logged_in_temp_buffer,
  608. app->messages_new_message_logged_in_temp_buffer_size,
  609. flip_social_logged_in_messages_new_message_updated,
  610. flip_social_callback_to_messages_logged_in,
  611. &app->view_dispatcher,
  612. app)) {
  613. return NULL;
  614. }
  615. if(!easy_flipper_set_uart_text_input(
  616. &app->text_input_logged_in_messages_new_message_user_choices,
  617. FlipSocialViewLoggedInMessagesNewMessageUserChoicesInput,
  618. "Enter Message",
  619. app->message_user_choice_logged_in_temp_buffer,
  620. app->message_user_choice_logged_in_temp_buffer_size,
  621. flip_social_logged_in_messages_user_choice_message_updated,
  622. flip_social_callback_to_messages_user_choices,
  623. &app->view_dispatcher,
  624. app)) {
  625. return NULL;
  626. }
  627. // Setup About(s)
  628. if(!easy_flipper_set_widget(
  629. &app->widget_logged_out_about,
  630. FlipSocialViewLoggedOutAbout,
  631. "Welcome to FlipSocial\n---\nThe social media app for\nFlipper Zero, created by\nJBlanked: www.flipsocial.net\n---\nPress BACK to return.",
  632. flip_social_callback_to_submenu_logged_out,
  633. &app->view_dispatcher)) {
  634. return NULL;
  635. }
  636. if(!easy_flipper_set_widget(
  637. &app->widget_logged_in_about,
  638. FlipSocialViewLoggedInSettingsAbout,
  639. "Welcome to FlipSocial\n---\nThe social media app for\nFlipper Zero, created by\nJBlanked: www.flipsocial.net\n---\nPress BACK to return.",
  640. flip_social_callback_to_settings_logged_in,
  641. &app->view_dispatcher)) {
  642. return NULL;
  643. }
  644. // load the playlist
  645. if(load_playlist(&app->pre_saved_messages)) {
  646. // Update the playlist submenu
  647. for(uint32_t i = 0; i < app->pre_saved_messages.count; i++) {
  648. submenu_add_item(
  649. app->submenu_compose,
  650. app->pre_saved_messages.messages[i],
  651. FlipSocialSubemnuComposeIndexStartIndex + i,
  652. flip_social_callback_submenu_choices,
  653. app);
  654. }
  655. }
  656. // Load the settings
  657. if(!load_settings(
  658. app->wifi_ssid_logged_out,
  659. app->wifi_ssid_logged_out_temp_buffer_size,
  660. app->wifi_password_logged_out,
  661. app->wifi_password_logged_out_temp_buffer_size,
  662. app->login_username_logged_out,
  663. app->login_username_logged_out_temp_buffer_size,
  664. app->login_username_logged_in,
  665. app->login_username_logged_in_temp_buffer_size,
  666. app->login_password_logged_out,
  667. app->login_password_logged_out_temp_buffer_size,
  668. app->change_password_logged_in,
  669. app->change_password_logged_in_temp_buffer_size,
  670. app->is_logged_in,
  671. app->is_logged_in_size))
  672. {
  673. FURI_LOG_E(TAG, "Failed to load settings");
  674. if(app->is_logged_in == NULL) {
  675. app->is_logged_in = (char*)malloc(app->is_logged_in_size);
  676. app->is_logged_in = "false";
  677. }
  678. app_instance = app;
  679. view_dispatcher_switch_to_view(app->view_dispatcher, FlipSocialViewLoggedOutSubmenu);
  680. } else {
  681. // Copy items into their temp buffers with safety checks
  682. if(app->wifi_ssid_logged_out && app->wifi_ssid_logged_out_temp_buffer) {
  683. strncpy(
  684. app->wifi_ssid_logged_out_temp_buffer,
  685. app->wifi_ssid_logged_out,
  686. app->wifi_ssid_logged_out_temp_buffer_size - 1);
  687. app->wifi_ssid_logged_out_temp_buffer[app->wifi_ssid_logged_out_temp_buffer_size - 1] =
  688. '\0';
  689. }
  690. if(app->wifi_password_logged_out && app->wifi_password_logged_out_temp_buffer) {
  691. strncpy(
  692. app->wifi_password_logged_out_temp_buffer,
  693. app->wifi_password_logged_out,
  694. app->wifi_password_logged_out_temp_buffer_size - 1);
  695. app->wifi_password_logged_out_temp_buffer
  696. [app->wifi_password_logged_out_temp_buffer_size - 1] = '\0';
  697. }
  698. if(app->login_username_logged_out && app->login_username_logged_out_temp_buffer) {
  699. strncpy(
  700. app->login_username_logged_out_temp_buffer,
  701. app->login_username_logged_out,
  702. app->login_username_logged_out_temp_buffer_size - 1);
  703. app->login_username_logged_out_temp_buffer
  704. [app->login_username_logged_out_temp_buffer_size - 1] = '\0';
  705. }
  706. if(app->login_password_logged_out && app->login_password_logged_out_temp_buffer) {
  707. strncpy(
  708. app->login_password_logged_out_temp_buffer,
  709. app->login_password_logged_out,
  710. app->login_password_logged_out_temp_buffer_size - 1);
  711. app->login_password_logged_out_temp_buffer
  712. [app->login_password_logged_out_temp_buffer_size - 1] = '\0';
  713. }
  714. if(app->register_username_logged_out && app->register_username_logged_out_temp_buffer) {
  715. strncpy(
  716. app->register_username_logged_out_temp_buffer,
  717. app->register_username_logged_out,
  718. app->register_username_logged_out_temp_buffer_size - 1);
  719. app->register_username_logged_out_temp_buffer
  720. [app->register_username_logged_out_temp_buffer_size - 1] = '\0';
  721. }
  722. if(app->register_password_logged_out && app->register_password_logged_out_temp_buffer) {
  723. strncpy(
  724. app->register_password_logged_out_temp_buffer,
  725. app->register_password_logged_out,
  726. app->register_password_logged_out_temp_buffer_size - 1);
  727. app->register_password_logged_out_temp_buffer
  728. [app->register_password_logged_out_temp_buffer_size - 1] = '\0';
  729. }
  730. if(app->register_password_2_logged_out &&
  731. app->register_password_2_logged_out_temp_buffer) {
  732. strncpy(
  733. app->register_password_2_logged_out_temp_buffer,
  734. app->register_password_2_logged_out,
  735. app->register_password_2_logged_out_temp_buffer_size - 1);
  736. app->register_password_2_logged_out_temp_buffer
  737. [app->register_password_2_logged_out_temp_buffer_size - 1] = '\0';
  738. }
  739. if(app->change_password_logged_in && app->change_password_logged_in_temp_buffer) {
  740. strncpy(
  741. app->change_password_logged_in_temp_buffer,
  742. app->change_password_logged_in,
  743. app->change_password_logged_in_temp_buffer_size - 1);
  744. app->change_password_logged_in_temp_buffer
  745. [app->change_password_logged_in_temp_buffer_size - 1] = '\0';
  746. }
  747. if(app->compose_pre_save_logged_in && app->compose_pre_save_logged_in_temp_buffer) {
  748. strncpy(
  749. app->compose_pre_save_logged_in_temp_buffer,
  750. app->compose_pre_save_logged_in,
  751. app->compose_pre_save_logged_in_temp_buffer_size - 1);
  752. app->compose_pre_save_logged_in_temp_buffer
  753. [app->compose_pre_save_logged_in_temp_buffer_size - 1] = '\0';
  754. }
  755. if(app->wifi_ssid_logged_in && app->wifi_ssid_logged_in_temp_buffer) {
  756. strncpy(
  757. app->wifi_ssid_logged_in_temp_buffer,
  758. app->wifi_ssid_logged_in,
  759. app->wifi_ssid_logged_in_temp_buffer_size - 1);
  760. app->wifi_ssid_logged_in_temp_buffer[app->wifi_ssid_logged_in_temp_buffer_size - 1] =
  761. '\0';
  762. }
  763. if(app->wifi_password_logged_in && app->wifi_password_logged_in_temp_buffer) {
  764. strncpy(
  765. app->wifi_password_logged_in_temp_buffer,
  766. app->wifi_password_logged_in,
  767. app->wifi_password_logged_in_temp_buffer_size - 1);
  768. app->wifi_password_logged_in_temp_buffer
  769. [app->wifi_password_logged_in_temp_buffer_size - 1] = '\0';
  770. }
  771. if(app->login_username_logged_in && app->login_username_logged_in_temp_buffer) {
  772. strncpy(
  773. app->login_username_logged_in_temp_buffer,
  774. app->login_username_logged_in,
  775. app->login_username_logged_in_temp_buffer_size - 1);
  776. app->login_username_logged_in_temp_buffer
  777. [app->login_username_logged_in_temp_buffer_size - 1] = '\0';
  778. }
  779. // if login username is empty but logged out isnt, copy it over
  780. if(strlen(app->login_username_logged_out) > 0 &&
  781. strlen(app->login_username_logged_in) == 0) {
  782. strncpy(
  783. app->login_username_logged_in,
  784. app->login_username_logged_out,
  785. app->login_username_logged_in_temp_buffer_size - 1);
  786. strncpy(
  787. app->login_username_logged_in_temp_buffer,
  788. app->login_username_logged_out,
  789. app->login_username_logged_in_temp_buffer_size - 1);
  790. app->login_username_logged_in[app->login_username_logged_in_temp_buffer_size - 1] =
  791. '\0';
  792. app->login_username_logged_in_temp_buffer
  793. [app->login_username_logged_in_temp_buffer_size - 1] = '\0';
  794. }
  795. // logout username is empty but logged in isnt, copy it over
  796. if(strlen(app->login_username_logged_in) > 0 &&
  797. strlen(app->login_username_logged_out) == 0) {
  798. strncpy(
  799. app->login_username_logged_out,
  800. app->login_username_logged_in,
  801. app->login_username_logged_in_temp_buffer_size - 1);
  802. strncpy(
  803. app->login_username_logged_out_temp_buffer,
  804. app->login_username_logged_in,
  805. app->login_username_logged_in_temp_buffer_size - 1);
  806. app->login_username_logged_out[app->login_username_logged_in_temp_buffer_size - 1] =
  807. '\0';
  808. app->login_username_logged_out_temp_buffer
  809. [app->login_username_logged_in_temp_buffer_size - 1] = '\0';
  810. }
  811. // if login password is empty but logged out isnt, copy it over
  812. if(strlen(app->login_password_logged_out) > 0 &&
  813. strlen(app->change_password_logged_in) == 0) {
  814. strncpy(
  815. app->change_password_logged_in,
  816. app->login_password_logged_out,
  817. app->login_password_logged_out_temp_buffer_size - 1);
  818. strncpy(
  819. app->change_password_logged_in_temp_buffer,
  820. app->login_password_logged_out,
  821. app->login_password_logged_out_temp_buffer_size - 1);
  822. app->change_password_logged_in[app->login_password_logged_out_temp_buffer_size - 1] =
  823. '\0';
  824. app->change_password_logged_in_temp_buffer
  825. [app->login_password_logged_out_temp_buffer_size - 1] = '\0';
  826. }
  827. // if logout password is empty but logged in isnt, copy it over
  828. if(strlen(app->change_password_logged_in) > 0 &&
  829. strlen(app->login_password_logged_out) == 0) {
  830. strncpy(
  831. app->login_password_logged_out,
  832. app->change_password_logged_in,
  833. app->login_password_logged_out_temp_buffer_size - 1);
  834. strncpy(
  835. app->login_password_logged_out_temp_buffer,
  836. app->change_password_logged_in,
  837. app->login_password_logged_out_temp_buffer_size - 1);
  838. app->login_password_logged_out[app->login_password_logged_out_temp_buffer_size - 1] =
  839. '\0';
  840. app->login_password_logged_out_temp_buffer
  841. [app->login_password_logged_out_temp_buffer_size - 1] = '\0';
  842. }
  843. // if wifi password is empty but logged out isnt, copy it over
  844. if(strlen(app->wifi_password_logged_out) > 0 &&
  845. strlen(app->wifi_password_logged_in) == 0) {
  846. strncpy(
  847. app->wifi_password_logged_in,
  848. app->wifi_password_logged_out,
  849. app->wifi_password_logged_in_temp_buffer_size - 1);
  850. strncpy(
  851. app->wifi_password_logged_in_temp_buffer,
  852. app->wifi_password_logged_out,
  853. app->wifi_password_logged_in_temp_buffer_size - 1);
  854. app->wifi_password_logged_in[app->wifi_password_logged_in_temp_buffer_size - 1] = '\0';
  855. app->wifi_password_logged_in_temp_buffer
  856. [app->wifi_password_logged_in_temp_buffer_size - 1] = '\0';
  857. }
  858. // ifi wifi password is empty but logged in isnt, copy it over
  859. if(strlen(app->wifi_password_logged_in) > 0 &&
  860. strlen(app->wifi_password_logged_out) == 0) {
  861. strncpy(
  862. app->wifi_password_logged_out,
  863. app->wifi_password_logged_in,
  864. app->wifi_password_logged_in_temp_buffer_size - 1);
  865. strncpy(
  866. app->wifi_password_logged_out_temp_buffer,
  867. app->wifi_password_logged_in,
  868. app->wifi_password_logged_in_temp_buffer_size - 1);
  869. app->wifi_password_logged_out[app->wifi_password_logged_in_temp_buffer_size - 1] =
  870. '\0';
  871. app->wifi_password_logged_out_temp_buffer
  872. [app->wifi_password_logged_in_temp_buffer_size - 1] = '\0';
  873. }
  874. // if wifi ssid is empty but logged out isnt, copy it over
  875. if(strlen(app->wifi_ssid_logged_out) > 0 && strlen(app->wifi_ssid_logged_in) == 0) {
  876. strncpy(
  877. app->wifi_ssid_logged_in,
  878. app->wifi_ssid_logged_out,
  879. app->wifi_ssid_logged_in_temp_buffer_size - 1);
  880. strncpy(
  881. app->wifi_ssid_logged_in_temp_buffer,
  882. app->wifi_ssid_logged_out,
  883. app->wifi_ssid_logged_in_temp_buffer_size - 1);
  884. app->wifi_ssid_logged_in[app->wifi_ssid_logged_in_temp_buffer_size - 1] = '\0';
  885. app->wifi_ssid_logged_in_temp_buffer[app->wifi_ssid_logged_in_temp_buffer_size - 1] =
  886. '\0';
  887. }
  888. // if wifi ssid is empty but logged in isnt, copy it over
  889. if(strlen(app->wifi_ssid_logged_in) > 0 && strlen(app->wifi_ssid_logged_out) == 0) {
  890. strncpy(
  891. app->wifi_ssid_logged_out,
  892. app->wifi_ssid_logged_in,
  893. app->wifi_ssid_logged_in_temp_buffer_size - 1);
  894. strncpy(
  895. app->wifi_ssid_logged_out_temp_buffer,
  896. app->wifi_ssid_logged_in,
  897. app->wifi_ssid_logged_in_temp_buffer_size - 1);
  898. app->wifi_ssid_logged_out[app->wifi_ssid_logged_in_temp_buffer_size - 1] = '\0';
  899. app->wifi_ssid_logged_out_temp_buffer[app->wifi_ssid_logged_in_temp_buffer_size - 1] =
  900. '\0';
  901. }
  902. // set variable item text (ommit the passwords)
  903. variable_item_set_current_value_text(
  904. app->variable_item_logged_in_wifi_settings_ssid, app->wifi_ssid_logged_in);
  905. variable_item_set_current_value_text(
  906. app->variable_item_logged_out_wifi_settings_ssid, app->wifi_ssid_logged_out);
  907. variable_item_set_current_value_text(
  908. app->variable_item_logged_out_login_username, app->login_username_logged_out);
  909. variable_item_set_current_value_text(
  910. app->variable_item_logged_in_profile_username, app->login_username_logged_in);
  911. //
  912. if(app->is_logged_in != NULL && strcmp(app->is_logged_in, "true") == 0) {
  913. view_dispatcher_switch_to_view(app->view_dispatcher, FlipSocialViewLoggedInSubmenu);
  914. } else {
  915. view_dispatcher_switch_to_view(app->view_dispatcher, FlipSocialViewLoggedOutSubmenu);
  916. }
  917. }
  918. return app;
  919. }