event_map.rs 2.3 KB

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