mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
chore: save group configuration
This commit is contained in:
parent
49601b66ef
commit
3c022d4de5
@ -287,9 +287,11 @@ impl GroupConfigurationWriter for GroupConfigurationWriterImpl {
|
||||
&self,
|
||||
field_id: &str,
|
||||
field_type: FieldTypeRevision,
|
||||
configuration: GroupConfigurationRevision,
|
||||
group_id: &str,
|
||||
mut_fn: impl FnOnce(&mut GroupConfigurationRevision),
|
||||
) -> AFFuture<FlowyResult<()>> {
|
||||
let user_id = self.user_id.clone();
|
||||
let group_id = group_id.to_owned();
|
||||
let rev_manager = self.rev_manager.clone();
|
||||
let view_pad = self.view_pad.clone();
|
||||
let field_id = field_id.to_owned();
|
||||
@ -298,13 +300,36 @@ impl GroupConfigurationWriter for GroupConfigurationWriterImpl {
|
||||
match view_pad
|
||||
.write()
|
||||
.await
|
||||
.insert_group_configuration(&field_id, &field_type, configuration)?
|
||||
.get_mut_group(&field_id, &field_type, &group_id, mut_fn)?
|
||||
{
|
||||
None => Ok(()),
|
||||
Some(changeset) => apply_change(&user_id, rev_manager, changeset).await,
|
||||
}
|
||||
})
|
||||
}
|
||||
// fn save_group_configuration(
|
||||
// &self,
|
||||
// field_id: &str,
|
||||
// field_type: FieldTypeRevision,
|
||||
//
|
||||
// configuration: GroupConfigurationRevision,
|
||||
// ) -> AFFuture<FlowyResult<()>> {
|
||||
// let user_id = self.user_id.clone();
|
||||
// let rev_manager = self.rev_manager.clone();
|
||||
// let view_pad = self.view_pad.clone();
|
||||
// let field_id = field_id.to_owned();
|
||||
//
|
||||
// wrap_future(async move {
|
||||
// match view_pad
|
||||
// .write()
|
||||
// .await
|
||||
// .insert_group_configuration(&field_id, &field_type, configuration)?
|
||||
// {
|
||||
// None => Ok(()),
|
||||
// Some(changeset) => apply_change(&user_id, rev_manager, changeset).await,
|
||||
// }
|
||||
// })
|
||||
// }
|
||||
}
|
||||
|
||||
pub fn make_grid_setting(view_pad: &GridViewRevisionPad, field_revs: &[Arc<FieldRevision>]) -> GridSettingPB {
|
||||
|
@ -10,12 +10,13 @@ pub trait GroupConfigurationReader: Send + Sync + 'static {
|
||||
fn get_group_configuration(&self, field_rev: Arc<FieldRevision>) -> AFFuture<Arc<GroupConfigurationRevision>>;
|
||||
}
|
||||
|
||||
pub trait GroupConfigurationWriter: Send + Sync + 'static {
|
||||
pub trait GroupConfigurationWriter: Send + Sync + 'static + ?Sized {
|
||||
fn save_group_configuration(
|
||||
&self,
|
||||
field_id: &str,
|
||||
field_type: FieldTypeRevision,
|
||||
configuration: GroupConfigurationRevision,
|
||||
group_id: &str,
|
||||
mut_fn: fn(&mut GroupConfigurationRevision),
|
||||
) -> AFFuture<FlowyResult<()>>;
|
||||
}
|
||||
|
||||
@ -44,7 +45,7 @@ where
|
||||
writer: Arc<dyn GroupConfigurationWriter>,
|
||||
) -> FlowyResult<Self> {
|
||||
let configuration_rev = reader.get_group_configuration(field_rev.clone()).await;
|
||||
let configuration = C::from_configuration_content(&configuration.content)?;
|
||||
let configuration = C::from_configuration_content(&configuration_rev.content)?;
|
||||
Ok(Self {
|
||||
field_rev,
|
||||
configuration_rev,
|
||||
@ -74,8 +75,17 @@ where
|
||||
&self,
|
||||
field_id: &str,
|
||||
field_type: FieldTypeRevision,
|
||||
configuration: GroupConfigurationRevision,
|
||||
group_id: &str,
|
||||
mut_fn: impl FnOnce(&mut GroupConfigurationRevision),
|
||||
) -> AFFuture<FlowyResult<()>> {
|
||||
(**self).save_group_configuration(field_id, field_type, configuration)
|
||||
todo!()
|
||||
}
|
||||
// fn save_group_configuration(
|
||||
// &self,
|
||||
// field_id: &str,
|
||||
// field_type: FieldTypeRevision,
|
||||
// configuration: GroupConfigurationRevision,
|
||||
// ) -> AFFuture<FlowyResult<()>> {
|
||||
// (**self).save_group_configuration(field_id, field_type, configuration)
|
||||
// }
|
||||
}
|
||||
|
@ -19,7 +19,7 @@ pub type CheckboxGroupController = GenericGroupController<
|
||||
pub type CheckboxGroupConfiguration = GenericGroupConfiguration<CheckboxGroupConfigurationRevision>;
|
||||
impl GroupConfigurationAction for CheckboxGroupConfiguration {
|
||||
fn group_records(&self) -> &[GroupRecordRevision] {
|
||||
vec![].as_slice()
|
||||
&[]
|
||||
}
|
||||
|
||||
fn merge_groups(&self, groups: Vec<Group>) -> FlowyResult<()> {
|
||||
|
@ -11,7 +11,8 @@ use flowy_grid_data_model::revision::{
|
||||
pub type SelectOptionGroupConfiguration = GenericGroupConfiguration<SelectOptionGroupConfigurationRevision>;
|
||||
impl GroupConfigurationAction for SelectOptionGroupConfiguration {
|
||||
fn group_records(&self) -> &[GroupRecordRevision] {
|
||||
self.configuration.as_slice()
|
||||
// self.configuration.as_slice()
|
||||
todo!()
|
||||
}
|
||||
|
||||
fn merge_groups(&self, groups: Vec<Group>) -> FlowyResult<()> {
|
||||
|
@ -66,6 +66,27 @@ impl GridViewRevisionPad {
|
||||
})
|
||||
}
|
||||
|
||||
pub fn get_mut_group<F: FnOnce(&mut GroupConfigurationRevision)>(
|
||||
&mut self,
|
||||
field_id: &str,
|
||||
field_type: &FieldTypeRevision,
|
||||
group_id: &str,
|
||||
mut_group_fn: F,
|
||||
) -> CollaborateResult<Option<GridViewRevisionChangeset>> {
|
||||
self.modify(|view| match view.groups.get_mut_objects(field_id, field_type) {
|
||||
None => Ok(None),
|
||||
Some(groups) => {
|
||||
for mut group in groups {
|
||||
if group.id == group_id {
|
||||
mut_group_fn(Arc::make_mut(&mut group));
|
||||
return Ok(Some(()));
|
||||
}
|
||||
}
|
||||
Ok(None)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
pub fn delete_group(
|
||||
&mut self,
|
||||
field_id: &str,
|
||||
|
Loading…
Reference in New Issue
Block a user