event_map.rs 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. use crate::entities::UserProfilePB;
  2. use crate::{errors::FlowyError, handlers::*, services::UserSession};
  3. use lib_dispatch::prelude::*;
  4. use lib_infra::future::{Fut, FutureResult};
  5. use std::sync::Arc;
  6. use user_model::{SignInParams, SignInResponse, SignUpParams, SignUpResponse, UpdateUserProfileParams, UserProfile};
  7. pub fn init(user_session: Arc<UserSession>) -> AFPlugin {
  8. AFPlugin::new()
  9. .name("Flowy-User")
  10. .state(user_session)
  11. .event(UserEvent::SignIn, sign_in)
  12. .event(UserEvent::SignUp, sign_up)
  13. .event(UserEvent::InitUser, init_user_handler)
  14. .event(UserEvent::GetUserProfile, get_user_profile_handler)
  15. .event(UserEvent::SignOut, sign_out)
  16. .event(UserEvent::UpdateUserProfile, update_user_profile_handler)
  17. .event(UserEvent::CheckUser, check_user_handler)
  18. .event(UserEvent::SetAppearanceSetting, set_appearance_setting)
  19. .event(UserEvent::GetAppearanceSetting, get_appearance_setting)
  20. .event(UserEvent::GetUserSetting, get_user_setting)
  21. }
  22. pub trait UserStatusCallback: Send + Sync + 'static {
  23. fn did_sign_in(&self, token: &str, user_id: &str) -> Fut<FlowyResult<()>>;
  24. fn did_sign_up(&self, user_profile: &UserProfile) -> Fut<FlowyResult<()>>;
  25. fn did_expired(&self, token: &str, user_id: &str) -> Fut<FlowyResult<()>>;
  26. }
  27. pub trait UserCloudService: Send + Sync {
  28. fn sign_up(&self, params: SignUpParams) -> FutureResult<SignUpResponse, FlowyError>;
  29. fn sign_in(&self, params: SignInParams) -> FutureResult<SignInResponse, FlowyError>;
  30. fn sign_out(&self, token: &str) -> FutureResult<(), FlowyError>;
  31. fn update_user(&self, token: &str, params: UpdateUserProfileParams) -> FutureResult<(), FlowyError>;
  32. fn get_user(&self, token: &str) -> FutureResult<UserProfilePB, FlowyError>;
  33. fn ws_addr(&self) -> String;
  34. }
  35. use flowy_derive::{Flowy_Event, ProtoBuf_Enum};
  36. use flowy_error::FlowyResult;
  37. use strum_macros::Display;
  38. #[derive(Clone, Copy, PartialEq, Eq, Debug, Display, Hash, ProtoBuf_Enum, Flowy_Event)]
  39. #[event_err = "FlowyError"]
  40. pub enum UserEvent {
  41. #[event()]
  42. InitUser = 0,
  43. #[event(input = "SignInPayloadPB", output = "UserProfilePB")]
  44. SignIn = 1,
  45. #[event(input = "SignUpPayloadPB", output = "UserProfilePB")]
  46. SignUp = 2,
  47. #[event(passthrough)]
  48. SignOut = 3,
  49. #[event(input = "UpdateUserProfilePayloadPB")]
  50. UpdateUserProfile = 4,
  51. #[event(output = "UserProfilePB")]
  52. GetUserProfile = 5,
  53. #[event(output = "UserProfilePB")]
  54. CheckUser = 6,
  55. #[event(input = "AppearanceSettingsPB")]
  56. SetAppearanceSetting = 7,
  57. #[event(output = "AppearanceSettingsPB")]
  58. GetAppearanceSetting = 8,
  59. #[event(output = "UserSettingPB")]
  60. GetUserSetting = 9,
  61. }