flip_social_i.h 38 KB

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