Skip to content

Commit 03ed206

Browse files
committed
fix: can not delete row from no status group
1 parent 4529c61 commit 03ed206

File tree

8 files changed

+43
-34
lines changed

8 files changed

+43
-34
lines changed

frontend/rust-lib/flowy-grid/src/services/block_manager.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ impl GridBlockManager {
5757
Ok(self.get_block_editor(&block_id).await?)
5858
}
5959

60+
#[tracing::instrument(level = "trace", skip(self, start_row_id), err)]
6061
pub(crate) async fn create_row(&self, row_rev: RowRevision, start_row_id: Option<String>) -> FlowyResult<i32> {
6162
let block_id = row_rev.block_id.clone();
6263
let _ = self.persistence.insert(&row_rev.block_id, &row_rev.id)?;

frontend/rust-lib/flowy-grid/src/services/grid_editor.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -420,6 +420,7 @@ impl GridRevisionEditor {
420420

421421
pub async fn delete_row(&self, row_id: &str) -> FlowyResult<()> {
422422
let row_rev = self.block_manager.delete_row(row_id).await?;
423+
tracing::trace!("Did delete row:{:?}", row_rev);
423424
if let Some(row_rev) = row_rev {
424425
self.view_manager.did_delete_row(row_rev).await;
425426
}

frontend/rust-lib/flowy-grid/src/services/grid_view_editor.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,13 +109,15 @@ impl GridViewRevisionEditor {
109109
}
110110
}
111111

112+
#[tracing::instrument(level = "trace", skip_all)]
112113
pub(crate) async fn did_delete_row(&self, row_rev: &RowRevision) {
113114
// Send the group notification if the current view has groups;
114115
let changesets = self
115116
.mut_group_controller(|group_controller, field_rev| group_controller.did_delete_row(row_rev, &field_rev))
116117
.await;
117118

118119
if let Some(changesets) = changesets {
120+
tracing::trace!("{:?}", changesets);
119121
for changeset in changesets {
120122
self.notify_did_update_group(changeset).await;
121123
}

frontend/rust-lib/flowy-grid/src/services/group/configuration.rs

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -92,17 +92,33 @@ where
9292
})
9393
}
9494

95+
pub(crate) fn get_default_group(&self) -> &Group {
96+
&self.default_group
97+
}
98+
99+
pub(crate) fn get_mut_default_group(&mut self) -> &mut Group {
100+
&mut self.default_group
101+
}
102+
95103
/// Returns the groups without the default group
96-
pub(crate) fn concrete_groups(&self) -> Vec<&Group> {
104+
pub(crate) fn groups(&self) -> Vec<&Group> {
97105
self.groups_map.values().collect()
98106
}
99107

100-
pub(crate) fn default_group(&self) -> &Group {
101-
&self.default_group
108+
pub(crate) fn get_mut_group(&mut self, group_id: &str) -> Option<&mut Group> {
109+
self.groups_map.get_mut(group_id)
110+
}
111+
112+
// Returns the index and group specified by the group_id
113+
pub(crate) fn get_group(&self, group_id: &str) -> Option<(usize, &Group)> {
114+
match (self.groups_map.get_index_of(group_id), self.groups_map.get(group_id)) {
115+
(Some(index), Some(group)) => Some((index, group)),
116+
_ => None,
117+
}
102118
}
103119

104120
/// Iterate mut the groups. The default group will be the last one that get mutated.
105-
pub(crate) fn iter_mut_groups(&mut self, mut each: impl FnMut(&mut Group)) {
121+
pub(crate) fn iter_mut_all_groups(&mut self, mut each: impl FnMut(&mut Group)) {
106122
self.groups_map.iter_mut().for_each(|(_, group)| {
107123
each(group);
108124
});
@@ -253,22 +269,6 @@ where
253269
Ok(())
254270
}
255271

256-
pub(crate) fn get_mut_default_group(&mut self) -> &mut Group {
257-
&mut self.default_group
258-
}
259-
260-
pub(crate) fn get_mut_group(&mut self, group_id: &str) -> Option<&mut Group> {
261-
self.groups_map.get_mut(group_id)
262-
}
263-
264-
// Returns the index and group specified by the group_id
265-
pub(crate) fn get_group(&self, group_id: &str) -> Option<(usize, &Group)> {
266-
match (self.groups_map.get_index_of(group_id), self.groups_map.get(group_id)) {
267-
(Some(index), Some(group)) => Some((index, group)),
268-
_ => None,
269-
}
270-
}
271-
272272
pub fn save_configuration(&self) -> FlowyResult<()> {
273273
let configuration = (&*self.configuration).clone();
274274
let writer = self.writer.clone();

frontend/rust-lib/flowy-grid/src/services/group/controller.rs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -183,11 +183,11 @@ where
183183

184184
fn groups(&self) -> Vec<Group> {
185185
if self.use_default_group() {
186-
let mut groups: Vec<Group> = self.group_ctx.concrete_groups().into_iter().cloned().collect();
187-
groups.push(self.group_ctx.default_group().clone());
186+
let mut groups: Vec<Group> = self.group_ctx.groups().into_iter().cloned().collect();
187+
groups.push(self.group_ctx.get_default_group().clone());
188188
groups
189189
} else {
190-
self.group_ctx.concrete_groups().into_iter().cloned().collect()
190+
self.group_ctx.groups().into_iter().cloned().collect()
191191
}
192192
}
193193

@@ -208,7 +208,7 @@ where
208208
let mut grouped_rows: Vec<GroupedRow> = vec![];
209209
let cell_bytes = decode_any_cell_data(cell_rev.data, field_rev);
210210
let cell_data = cell_bytes.parser::<P>()?;
211-
for group in self.group_ctx.concrete_groups() {
211+
for group in self.group_ctx.groups() {
212212
if self.can_group(&group.filter_content, &cell_data) {
213213
grouped_rows.push(GroupedRow {
214214
row: row_rev.into(),
@@ -264,12 +264,17 @@ where
264264
row_rev: &RowRevision,
265265
field_rev: &FieldRevision,
266266
) -> FlowyResult<Vec<GroupChangesetPB>> {
267+
// if the cell_rev is none, then the row must be crated from the default group.
267268
if let Some(cell_rev) = row_rev.cells.get(&self.field_id) {
268269
let cell_bytes = decode_any_cell_data(cell_rev.data.clone(), field_rev);
269270
let cell_data = cell_bytes.parser::<P>()?;
270271
Ok(self.remove_row_if_match(row_rev, &cell_data))
271272
} else {
272-
Ok(vec![])
273+
let group = self.group_ctx.get_default_group();
274+
Ok(vec![GroupChangesetPB::delete(
275+
group.id.clone(),
276+
vec![row_rev.id.clone()],
277+
)])
273278
}
274279
}
275280

frontend/rust-lib/flowy-grid/src/services/group/controller_impls/checkbox_controller.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ impl GroupAction for CheckboxGroupController {
4141

4242
fn add_row_if_match(&mut self, row_rev: &RowRevision, cell_data: &Self::CellDataType) -> Vec<GroupChangesetPB> {
4343
let mut changesets = vec![];
44-
self.group_ctx.iter_mut_groups(|group| {
44+
self.group_ctx.iter_mut_all_groups(|group| {
4545
let mut changeset = GroupChangesetPB::new(group.id.clone());
4646
let is_contained = group.contains_row(&row_rev.id);
4747
if group.id == CHECK && cell_data.is_check() {
@@ -63,7 +63,7 @@ impl GroupAction for CheckboxGroupController {
6363

6464
fn remove_row_if_match(&mut self, row_rev: &RowRevision, _cell_data: &Self::CellDataType) -> Vec<GroupChangesetPB> {
6565
let mut changesets = vec![];
66-
self.group_ctx.iter_mut_groups(|group| {
66+
self.group_ctx.iter_mut_all_groups(|group| {
6767
let mut changeset = GroupChangesetPB::new(group.id.clone());
6868
if group.contains_row(&row_rev.id) {
6969
changeset.deleted_rows.push(row_rev.id.clone());
@@ -79,7 +79,7 @@ impl GroupAction for CheckboxGroupController {
7979

8080
fn move_row(&mut self, _cell_data: &Self::CellDataType, mut context: MoveGroupRowContext) -> Vec<GroupChangesetPB> {
8181
let mut group_changeset = vec![];
82-
self.group_ctx.iter_mut_groups(|group| {
82+
self.group_ctx.iter_mut_all_groups(|group| {
8383
if let Some(changeset) = move_group_row(group, &mut context) {
8484
group_changeset.push(changeset);
8585
}

frontend/rust-lib/flowy-grid/src/services/group/controller_impls/select_option_controller/multi_select_controller.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ impl GroupAction for MultiSelectGroupController {
2828

2929
fn add_row_if_match(&mut self, row_rev: &RowRevision, cell_data: &Self::CellDataType) -> Vec<GroupChangesetPB> {
3030
let mut changesets = vec![];
31-
self.group_ctx.iter_mut_groups(|group| {
31+
self.group_ctx.iter_mut_all_groups(|group| {
3232
if let Some(changeset) = add_select_option_row(group, cell_data, row_rev) {
3333
changesets.push(changeset);
3434
}
@@ -38,7 +38,7 @@ impl GroupAction for MultiSelectGroupController {
3838

3939
fn remove_row_if_match(&mut self, row_rev: &RowRevision, cell_data: &Self::CellDataType) -> Vec<GroupChangesetPB> {
4040
let mut changesets = vec![];
41-
self.group_ctx.iter_mut_groups(|group| {
41+
self.group_ctx.iter_mut_all_groups(|group| {
4242
if let Some(changeset) = remove_select_option_row(group, cell_data, row_rev) {
4343
changesets.push(changeset);
4444
}
@@ -48,7 +48,7 @@ impl GroupAction for MultiSelectGroupController {
4848

4949
fn move_row(&mut self, _cell_data: &Self::CellDataType, mut context: MoveGroupRowContext) -> Vec<GroupChangesetPB> {
5050
let mut group_changeset = vec![];
51-
self.group_ctx.iter_mut_groups(|group| {
51+
self.group_ctx.iter_mut_all_groups(|group| {
5252
if let Some(changeset) = move_group_row(group, &mut context) {
5353
group_changeset.push(changeset);
5454
}

frontend/rust-lib/flowy-grid/src/services/group/controller_impls/select_option_controller/single_select_controller.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ impl GroupAction for SingleSelectGroupController {
2828

2929
fn add_row_if_match(&mut self, row_rev: &RowRevision, cell_data: &Self::CellDataType) -> Vec<GroupChangesetPB> {
3030
let mut changesets = vec![];
31-
self.group_ctx.iter_mut_groups(|group| {
31+
self.group_ctx.iter_mut_all_groups(|group| {
3232
if let Some(changeset) = add_select_option_row(group, cell_data, row_rev) {
3333
changesets.push(changeset);
3434
}
@@ -38,7 +38,7 @@ impl GroupAction for SingleSelectGroupController {
3838

3939
fn remove_row_if_match(&mut self, row_rev: &RowRevision, cell_data: &Self::CellDataType) -> Vec<GroupChangesetPB> {
4040
let mut changesets = vec![];
41-
self.group_ctx.iter_mut_groups(|group| {
41+
self.group_ctx.iter_mut_all_groups(|group| {
4242
if let Some(changeset) = remove_select_option_row(group, cell_data, row_rev) {
4343
changesets.push(changeset);
4444
}
@@ -48,7 +48,7 @@ impl GroupAction for SingleSelectGroupController {
4848

4949
fn move_row(&mut self, _cell_data: &Self::CellDataType, mut context: MoveGroupRowContext) -> Vec<GroupChangesetPB> {
5050
let mut group_changeset = vec![];
51-
self.group_ctx.iter_mut_groups(|group| {
51+
self.group_ctx.iter_mut_all_groups(|group| {
5252
if let Some(changeset) = move_group_row(group, &mut context) {
5353
group_changeset.push(changeset);
5454
}

0 commit comments

Comments
 (0)