mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
refactor: move row params
This commit is contained in:
@ -21,7 +21,7 @@ part 'board_bloc.freezed.dart';
|
||||
class BoardBloc extends Bloc<BoardEvent, BoardState> {
|
||||
final BoardDataController _dataController;
|
||||
late final AFBoardDataController afBoardDataController;
|
||||
List<GroupController> groupControllers = [];
|
||||
Map<String, GroupController> groupControllers = {};
|
||||
|
||||
GridFieldCache get fieldCache => _dataController.fieldCache;
|
||||
String get gridId => _dataController.gridId;
|
||||
@ -38,13 +38,17 @@ class BoardBloc extends Bloc<BoardEvent, BoardState> {
|
||||
columnId,
|
||||
fromIndex,
|
||||
toIndex,
|
||||
) {},
|
||||
) {
|
||||
groupControllers[columnId]?.moveRow(fromIndex, toIndex);
|
||||
},
|
||||
onMoveColumnItemToColumn: (
|
||||
fromColumnId,
|
||||
fromIndex,
|
||||
toColumnId,
|
||||
toIndex,
|
||||
) {},
|
||||
) {
|
||||
//
|
||||
},
|
||||
);
|
||||
|
||||
on<BoardEvent>(
|
||||
@ -84,7 +88,7 @@ class BoardBloc extends Bloc<BoardEvent, BoardState> {
|
||||
@override
|
||||
Future<void> close() async {
|
||||
await _dataController.dispose();
|
||||
for (final controller in groupControllers) {
|
||||
for (final controller in groupControllers.values) {
|
||||
controller.dispose();
|
||||
}
|
||||
return super.close();
|
||||
@ -94,11 +98,12 @@ class BoardBloc extends Bloc<BoardEvent, BoardState> {
|
||||
for (final group in groups) {
|
||||
final delegate = GroupControllerDelegateImpl(afBoardDataController);
|
||||
final controller = GroupController(
|
||||
gridId: state.gridId,
|
||||
group: group,
|
||||
delegate: delegate,
|
||||
);
|
||||
controller.startListening();
|
||||
groupControllers.add(controller);
|
||||
groupControllers[controller.group.groupId] = (controller);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,8 +1,12 @@
|
||||
import 'package:app_flowy/plugins/grid/application/row/row_service.dart';
|
||||
import 'package:flowy_sdk/log.dart';
|
||||
import 'package:flowy_sdk/protobuf/flowy-error/errors.pb.dart';
|
||||
import 'package:flowy_sdk/protobuf/flowy-grid/protobuf.dart';
|
||||
|
||||
import 'group_listener.dart';
|
||||
|
||||
typedef OnGroupError = void Function(FlowyError);
|
||||
|
||||
abstract class GroupControllerDelegate {
|
||||
void removeRow(String groupId, String rowId);
|
||||
void insertRow(String groupId, RowPB row, int? index);
|
||||
@ -12,12 +16,36 @@ abstract class GroupControllerDelegate {
|
||||
class GroupController {
|
||||
final GroupPB group;
|
||||
final GroupListener _listener;
|
||||
final MoveRowFFIService _rowService;
|
||||
final GroupControllerDelegate delegate;
|
||||
OnGroupError? _onError;
|
||||
|
||||
GroupController({required this.group, required this.delegate})
|
||||
: _listener = GroupListener(group);
|
||||
GroupController({
|
||||
required String gridId,
|
||||
required this.group,
|
||||
required this.delegate,
|
||||
}) : _rowService = MoveRowFFIService(gridId: gridId),
|
||||
_listener = GroupListener(group);
|
||||
|
||||
void startListening() {
|
||||
Future<void> moveRow(int fromIndex, int toIndex) async {
|
||||
if (fromIndex < group.rows.length && toIndex < group.rows.length) {
|
||||
final fromRow = group.rows[fromIndex];
|
||||
final toRow = group.rows[toIndex];
|
||||
|
||||
final result = await _rowService.moveRow(
|
||||
rowId: fromRow.id,
|
||||
fromIndex: fromIndex,
|
||||
toIndex: toIndex,
|
||||
upperRowId: toRow.id,
|
||||
layout: GridLayout.Board,
|
||||
);
|
||||
|
||||
result.fold((l) => null, (r) => _onError?.call(r));
|
||||
}
|
||||
}
|
||||
|
||||
void startListening({OnGroupError? onError}) {
|
||||
_onError = onError;
|
||||
_listener.start(onGroupChanged: (result) {
|
||||
result.fold(
|
||||
(GroupRowsChangesetPB changeset) {
|
||||
|
Reference in New Issue
Block a user