fix: using freeze to refactor the FieldInfo class (#3152)

This commit is contained in:
Nathan.fooo
2023-08-10 15:46:16 +08:00
committed by GitHub
parent d28846bbaa
commit 0c9935ccf2
45 changed files with 200 additions and 173 deletions

View File

@ -1,4 +1,5 @@
import 'dart:async'; import 'dart:async';
import 'package:appflowy/plugins/database_view/application/field/field_info.dart';
import 'package:appflowy/plugins/database_view/application/field/field_listener.dart'; import 'package:appflowy/plugins/database_view/application/field/field_listener.dart';
import 'package:appflowy/plugins/database_view/application/row/row_meta_listener.dart'; import 'package:appflowy/plugins/database_view/application/row/row_meta_listener.dart';
import 'package:appflowy/plugins/database_view/application/row/row_service.dart'; import 'package:appflowy/plugins/database_view/application/row/row_service.dart';
@ -8,7 +9,6 @@ import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart';
import 'package:dartz/dartz.dart'; import 'package:dartz/dartz.dart';
import 'package:equatable/equatable.dart'; import 'package:equatable/equatable.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import '../field/field_controller.dart';
import '../field/field_service.dart'; import '../field/field_service.dart';
import '../field/type_option/type_option_context.dart'; import '../field/type_option/type_option_context.dart';
import 'cell_listener.dart'; import 'cell_listener.dart';
@ -104,7 +104,7 @@ class CellController<T, D> extends Equatable {
); );
// Only the primary can listen on the row meta changes. // Only the primary can listen on the row meta changes.
if (_cellContext.fieldInfo.isPrimary) { if (_cellContext.fieldInfo.field.isPrimary) {
_rowMetaListener?.start( _rowMetaListener?.start(
callback: (newRowMeta) { callback: (newRowMeta) {
_cellContext = _cellContext.copyWith(rowMeta: newRowMeta); _cellContext = _cellContext.copyWith(rowMeta: newRowMeta);

View File

@ -15,7 +15,7 @@ import 'package:flutter/foundation.dart';
import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:freezed_annotation/freezed_annotation.dart';
import 'dart:convert' show utf8; import 'dart:convert' show utf8;
import '../field/field_controller.dart'; import '../field/field_info.dart';
import '../row/row_service.dart'; import '../row/row_service.dart';
part 'cell_service.freezed.dart'; part 'cell_service.freezed.dart';
part 'cell_data_loader.dart'; part 'cell_data_loader.dart';
@ -62,14 +62,14 @@ class DatabaseCellContext with _$DatabaseCellContext {
String get rowId => rowMeta.id; String get rowId => rowMeta.id;
String get fieldId => fieldInfo.id; String get fieldId => fieldInfo.field.id;
FieldType get fieldType => fieldInfo.fieldType; FieldType get fieldType => fieldInfo.field.fieldType;
ValueKey key() { ValueKey key() {
return ValueKey("${rowMeta.id}$fieldId${fieldInfo.fieldType}"); return ValueKey("${rowMeta.id}$fieldId${fieldInfo.field.fieldType}");
} }
/// Only the primary field can have an emoji. /// Only the primary field can have an emoji.
String? get emoji => fieldInfo.isPrimary ? rowMeta.icon : null; String? get emoji => fieldInfo.field.isPrimary ? rowMeta.icon : null;
} }

View File

@ -16,6 +16,7 @@ import 'package:dartz/dartz.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'database_view_service.dart'; import 'database_view_service.dart';
import 'defines.dart'; import 'defines.dart';
import 'field/field_info.dart';
import 'layout/layout_service.dart'; import 'layout/layout_service.dart';
import 'layout/layout_setting_listener.dart'; import 'layout/layout_setting_listener.dart';
import 'row/row_cache.dart'; import 'row/row_cache.dart';

View File

@ -7,7 +7,7 @@ import 'package:dartz/dartz.dart';
import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:freezed_annotation/freezed_annotation.dart';
import '../grid/presentation/widgets/filter/filter_info.dart'; import '../grid/presentation/widgets/filter/filter_info.dart';
import 'field/field_controller.dart'; import 'field/field_info.dart';
import 'row/row_cache.dart'; import 'row/row_cache.dart';
import 'row/row_service.dart'; import 'row/row_service.dart';

View File

@ -19,6 +19,7 @@ import '../setting/setting_listener.dart';
import '../setting/setting_service.dart'; import '../setting/setting_service.dart';
import '../sort/sort_listener.dart'; import '../sort/sort_listener.dart';
import '../sort/sort_service.dart'; import '../sort/sort_service.dart';
import 'field_info.dart';
import 'field_listener.dart'; import 'field_listener.dart';
class _GridFieldNotifier extends ChangeNotifier { class _GridFieldNotifier extends ChangeNotifier {
@ -438,12 +439,18 @@ class FieldController {
} }
void _updateFieldInfos() { void _updateFieldInfos() {
final List<FieldInfo> newFieldInfos = [];
for (final field in _fieldNotifier.fieldInfos) { for (final field in _fieldNotifier.fieldInfos) {
field._isGroupField = _groupConfigurationByFieldId[field.id] != null; newFieldInfos.add(
field._hasFilter = _filterPBByFieldId[field.id] != null; field.copyWith(
field._hasSort = _sortPBByFieldId[field.id] != null; isGroupField: _groupConfigurationByFieldId[field.id] != null,
hasFilter: _filterPBByFieldId[field.id] != null,
hasSort: _sortPBByFieldId[field.id] != null,
),
);
} }
_fieldNotifier.notify();
_fieldNotifier.fieldInfos = newFieldInfos;
} }
Future<void> dispose() async { Future<void> dispose() async {
@ -488,7 +495,7 @@ class FieldController {
} }
_fieldNotifier.fieldInfos = _fieldNotifier.fieldInfos =
newFields.map((field) => FieldInfo(field: field)).toList(); newFields.map((field) => FieldInfo.initial(field)).toList();
_loadFilters(); _loadFilters();
_loadSorts(); _loadSorts();
_updateFieldInfos(); _updateFieldInfos();
@ -652,7 +659,7 @@ class FieldController {
} }
final List<FieldInfo> newFieldInfos = fieldInfos; final List<FieldInfo> newFieldInfos = fieldInfos;
for (final indexField in insertedFields) { for (final indexField in insertedFields) {
final fieldInfo = FieldInfo(field: indexField.field_1); final fieldInfo = FieldInfo.initial(indexField.field_1);
if (newFieldInfos.length > indexField.index) { if (newFieldInfos.length > indexField.index) {
newFieldInfos.insert(indexField.index, fieldInfo); newFieldInfos.insert(indexField.index, fieldInfo);
} else { } else {
@ -674,7 +681,7 @@ class FieldController {
newFields.indexWhere((field) => field.id == updatedFieldPB.id); newFields.indexWhere((field) => field.id == updatedFieldPB.id);
if (index != -1) { if (index != -1) {
newFields.removeAt(index); newFields.removeAt(index);
final fieldInfo = FieldInfo(field: updatedFieldPB); final fieldInfo = FieldInfo.initial(updatedFieldPB);
newFields.insert(index, fieldInfo); newFields.insert(index, fieldInfo);
updatedFields.add(fieldInfo); updatedFields.add(fieldInfo);
} }
@ -693,7 +700,7 @@ class RowCacheDependenciesImpl extends RowFieldsDelegate with RowLifeCycle {
RowCacheDependenciesImpl(FieldController cache) : _fieldController = cache; RowCacheDependenciesImpl(FieldController cache) : _fieldController = cache;
@override @override
UnmodifiableListView<FieldInfo> get fields => UnmodifiableListView<FieldInfo> get fieldInfos =>
UnmodifiableListView(_fieldController.fieldInfos); UnmodifiableListView(_fieldController.fieldInfos);
@override @override
@ -729,75 +736,3 @@ FieldInfo? _findFieldInfo({
return null; return null;
} }
} }
class FieldInfo {
final FieldPB _field;
bool _isGroupField = false;
bool _hasFilter = false;
bool _hasSort = false;
String get id => _field.id;
FieldType get fieldType => _field.fieldType;
bool get visibility => _field.visibility;
double get width => _field.width.toDouble();
bool get isPrimary => _field.isPrimary;
String get name => _field.name;
FieldPB get field => _field;
bool get isGroupField => _isGroupField;
bool get hasFilter => _hasFilter;
bool get canBeGroup {
switch (_field.fieldType) {
case FieldType.URL:
case FieldType.Checkbox:
case FieldType.MultiSelect:
case FieldType.SingleSelect:
return true;
default:
return false;
}
}
bool get canCreateFilter {
if (hasFilter) return false;
switch (_field.fieldType) {
case FieldType.Checkbox:
case FieldType.MultiSelect:
case FieldType.RichText:
case FieldType.SingleSelect:
case FieldType.Checklist:
return true;
default:
return false;
}
}
bool get canCreateSort {
if (_hasSort) return false;
switch (_field.fieldType) {
case FieldType.RichText:
case FieldType.Checkbox:
case FieldType.Number:
case FieldType.DateTime:
case FieldType.SingleSelect:
case FieldType.MultiSelect:
return true;
default:
return false;
}
}
FieldInfo({required FieldPB field}) : _field = field;
}

View File

@ -0,0 +1,71 @@
import 'package:appflowy_backend/protobuf/flowy-database2/field_entities.pb.dart';
import 'package:freezed_annotation/freezed_annotation.dart';
part 'field_info.freezed.dart';
@freezed
class FieldInfo with _$FieldInfo {
const FieldInfo._();
const factory FieldInfo({
required FieldPB field,
required bool isGroupField,
required bool hasFilter,
required bool hasSort,
}) = _FieldInfo;
String get id => field.id;
FieldType get fieldType => field.fieldType;
String get name => field.name;
factory FieldInfo.initial(FieldPB field) => FieldInfo(
field: field,
hasFilter: false,
hasSort: false,
isGroupField: false,
);
bool get canBeGroup {
switch (field.fieldType) {
case FieldType.URL:
case FieldType.Checkbox:
case FieldType.MultiSelect:
case FieldType.SingleSelect:
return true;
default:
return false;
}
}
bool get canCreateFilter {
if (hasFilter) return false;
switch (field.fieldType) {
case FieldType.Checkbox:
case FieldType.MultiSelect:
case FieldType.RichText:
case FieldType.SingleSelect:
case FieldType.Checklist:
return true;
default:
return false;
}
}
bool get canCreateSort {
if (hasSort) return false;
switch (field.fieldType) {
case FieldType.RichText:
case FieldType.Checkbox:
case FieldType.Number:
case FieldType.DateTime:
case FieldType.SingleSelect:
case FieldType.MultiSelect:
return true;
default:
return false;
}
}
}

View File

@ -1,4 +1,3 @@
import 'package:appflowy/plugins/database_view/application/field/field_controller.dart';
import 'package:appflowy_backend/dispatch/dispatch.dart'; import 'package:appflowy_backend/dispatch/dispatch.dart';
import 'package:flowy_infra/notifier.dart'; import 'package:flowy_infra/notifier.dart';
import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart'; import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart';

View File

@ -1,4 +1,5 @@
import 'dart:collection'; import 'dart:collection';
import 'package:appflowy/plugins/database_view/application/field/field_info.dart';
import 'package:appflowy_backend/dispatch/dispatch.dart'; import 'package:appflowy_backend/dispatch/dispatch.dart';
import 'package:appflowy_backend/log.dart'; import 'package:appflowy_backend/log.dart';
import 'package:appflowy_backend/protobuf/flowy-database2/protobuf.dart'; import 'package:appflowy_backend/protobuf/flowy-database2/protobuf.dart';
@ -6,7 +7,6 @@ import 'package:flutter/foundation.dart';
import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:freezed_annotation/freezed_annotation.dart';
import '../cell/cell_service.dart'; import '../cell/cell_service.dart';
import '../field/field_controller.dart';
import 'row_list.dart'; import 'row_list.dart';
import 'row_service.dart'; import 'row_service.dart';
part 'row_cache.freezed.dart'; part 'row_cache.freezed.dart';
@ -15,7 +15,7 @@ typedef RowUpdateCallback = void Function();
/// A delegate that provides the fields of the row. /// A delegate that provides the fields of the row.
abstract class RowFieldsDelegate { abstract class RowFieldsDelegate {
UnmodifiableListView<FieldInfo> get fields; UnmodifiableListView<FieldInfo> get fieldInfos;
void onFieldsChanged(void Function(List<FieldInfo>) callback); void onFieldsChanged(void Function(List<FieldInfo>) callback);
} }
@ -244,12 +244,12 @@ class RowCache {
CellContextByFieldId _makeCells(RowMetaPB rowMeta) { CellContextByFieldId _makeCells(RowMetaPB rowMeta) {
// ignore: prefer_collection_literals // ignore: prefer_collection_literals
final cellContextMap = CellContextByFieldId(); final cellContextMap = CellContextByFieldId();
for (final field in _fieldDelegate.fields) { for (final fieldInfo in _fieldDelegate.fieldInfos) {
if (field.visibility) { if (fieldInfo.field.visibility) {
cellContextMap[field.id] = DatabaseCellContext( cellContextMap[fieldInfo.id] = DatabaseCellContext(
rowMeta: rowMeta, rowMeta: rowMeta,
viewId: viewId, viewId: viewId,
fieldInfo: field, fieldInfo: fieldInfo,
); );
} }
} }
@ -259,7 +259,7 @@ class RowCache {
RowInfo buildGridRow(RowMetaPB rowMetaPB) { RowInfo buildGridRow(RowMetaPB rowMetaPB) {
return RowInfo( return RowInfo(
viewId: viewId, viewId: viewId,
fields: _fieldDelegate.fields, fields: _fieldDelegate.fieldInfos,
rowId: rowMetaPB.id, rowId: rowMetaPB.id,
rowMeta: rowMetaPB, rowMeta: rowMetaPB,
); );

View File

@ -1,4 +1,5 @@
import 'package:appflowy/plugins/database_view/application/field/field_controller.dart'; import 'package:appflowy/plugins/database_view/application/field/field_controller.dart';
import 'package:appflowy/plugins/database_view/application/field/field_info.dart';
import 'package:appflowy_backend/log.dart'; import 'package:appflowy_backend/log.dart';
import 'package:appflowy_backend/protobuf/flowy-database2/field_entities.pb.dart'; import 'package:appflowy_backend/protobuf/flowy-database2/field_entities.pb.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
@ -26,8 +27,8 @@ class DatabaseGroupBloc extends Bloc<DatabaseGroupEvent, DatabaseGroupState> {
initial: () { initial: () {
_startListening(); _startListening();
}, },
didReceiveFieldUpdate: (fieldContexts) { didReceiveFieldUpdate: (fieldInfos) {
emit(state.copyWith(fieldContexts: fieldContexts)); emit(state.copyWith(fieldInfos: fieldInfos));
}, },
setGroupByField: (String fieldId, FieldType fieldType) async { setGroupByField: (String fieldId, FieldType fieldType) async {
final result = await _groupBackendSvc.groupByField( final result = await _groupBackendSvc.groupByField(
@ -50,8 +51,8 @@ class DatabaseGroupBloc extends Bloc<DatabaseGroupEvent, DatabaseGroupState> {
} }
void _startListening() { void _startListening() {
_onFieldsFn = (fieldContexts) => _onFieldsFn = (fieldInfos) =>
add(DatabaseGroupEvent.didReceiveFieldUpdate(fieldContexts)); add(DatabaseGroupEvent.didReceiveFieldUpdate(fieldInfos));
_fieldController.addListener( _fieldController.addListener(
onReceiveFields: _onFieldsFn, onReceiveFields: _onFieldsFn,
listenWhen: () => !isClosed, listenWhen: () => !isClosed,
@ -75,15 +76,15 @@ class DatabaseGroupEvent with _$DatabaseGroupEvent {
class DatabaseGroupState with _$DatabaseGroupState { class DatabaseGroupState with _$DatabaseGroupState {
const factory DatabaseGroupState({ const factory DatabaseGroupState({
required String viewId, required String viewId,
required List<FieldInfo> fieldContexts, required List<FieldInfo> fieldInfos,
}) = _DatabaseGroupState; }) = _DatabaseGroupState;
factory DatabaseGroupState.initial( factory DatabaseGroupState.initial(
String viewId, String viewId,
List<FieldInfo> fieldContexts, List<FieldInfo> fieldInfos,
) => ) =>
DatabaseGroupState( DatabaseGroupState(
viewId: viewId, viewId: viewId,
fieldContexts: fieldContexts, fieldInfos: fieldInfos,
); );
} }

View File

@ -1,4 +1,5 @@
import 'package:appflowy/plugins/database_view/application/field/field_controller.dart'; import 'package:appflowy/plugins/database_view/application/field/field_controller.dart';
import 'package:appflowy/plugins/database_view/application/field/field_info.dart';
import 'package:appflowy_backend/log.dart'; import 'package:appflowy_backend/log.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:freezed_annotation/freezed_annotation.dart';

View File

@ -2,6 +2,7 @@ import 'dart:async';
import 'dart:collection'; import 'dart:collection';
import 'package:appflowy/plugins/database_view/application/defines.dart'; import 'package:appflowy/plugins/database_view/application/defines.dart';
import 'package:appflowy/plugins/database_view/application/field/field_info.dart';
import 'package:appflowy/plugins/database_view/application/row/row_service.dart'; import 'package:appflowy/plugins/database_view/application/row/row_service.dart';
import 'package:appflowy_board/appflowy_board.dart'; import 'package:appflowy_board/appflowy_board.dart';
import 'package:dartz/dartz.dart'; import 'package:dartz/dartz.dart';

View File

@ -1,6 +1,7 @@
import 'package:appflowy/plugins/database_view/application/cell/cell_service.dart'; import 'package:appflowy/plugins/database_view/application/cell/cell_service.dart';
import 'package:appflowy/plugins/database_view/application/defines.dart'; import 'package:appflowy/plugins/database_view/application/defines.dart';
import 'package:appflowy/plugins/database_view/application/field/field_controller.dart'; import 'package:appflowy/plugins/database_view/application/field/field_controller.dart';
import 'package:appflowy/plugins/database_view/application/field/field_info.dart';
import 'package:appflowy/plugins/database_view/application/row/row_service.dart'; import 'package:appflowy/plugins/database_view/application/row/row_service.dart';
import 'package:appflowy_backend/dispatch/dispatch.dart'; import 'package:appflowy_backend/dispatch/dispatch.dart';
import 'package:appflowy_backend/log.dart'; import 'package:appflowy_backend/log.dart';

View File

@ -1,5 +1,6 @@
import 'package:appflowy/plugins/database_view/application/cell/cell_service.dart'; import 'package:appflowy/plugins/database_view/application/cell/cell_service.dart';
import 'package:appflowy/plugins/database_view/application/field/field_controller.dart'; import 'package:appflowy/plugins/database_view/application/field/field_controller.dart';
import 'package:appflowy/plugins/database_view/application/field/field_info.dart';
import 'package:appflowy/plugins/database_view/application/row/row_service.dart'; import 'package:appflowy/plugins/database_view/application/row/row_service.dart';
import 'package:appflowy_backend/dispatch/dispatch.dart'; import 'package:appflowy_backend/dispatch/dispatch.dart';
import 'package:appflowy_backend/log.dart'; import 'package:appflowy_backend/log.dart';

View File

@ -1,4 +1,5 @@
import 'package:appflowy/plugins/database_view/application/field/field_controller.dart'; import 'package:appflowy/plugins/database_view/application/field/field_controller.dart';
import 'package:appflowy/plugins/database_view/application/field/field_info.dart';
import 'package:appflowy/plugins/database_view/application/filter/filter_service.dart'; import 'package:appflowy/plugins/database_view/application/filter/filter_service.dart';
import 'package:dartz/dartz.dart'; import 'package:dartz/dartz.dart';
import 'package:appflowy_backend/protobuf/flowy-error/errors.pbserver.dart'; import 'package:appflowy_backend/protobuf/flowy-error/errors.pbserver.dart';

View File

@ -1,4 +1,5 @@
import 'package:appflowy/plugins/database_view/application/field/field_controller.dart'; import 'package:appflowy/plugins/database_view/application/field/field_controller.dart';
import 'package:appflowy/plugins/database_view/application/field/field_info.dart';
import 'package:appflowy/plugins/database_view/grid/presentation/widgets/filter/filter_info.dart'; import 'package:appflowy/plugins/database_view/grid/presentation/widgets/filter/filter_info.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:freezed_annotation/freezed_annotation.dart';

View File

@ -1,5 +1,6 @@
import 'dart:async'; import 'dart:async';
import 'package:appflowy/plugins/database_view/application/defines.dart'; import 'package:appflowy/plugins/database_view/application/defines.dart';
import 'package:appflowy/plugins/database_view/application/field/field_info.dart';
import 'package:appflowy/plugins/database_view/application/row/row_cache.dart'; import 'package:appflowy/plugins/database_view/application/row/row_cache.dart';
import 'package:appflowy/plugins/database_view/application/row/row_service.dart'; import 'package:appflowy/plugins/database_view/application/row/row_service.dart';
import 'package:appflowy/plugins/database_view/grid/presentation/widgets/filter/filter_info.dart'; import 'package:appflowy/plugins/database_view/grid/presentation/widgets/filter/filter_info.dart';
@ -10,7 +11,6 @@ import 'package:appflowy_backend/protobuf/flowy-folder2/view.pb.dart';
import 'package:appflowy_backend/protobuf/flowy-database2/protobuf.dart'; import 'package:appflowy_backend/protobuf/flowy-database2/protobuf.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:freezed_annotation/freezed_annotation.dart';
import '../../application/field/field_controller.dart';
import '../../application/database_controller.dart'; import '../../application/database_controller.dart';
import 'dart:collection'; import 'dart:collection';
@ -200,24 +200,25 @@ class GridState with _$GridState {
} }
class GridFieldEquatable extends Equatable { class GridFieldEquatable extends Equatable {
final List<FieldInfo> _fields; final List<FieldInfo> _fieldInfos;
const GridFieldEquatable( const GridFieldEquatable(
List<FieldInfo> fields, List<FieldInfo> fieldInfos,
) : _fields = fields; ) : _fieldInfos = fieldInfos;
@override @override
List<Object?> get props { List<Object?> get props {
if (_fields.isEmpty) { if (_fieldInfos.isEmpty) {
return []; return [];
} }
return [ return [
_fields.length, _fieldInfos.length,
_fields _fieldInfos
.map((field) => field.width) .map((fieldInfo) => fieldInfo.field.width)
.reduce((value, element) => value + element), .reduce((value, element) => value + element),
]; ];
} }
UnmodifiableListView<FieldInfo> get value => UnmodifiableListView(_fields); UnmodifiableListView<FieldInfo> get value =>
UnmodifiableListView(_fieldInfos);
} }

View File

@ -1,4 +1,5 @@
import 'package:appflowy/plugins/database_view/application/field/field_controller.dart'; import 'package:appflowy/plugins/database_view/application/field/field_controller.dart';
import 'package:appflowy/plugins/database_view/application/field/field_info.dart';
import 'package:appflowy_backend/log.dart'; import 'package:appflowy_backend/log.dart';
import 'package:appflowy_backend/protobuf/flowy-database2/field_entities.pb.dart'; import 'package:appflowy_backend/protobuf/flowy-database2/field_entities.pb.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
@ -26,7 +27,7 @@ class GridHeaderBloc extends Bloc<GridHeaderEvent, GridHeaderState> {
emit( emit(
state.copyWith( state.copyWith(
fields: value.fields fields: value.fields
.where((element) => element.visibility) .where((element) => element.field.visibility)
.toList(), .toList(),
), ),
); );

View File

@ -1,4 +1,5 @@
import 'dart:collection'; import 'dart:collection';
import 'package:appflowy/plugins/database_view/application/field/field_info.dart';
import 'package:appflowy/plugins/database_view/application/row/row_listener.dart'; import 'package:appflowy/plugins/database_view/application/row/row_listener.dart';
import 'package:appflowy_backend/protobuf/flowy-database2/protobuf.dart'; import 'package:appflowy_backend/protobuf/flowy-database2/protobuf.dart';
import 'package:equatable/equatable.dart'; import 'package:equatable/equatable.dart';
@ -7,7 +8,6 @@ import 'package:freezed_annotation/freezed_annotation.dart';
import 'dart:async'; import 'dart:async';
import '../../../application/cell/cell_service.dart'; import '../../../application/cell/cell_service.dart';
import '../../../application/field/field_controller.dart';
import '../../../application/row/row_cache.dart'; import '../../../application/row/row_cache.dart';
import '../../../application/row/row_controller.dart'; import '../../../application/row/row_controller.dart';
import '../../../application/row/row_service.dart'; import '../../../application/row/row_service.dart';
@ -119,16 +119,16 @@ class RowState with _$RowState {
} }
class GridCellEquatable extends Equatable { class GridCellEquatable extends Equatable {
final FieldInfo _fieldContext; final FieldInfo _fieldInfo;
const GridCellEquatable(FieldInfo field) : _fieldContext = field; const GridCellEquatable(FieldInfo field) : _fieldInfo = field;
@override @override
List<Object?> get props => [ List<Object?> get props => [
_fieldContext.id, _fieldInfo.id,
_fieldContext.fieldType, _fieldInfo.fieldType,
_fieldContext.visibility, _fieldInfo.field.visibility,
_fieldContext.width, _fieldInfo.field.width,
]; ];
} }

View File

@ -1,3 +1,4 @@
import 'package:appflowy/plugins/database_view/application/field/field_info.dart';
import 'package:dartz/dartz.dart'; import 'package:dartz/dartz.dart';
import 'package:appflowy_backend/protobuf/flowy-error/errors.pbserver.dart'; import 'package:appflowy_backend/protobuf/flowy-error/errors.pbserver.dart';
import 'package:appflowy_backend/protobuf/flowy-database2/sort_entities.pbenum.dart'; import 'package:appflowy_backend/protobuf/flowy-database2/sort_entities.pbenum.dart';

View File

@ -1,4 +1,5 @@
import 'package:appflowy/plugins/database_view/application/field/field_controller.dart'; import 'package:appflowy/plugins/database_view/application/field/field_controller.dart';
import 'package:appflowy/plugins/database_view/application/field/field_info.dart';
import 'package:appflowy/plugins/database_view/application/sort/sort_service.dart'; import 'package:appflowy/plugins/database_view/application/sort/sort_service.dart';
import 'package:appflowy/plugins/database_view/grid/presentation/widgets/sort/sort_info.dart'; import 'package:appflowy/plugins/database_view/grid/presentation/widgets/sort/sort_info.dart';
import 'package:appflowy_backend/protobuf/flowy-database2/sort_entities.pbenum.dart'; import 'package:appflowy_backend/protobuf/flowy-database2/sort_entities.pbenum.dart';

View File

@ -1,3 +1,4 @@
import 'package:appflowy/plugins/database_view/application/field/field_info.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:freezed_annotation/freezed_annotation.dart';
import 'dart:async'; import 'dart:async';

View File

@ -1,4 +1,4 @@
import '../../../application/field/field_controller.dart'; import 'package:appflowy/plugins/database_view/application/field/field_info.dart';
List<FieldInfo> getCreatableSorts(List<FieldInfo> fieldInfos) { List<FieldInfo> getCreatableSorts(List<FieldInfo> fieldInfos) {
final List<FieldInfo> creatableFields = List.from(fieldInfos); final List<FieldInfo> creatableFields = List.from(fieldInfos);

View File

@ -1,4 +1,4 @@
import 'package:appflowy/plugins/database_view/application/field/field_controller.dart'; import 'package:appflowy/plugins/database_view/application/field/field_info.dart';
import 'sizes.dart'; import 'sizes.dart';
class GridLayout { class GridLayout {
@ -6,7 +6,7 @@ class GridLayout {
if (fields.isEmpty) return 0; if (fields.isEmpty) return 0;
final fieldsWidth = fields final fieldsWidth = fields
.map((field) => field.width.toDouble()) .map((fieldInfo) => fieldInfo.field.width.toDouble())
.reduce((value, element) => value + element); .reduce((value, element) => value + element);
return fieldsWidth + return fieldsWidth +

View File

@ -109,7 +109,7 @@ class _CheckboxFilterEditorState extends State<CheckboxFilterEditor> {
children: [ children: [
Expanded( Expanded(
child: FlowyText( child: FlowyText(
state.filterInfo.fieldInfo.name, state.filterInfo.fieldInfo.field.name,
overflow: TextOverflow.ellipsis, overflow: TextOverflow.ellipsis,
), ),
), ),

View File

@ -93,7 +93,7 @@ class ChecklistState extends State<ChecklistFilterEditor> {
children: [ children: [
Expanded( Expanded(
child: FlowyText( child: FlowyText(
state.filterInfo.fieldInfo.name, state.filterInfo.fieldInfo.field.name,
overflow: TextOverflow.ellipsis, overflow: TextOverflow.ellipsis,
), ),
), ),

View File

@ -39,7 +39,7 @@ class ChoiceChipButton extends StatelessWidget {
decoration: decoration, decoration: decoration,
useIntrinsicWidth: true, useIntrinsicWidth: true,
text: FlowyText( text: FlowyText(
filterInfo.fieldInfo.name, filterInfo.fieldInfo.field.name,
color: AFThemeExtension.of(context).textColor, color: AFThemeExtension.of(context).textColor,
), ),
margin: const EdgeInsets.symmetric(horizontal: 8, vertical: 2), margin: const EdgeInsets.symmetric(horizontal: 8, vertical: 2),

View File

@ -144,7 +144,7 @@ class _SelectOptionFilterEditorState extends State<SelectOptionFilterEditor> {
children: [ children: [
Expanded( Expanded(
child: FlowyText( child: FlowyText(
state.filterInfo.fieldInfo.name, state.filterInfo.fieldInfo.field.name,
overflow: TextOverflow.ellipsis, overflow: TextOverflow.ellipsis,
), ),
), ),

View File

@ -1,4 +1,5 @@
import 'package:appflowy/generated/locale_keys.g.dart'; import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/plugins/database_view/application/field/field_info.dart';
import 'package:appflowy/plugins/database_view/grid/presentation/layout/sizes.dart'; import 'package:appflowy/plugins/database_view/grid/presentation/layout/sizes.dart';
import 'package:appflowy/plugins/database_view/grid/presentation/widgets/header/field_type_extension.dart'; import 'package:appflowy/plugins/database_view/grid/presentation/widgets/header/field_type_extension.dart';
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
@ -161,7 +162,7 @@ class GridFilterPropertyCell extends StatelessWidget {
return FlowyButton( return FlowyButton(
hoverColor: AFThemeExtension.of(context).lightGreyHover, hoverColor: AFThemeExtension.of(context).lightGreyHover,
text: FlowyText.medium( text: FlowyText.medium(
fieldInfo.name, fieldInfo.field.name,
color: AFThemeExtension.of(context).textColor, color: AFThemeExtension.of(context).textColor,
), ),
onTap: () => onTap(fieldInfo), onTap: () => onTap(fieldInfo),

View File

@ -1,4 +1,4 @@
import 'package:appflowy/plugins/database_view/application/field/field_controller.dart'; import 'package:appflowy/plugins/database_view/application/field/field_info.dart';
import 'package:appflowy_backend/protobuf/flowy-database2/checkbox_filter.pb.dart'; import 'package:appflowy_backend/protobuf/flowy-database2/checkbox_filter.pb.dart';
import 'package:appflowy_backend/protobuf/flowy-database2/checklist_filter.pb.dart'; import 'package:appflowy_backend/protobuf/flowy-database2/checklist_filter.pb.dart';
import 'package:appflowy_backend/protobuf/flowy-database2/date_filter.pb.dart'; import 'package:appflowy_backend/protobuf/flowy-database2/date_filter.pb.dart';

View File

@ -96,7 +96,7 @@ class _GridHeaderState extends State<_GridHeader> {
buildWhen: (previous, current) => previous.fields != current.fields, buildWhen: (previous, current) => previous.fields != current.fields,
builder: (context, state) { builder: (context, state) {
final cells = state.fields final cells = state.fields
.where((field) => field.visibility) .where((fieldInfo) => fieldInfo.field.visibility)
.map( .map(
(field) => FieldContext( (field) => FieldContext(
viewId: widget.viewId, viewId: widget.viewId,

View File

@ -1,6 +1,6 @@
import 'dart:typed_data'; import 'dart:typed_data';
import 'package:appflowy/plugins/database_view/application/field/field_controller.dart'; import 'package:appflowy/plugins/database_view/application/field/field_info.dart';
import 'package:appflowy/plugins/database_view/application/field/type_option/type_option_context.dart'; import 'package:appflowy/plugins/database_view/application/field/type_option/type_option_context.dart';
import 'package:appflowy/plugins/database_view/application/field/type_option/type_option_data_controller.dart'; import 'package:appflowy/plugins/database_view/application/field/type_option/type_option_data_controller.dart';
import 'package:appflowy_backend/protobuf/flowy-database2/checkbox_entities.pb.dart'; import 'package:appflowy_backend/protobuf/flowy-database2/checkbox_entities.pb.dart';

View File

@ -276,13 +276,13 @@ class RowContent extends StatelessWidget {
final GridCellWidget child = builder.build(cellId); final GridCellWidget child = builder.build(cellId);
return CellContainer( return CellContainer(
width: cellId.fieldInfo.width.toDouble(), width: cellId.fieldInfo.field.width.toDouble(),
isPrimary: cellId.fieldInfo.isPrimary, isPrimary: cellId.fieldInfo.field.isPrimary,
cellContainerNotifier: CellContainerNotifier(child), cellContainerNotifier: CellContainerNotifier(child),
accessoryBuilder: (buildContext) { accessoryBuilder: (buildContext) {
final builder = child.accessoryBuilder; final builder = child.accessoryBuilder;
final List<GridCellAccessoryBuilder> accessories = []; final List<GridCellAccessoryBuilder> accessories = [];
if (cellId.fieldInfo.isPrimary) { if (cellId.fieldInfo.field.isPrimary) {
accessories.add( accessories.add(
GridCellAccessoryBuilder( GridCellAccessoryBuilder(
builder: (key) => PrimaryCellAccessory( builder: (key) => PrimaryCellAccessory(

View File

@ -1,5 +1,6 @@
import 'package:appflowy/generated/locale_keys.g.dart'; import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/plugins/database_view/application/field/field_controller.dart'; import 'package:appflowy/plugins/database_view/application/field/field_controller.dart';
import 'package:appflowy/plugins/database_view/application/field/field_info.dart';
import 'package:appflowy/plugins/database_view/grid/application/sort/sort_create_bloc.dart'; import 'package:appflowy/plugins/database_view/grid/application/sort/sort_create_bloc.dart';
import 'package:appflowy/plugins/database_view/grid/presentation/layout/sizes.dart'; import 'package:appflowy/plugins/database_view/grid/presentation/layout/sizes.dart';
import 'package:appflowy/plugins/database_view/grid/presentation/widgets/header/field_type_extension.dart'; import 'package:appflowy/plugins/database_view/grid/presentation/widgets/header/field_type_extension.dart';

View File

@ -1,4 +1,4 @@
import 'package:appflowy/plugins/database_view/application/field/field_controller.dart'; import 'package:appflowy/plugins/database_view/application/field/field_info.dart';
import 'package:appflowy_backend/protobuf/flowy-database2/sort_entities.pb.dart'; import 'package:appflowy_backend/protobuf/flowy-database2/sort_entities.pb.dart';
class SortInfo { class SortInfo {

View File

@ -1,10 +1,10 @@
import 'package:appflowy/plugins/database_view/application/field/field_info.dart';
import 'package:appflowy_backend/protobuf/flowy-database2/date_entities.pb.dart'; import 'package:appflowy_backend/protobuf/flowy-database2/date_entities.pb.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:freezed_annotation/freezed_annotation.dart';
import 'dart:async'; import 'dart:async';
import '../../../application/cell/cell_controller_builder.dart'; import '../../../application/cell/cell_controller_builder.dart';
import '../../../application/field/field_controller.dart';
part 'date_card_cell_bloc.freezed.dart'; part 'date_card_cell_bloc.freezed.dart';
class DateCardCellBloc extends Bloc<DateCardCellEvent, DateCardCellState> { class DateCardCellBloc extends Bloc<DateCardCellEvent, DateCardCellState> {

View File

@ -1,4 +1,5 @@
import 'package:appflowy/plugins/database_view/application/field/field_controller.dart'; import 'package:appflowy/plugins/database_view/application/field/field_controller.dart';
import 'package:appflowy/plugins/database_view/application/field/field_info.dart';
import 'package:appflowy/plugins/database_view/application/field/type_option/type_option_context.dart'; import 'package:appflowy/plugins/database_view/application/field/type_option/type_option_context.dart';
import 'package:appflowy/plugins/database_view/application/setting/property_bloc.dart'; import 'package:appflowy/plugins/database_view/application/setting/property_bloc.dart';
import 'package:appflowy/plugins/database_view/grid/presentation/widgets/header/field_type_extension.dart'; import 'package:appflowy/plugins/database_view/grid/presentation/widgets/header/field_type_extension.dart';
@ -95,7 +96,7 @@ class _GridPropertyCellState extends State<_GridPropertyCell> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final checkmark = svgWidget( final checkmark = svgWidget(
widget.fieldInfo.visibility ? 'home/show' : 'home/hide', widget.fieldInfo.field.visibility ? 'home/show' : 'home/hide',
color: Theme.of(context).iconTheme.color, color: Theme.of(context).iconTheme.color,
); );
@ -130,7 +131,7 @@ class _GridPropertyCellState extends State<_GridPropertyCell> {
context.read<DatabasePropertyBloc>().add( context.read<DatabasePropertyBloc>().add(
DatabasePropertyEvent.setFieldVisibility( DatabasePropertyEvent.setFieldVisibility(
widget.fieldInfo.id, widget.fieldInfo.id,
!widget.fieldInfo.visibility, !widget.fieldInfo.field.visibility,
), ),
); );
}, },

View File

@ -1,4 +1,5 @@
import 'package:appflowy/plugins/database_view/application/field/field_controller.dart'; import 'package:appflowy/plugins/database_view/application/field/field_controller.dart';
import 'package:appflowy/plugins/database_view/application/field/field_info.dart';
import 'package:appflowy/plugins/database_view/application/setting/group_bloc.dart'; import 'package:appflowy/plugins/database_view/application/setting/group_bloc.dart';
import 'package:appflowy/plugins/database_view/grid/presentation/layout/sizes.dart'; import 'package:appflowy/plugins/database_view/grid/presentation/layout/sizes.dart';
import 'package:appflowy/plugins/database_view/grid/presentation/widgets/header/field_type_extension.dart'; import 'package:appflowy/plugins/database_view/grid/presentation/widgets/header/field_type_extension.dart';
@ -30,8 +31,9 @@ class DatabaseGroupList extends StatelessWidget {
fieldController: fieldController, fieldController: fieldController,
)..add(const DatabaseGroupEvent.initial()), )..add(const DatabaseGroupEvent.initial()),
child: BlocBuilder<DatabaseGroupBloc, DatabaseGroupState>( child: BlocBuilder<DatabaseGroupBloc, DatabaseGroupState>(
buildWhen: (previous, current) => true,
builder: (context, state) { builder: (context, state) {
final cells = state.fieldContexts.map((fieldInfo) { final cells = state.fieldInfos.map((fieldInfo) {
Widget cell = _GridGroupCell( Widget cell = _GridGroupCell(
fieldInfo: fieldInfo, fieldInfo: fieldInfo,
onSelected: () => onDismissed(), onSelected: () => onDismissed(),

View File

@ -1,7 +1,7 @@
import 'dart:async'; import 'dart:async';
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart'; import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
import 'package:appflowy/plugins/database_view/application/field/field_controller.dart'; import 'package:appflowy/plugins/database_view/application/field/field_info.dart';
import 'package:appflowy_backend/protobuf/flowy-database2/date_entities.pb.dart'; import 'package:appflowy_backend/protobuf/flowy-database2/date_entities.pb.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:freezed_annotation/freezed_annotation.dart';

View File

@ -44,7 +44,7 @@ class RowPropertyList extends StatelessWidget {
// The rest of the fields are displayed in the order of the field // The rest of the fields are displayed in the order of the field
// list // list
...state.cells ...state.cells
.where((element) => !element.fieldInfo.isPrimary) .where((element) => !element.fieldInfo.field.isPrimary)
.map( .map(
(cell) => _PropertyCell( (cell) => _PropertyCell(
cellContext: cell, cellContext: cell,

View File

@ -2,6 +2,7 @@ import 'package:appflowy/plugins/database_view/application/cell/cell_controller.
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart'; import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
import 'package:appflowy/plugins/database_view/application/field/field_controller.dart'; import 'package:appflowy/plugins/database_view/application/field/field_controller.dart';
import 'package:appflowy/plugins/database_view/application/field/field_editor_bloc.dart'; import 'package:appflowy/plugins/database_view/application/field/field_editor_bloc.dart';
import 'package:appflowy/plugins/database_view/application/field/field_info.dart';
import 'package:appflowy/plugins/database_view/application/field/field_service.dart'; import 'package:appflowy/plugins/database_view/application/field/field_service.dart';
import 'package:appflowy/plugins/database_view/application/field/type_option/type_option_context.dart'; import 'package:appflowy/plugins/database_view/application/field/type_option/type_option_context.dart';
import 'package:appflowy/plugins/database_view/application/row/row_cache.dart'; import 'package:appflowy/plugins/database_view/application/row/row_cache.dart';

View File

@ -2,6 +2,7 @@ import 'package:appflowy/plugins/database_view/application/cell/cell_controller.
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart'; import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
import 'package:appflowy/plugins/database_view/application/field/field_controller.dart'; import 'package:appflowy/plugins/database_view/application/field/field_controller.dart';
import 'package:appflowy/plugins/database_view/application/field/field_editor_bloc.dart'; import 'package:appflowy/plugins/database_view/application/field/field_editor_bloc.dart';
import 'package:appflowy/plugins/database_view/application/field/field_info.dart';
import 'package:appflowy/plugins/database_view/application/field/field_service.dart'; import 'package:appflowy/plugins/database_view/application/field/field_service.dart';
import 'package:appflowy/plugins/database_view/application/field/type_option/type_option_context.dart'; import 'package:appflowy/plugins/database_view/application/field/type_option/type_option_context.dart';
import 'package:appflowy/plugins/database_view/application/field/type_option/type_option_service.dart'; import 'package:appflowy/plugins/database_view/application/field/type_option/type_option_service.dart';
@ -149,7 +150,7 @@ Future<FieldEditorBloc> createFieldEditor({
field: data.field_2, field: data.field_2,
); );
return FieldEditorBloc( return FieldEditorBloc(
isGroupField: FieldInfo(field: data.field_2).isGroupField, isGroupField: FieldInfo.initial(data.field_2).isGroupField,
loader: loader, loader: loader,
field: data.field_2, field: data.field_2,
); );

View File

@ -34,13 +34,13 @@ default = ["custom-protocol"]
custom-protocol = ["tauri/custom-protocol"] custom-protocol = ["tauri/custom-protocol"]
[patch.crates-io] [patch.crates-io]
collab = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "aac4e56" } collab = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "ba963f" }
collab-folder = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "aac4e56" } collab-folder = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "ba963f" }
collab-persistence = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "aac4e56" } collab-persistence = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "ba963f" }
collab-document = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "aac4e56" } collab-document = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "ba963f" }
collab-database = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "aac4e56" } collab-database = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "ba963f" }
appflowy-integrate = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "aac4e56" } appflowy-integrate = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "ba963f" }
collab-plugins = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "aac4e56" } collab-plugins = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "ba963f" }
#collab = { path = "../../../../AppFlowy-Collab/collab" } #collab = { path = "../../../../AppFlowy-Collab/collab" }
#collab-folder = { path = "../../../../AppFlowy-Collab/collab-folder" } #collab-folder = { path = "../../../../AppFlowy-Collab/collab-folder" }

View File

@ -96,7 +96,7 @@ checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8"
[[package]] [[package]]
name = "appflowy-integrate" name = "appflowy-integrate"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=aac4e56#aac4e56bdb6a61598697283582d369a7af85d9c8" source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=ba963f#ba963fa299d294e5b2cafd940b9eaa8520280b7b"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"collab", "collab",
@ -925,7 +925,7 @@ dependencies = [
[[package]] [[package]]
name = "collab" name = "collab"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=aac4e56#aac4e56bdb6a61598697283582d369a7af85d9c8" source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=ba963f#ba963fa299d294e5b2cafd940b9eaa8520280b7b"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"bytes", "bytes",
@ -943,7 +943,7 @@ dependencies = [
[[package]] [[package]]
name = "collab-client-ws" name = "collab-client-ws"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=aac4e56#aac4e56bdb6a61598697283582d369a7af85d9c8" source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=ba963f#ba963fa299d294e5b2cafd940b9eaa8520280b7b"
dependencies = [ dependencies = [
"bytes", "bytes",
"collab-sync", "collab-sync",
@ -961,7 +961,7 @@ dependencies = [
[[package]] [[package]]
name = "collab-database" name = "collab-database"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=aac4e56#aac4e56bdb6a61598697283582d369a7af85d9c8" source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=ba963f#ba963fa299d294e5b2cafd940b9eaa8520280b7b"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"async-trait", "async-trait",
@ -988,7 +988,7 @@ dependencies = [
[[package]] [[package]]
name = "collab-derive" name = "collab-derive"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=aac4e56#aac4e56bdb6a61598697283582d369a7af85d9c8" source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=ba963f#ba963fa299d294e5b2cafd940b9eaa8520280b7b"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@ -1000,7 +1000,7 @@ dependencies = [
[[package]] [[package]]
name = "collab-document" name = "collab-document"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=aac4e56#aac4e56bdb6a61598697283582d369a7af85d9c8" source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=ba963f#ba963fa299d294e5b2cafd940b9eaa8520280b7b"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"collab", "collab",
@ -1019,7 +1019,7 @@ dependencies = [
[[package]] [[package]]
name = "collab-folder" name = "collab-folder"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=aac4e56#aac4e56bdb6a61598697283582d369a7af85d9c8" source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=ba963f#ba963fa299d294e5b2cafd940b9eaa8520280b7b"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"chrono", "chrono",
@ -1039,7 +1039,7 @@ dependencies = [
[[package]] [[package]]
name = "collab-persistence" name = "collab-persistence"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=aac4e56#aac4e56bdb6a61598697283582d369a7af85d9c8" source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=ba963f#ba963fa299d294e5b2cafd940b9eaa8520280b7b"
dependencies = [ dependencies = [
"bincode", "bincode",
"chrono", "chrono",
@ -1059,7 +1059,7 @@ dependencies = [
[[package]] [[package]]
name = "collab-plugins" name = "collab-plugins"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=aac4e56#aac4e56bdb6a61598697283582d369a7af85d9c8" source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=ba963f#ba963fa299d294e5b2cafd940b9eaa8520280b7b"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"async-trait", "async-trait",
@ -1089,7 +1089,7 @@ dependencies = [
[[package]] [[package]]
name = "collab-sync" name = "collab-sync"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=aac4e56#aac4e56bdb6a61598697283582d369a7af85d9c8" source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=ba963f#ba963fa299d294e5b2cafd940b9eaa8520280b7b"
dependencies = [ dependencies = [
"bytes", "bytes",
"collab", "collab",

View File

@ -38,17 +38,17 @@ opt-level = 3
incremental = false incremental = false
[patch.crates-io] [patch.crates-io]
collab = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "aac4e56" } collab = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "ba963f" }
collab-folder = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "aac4e56" } collab-folder = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "ba963f" }
collab-document = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "aac4e56" } collab-document = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "ba963f" }
collab-database = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "aac4e56" } collab-database = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "ba963f" }
appflowy-integrate = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "aac4e56" } appflowy-integrate = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "ba963f" }
collab-plugins = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "aac4e56" } collab-plugins = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "ba963f" }
#
#collab = { path = "../../../AppFlowy-Collab/collab" } #collab = { path = "../AppFlowy-Collab/collab" }
#collab-folder = { path = "../../../AppFlowy-Collab/collab-folder" } #collab-folder = { path = "../AppFlowy-Collab/collab-folder" }
#collab-database= { path = "../../../AppFlowy-Collab/collab-database" } #collab-database= { path = "../AppFlowy-Collab/collab-database" }
#collab-document = { path = "../../../AppFlowy-Collab/collab-document" } #collab-document = { path = "../AppFlowy-Collab/collab-document" }
#collab-plugins = { path = "../../../AppFlowy-Collab/collab-plugins" } #collab-plugins = { path = "../AppFlowy-Collab/collab-plugins" }
#appflowy-integrate = { path = "../../../AppFlowy-Collab/appflowy-integrate" } #appflowy-integrate = { path = "../AppFlowy-Collab/appflowy-integrate" }

View File

@ -134,7 +134,9 @@ impl DatabaseEditor {
let field = database.fields.get_field(field_id); let field = database.fields.get_field(field_id);
if let Some(field) = field { if let Some(field) = field {
let group_setting = default_group_setting(&field); let group_setting = default_group_setting(&field);
database.insert_group_setting(view_id, group_setting); database.views.update_database_view(view_id, |view| {
view.set_groups(vec![group_setting.into()]);
});
} }
} }