event_handler.rs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. use std::sync::Weak;
  2. use flowy_error::{FlowyError, FlowyResult};
  3. use flowy_sqlite::kv::StorePreferences;
  4. use lib_dispatch::prelude::{data_result_ok, AFPluginData, AFPluginState, DataResult};
  5. use crate::entities::{KeyPB, KeyValuePB};
  6. pub(crate) async fn set_key_value_handler(
  7. store_preferences: AFPluginState<Weak<StorePreferences>>,
  8. data: AFPluginData<KeyValuePB>,
  9. ) -> FlowyResult<()> {
  10. let data = data.into_inner();
  11. if let Some(store_preferences) = store_preferences.upgrade() {
  12. match data.value {
  13. None => store_preferences.remove(&data.key),
  14. Some(value) => {
  15. store_preferences.set_str(&data.key, value);
  16. },
  17. }
  18. }
  19. Ok(())
  20. }
  21. pub(crate) async fn get_key_value_handler(
  22. store_preferences: AFPluginState<Weak<StorePreferences>>,
  23. data: AFPluginData<KeyPB>,
  24. ) -> DataResult<KeyValuePB, FlowyError> {
  25. match store_preferences.upgrade() {
  26. None => Err(FlowyError::internal().context("The store preferences is already drop"))?,
  27. Some(store_preferences) => {
  28. let data = data.into_inner();
  29. let value = store_preferences.get_str(&data.key);
  30. data_result_ok(KeyValuePB {
  31. key: data.key,
  32. value,
  33. })
  34. },
  35. }
  36. }
  37. pub(crate) async fn remove_key_value_handler(
  38. store_preferences: AFPluginState<Weak<StorePreferences>>,
  39. data: AFPluginData<KeyPB>,
  40. ) -> FlowyResult<()> {
  41. match store_preferences.upgrade() {
  42. None => Err(FlowyError::internal().context("The store preferences is already drop"))?,
  43. Some(store_preferences) => {
  44. let data = data.into_inner();
  45. store_preferences.remove(&data.key);
  46. Ok(())
  47. },
  48. }
  49. }