mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
refactor: remove shared instance KV (#3123)
* refactor: remove shared instance KV * test: enable document test
This commit is contained in:
@ -1,33 +1,56 @@
|
||||
use std::sync::Weak;
|
||||
|
||||
use flowy_error::{FlowyError, FlowyResult};
|
||||
use flowy_sqlite::kv::KV;
|
||||
use lib_dispatch::prelude::{data_result_ok, AFPluginData, DataResult};
|
||||
use flowy_sqlite::kv::StorePreferences;
|
||||
use lib_dispatch::prelude::{data_result_ok, AFPluginData, AFPluginState, DataResult};
|
||||
|
||||
use crate::entities::{KeyPB, KeyValuePB};
|
||||
|
||||
pub(crate) async fn set_key_value_handler(data: AFPluginData<KeyValuePB>) -> FlowyResult<()> {
|
||||
pub(crate) async fn set_key_value_handler(
|
||||
store_preferences: AFPluginState<Weak<StorePreferences>>,
|
||||
data: AFPluginData<KeyValuePB>,
|
||||
) -> FlowyResult<()> {
|
||||
let data = data.into_inner();
|
||||
match data.value {
|
||||
None => KV::remove(&data.key),
|
||||
Some(value) => {
|
||||
KV::set_str(&data.key, value);
|
||||
},
|
||||
|
||||
if let Some(store_preferences) = store_preferences.upgrade() {
|
||||
match data.value {
|
||||
None => store_preferences.remove(&data.key),
|
||||
Some(value) => {
|
||||
store_preferences.set_str(&data.key, value);
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub(crate) async fn get_key_value_handler(
|
||||
store_preferences: AFPluginState<Weak<StorePreferences>>,
|
||||
data: AFPluginData<KeyPB>,
|
||||
) -> DataResult<KeyValuePB, FlowyError> {
|
||||
let data = data.into_inner();
|
||||
let value = KV::get_str(&data.key);
|
||||
data_result_ok(KeyValuePB {
|
||||
key: data.key,
|
||||
value,
|
||||
})
|
||||
match store_preferences.upgrade() {
|
||||
None => Err(FlowyError::internal().context("The store preferences is already drop"))?,
|
||||
Some(store_preferences) => {
|
||||
let data = data.into_inner();
|
||||
let value = store_preferences.get_str(&data.key);
|
||||
data_result_ok(KeyValuePB {
|
||||
key: data.key,
|
||||
value,
|
||||
})
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) async fn remove_key_value_handler(data: AFPluginData<KeyPB>) -> FlowyResult<()> {
|
||||
let data = data.into_inner();
|
||||
KV::remove(&data.key);
|
||||
Ok(())
|
||||
pub(crate) async fn remove_key_value_handler(
|
||||
store_preferences: AFPluginState<Weak<StorePreferences>>,
|
||||
data: AFPluginData<KeyPB>,
|
||||
) -> FlowyResult<()> {
|
||||
match store_preferences.upgrade() {
|
||||
None => Err(FlowyError::internal().context("The store preferences is already drop"))?,
|
||||
Some(store_preferences) => {
|
||||
let data = data.into_inner();
|
||||
store_preferences.remove(&data.key);
|
||||
Ok(())
|
||||
},
|
||||
}
|
||||
}
|
||||
|
@ -1,13 +1,17 @@
|
||||
use std::sync::Weak;
|
||||
|
||||
use strum_macros::Display;
|
||||
|
||||
use flowy_derive::{Flowy_Event, ProtoBuf_Enum};
|
||||
use flowy_sqlite::kv::StorePreferences;
|
||||
use lib_dispatch::prelude::AFPlugin;
|
||||
|
||||
use crate::event_handler::*;
|
||||
|
||||
pub fn init() -> AFPlugin {
|
||||
pub fn init(store_preferences: Weak<StorePreferences>) -> AFPlugin {
|
||||
AFPlugin::new()
|
||||
.name(env!("CARGO_PKG_NAME"))
|
||||
.state(store_preferences)
|
||||
.event(ConfigEvent::SetKeyValue, set_key_value_handler)
|
||||
.event(ConfigEvent::GetKeyValue, get_key_value_handler)
|
||||
.event(ConfigEvent::RemoveKeyValue, remove_key_value_handler)
|
||||
|
Reference in New Issue
Block a user