import 'dart:collection'; // TODO(RS): remove dependency on presentation code import 'package:appflowy/plugins/database/grid/presentation/widgets/filter/filter_info.dart'; import 'package:appflowy/plugins/database/grid/presentation/widgets/sort/sort_info.dart'; import 'package:appflowy_backend/protobuf/flowy-database2/database_entities.pb.dart'; import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart'; import 'package:dartz/dartz.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'field/field_info.dart'; import 'row/row_cache.dart'; import 'row/row_service.dart'; part 'defines.freezed.dart'; typedef OnFieldsChanged = void Function(UnmodifiableListView); typedef OnFiltersChanged = void Function(List); typedef OnSortsChanged = void Function(List); typedef OnDatabaseChanged = void Function(DatabasePB); typedef OnRowsCreated = void Function(List rowIds); typedef OnRowsUpdated = void Function( List rowIds, ChangedReason reason, ); typedef OnRowsDeleted = void Function(List rowIds); typedef OnNumOfRowsChanged = void Function( UnmodifiableListView rows, UnmodifiableMapView rowById, ChangedReason reason, ); typedef OnError = void Function(FlowyError); @freezed class LoadingState with _$LoadingState { const factory LoadingState.idle() = _Idle; const factory LoadingState.loading() = _Loading; const factory LoadingState.finish( Either successOrFail, ) = _Finish; const LoadingState._(); bool isLoading() => this is _Loading; }