mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
refactor: add grid view info
This commit is contained in:
parent
a13e6798ee
commit
820b7fcb75
@ -17,7 +17,6 @@ analyzer:
|
|||||||
- "packages/flowy_editor/**"
|
- "packages/flowy_editor/**"
|
||||||
- "packages/editor/**"
|
- "packages/editor/**"
|
||||||
# - "packages/flowy_infra_ui/**"
|
# - "packages/flowy_infra_ui/**"
|
||||||
|
|
||||||
linter:
|
linter:
|
||||||
# The lint rules applied to this project can be customized in the
|
# The lint rules applied to this project can be customized in the
|
||||||
# section below to disable rules from the `package:flutter_lints/flutter.yaml`
|
# section below to disable rules from the `package:flutter_lints/flutter.yaml`
|
||||||
|
@ -28,7 +28,7 @@ class BoardPluginBuilder implements PluginBuilder {
|
|||||||
|
|
||||||
class BoardPluginConfig implements PluginConfig {
|
class BoardPluginConfig implements PluginConfig {
|
||||||
@override
|
@override
|
||||||
bool get creatable => true;
|
bool get creatable => false;
|
||||||
}
|
}
|
||||||
|
|
||||||
class BoardPlugin extends Plugin {
|
class BoardPlugin extends Plugin {
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
analyzer:
|
analyzer:
|
||||||
exclude:
|
exclude:
|
||||||
- "**/*.g.dart"
|
- "**/*.g.dart"
|
||||||
|
- "**/*.pb.dart"
|
||||||
- "**/*.freezed.dart"
|
- "**/*.freezed.dart"
|
||||||
|
@ -287,23 +287,6 @@ class FolderEventReadViewInfo {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class FolderEventUpdateViewInfo {
|
|
||||||
UpdateViewInfoPayload request;
|
|
||||||
FolderEventUpdateViewInfo(this.request);
|
|
||||||
|
|
||||||
Future<Either<ViewInfo, FlowyError>> send() {
|
|
||||||
final request = FFIRequest.create()
|
|
||||||
..event = FolderEvent.UpdateViewInfo.toString()
|
|
||||||
..payload = requestToBytes(this.request);
|
|
||||||
|
|
||||||
return Dispatch.asyncRequest(request)
|
|
||||||
.then((bytesResult) => bytesResult.fold(
|
|
||||||
(okBytes) => left(ViewInfo.fromBuffer(okBytes)),
|
|
||||||
(errBytes) => right(FlowyError.fromBuffer(errBytes)),
|
|
||||||
));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class FolderEventCopyLink {
|
class FolderEventCopyLink {
|
||||||
FolderEventCopyLink();
|
FolderEventCopyLink();
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@ class ViewInfo extends $pb.GeneratedMessage {
|
|||||||
..aOS(4, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'desc')
|
..aOS(4, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'desc')
|
||||||
..e<$0.ViewDataType>(5, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'dataType', $pb.PbFieldType.OE, defaultOrMaker: $0.ViewDataType.TextBlock, valueOf: $0.ViewDataType.valueOf, enumValues: $0.ViewDataType.values)
|
..e<$0.ViewDataType>(5, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'dataType', $pb.PbFieldType.OE, defaultOrMaker: $0.ViewDataType.TextBlock, valueOf: $0.ViewDataType.valueOf, enumValues: $0.ViewDataType.values)
|
||||||
..aOM<$0.RepeatedView>(6, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'belongings', subBuilder: $0.RepeatedView.create)
|
..aOM<$0.RepeatedView>(6, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'belongings', subBuilder: $0.RepeatedView.create)
|
||||||
..aOM<ViewExtData>(7, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'extData', subBuilder: ViewExtData.create)
|
..aOS(7, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'extData')
|
||||||
..hasRequiredFields = false
|
..hasRequiredFields = false
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -33,7 +33,7 @@ class ViewInfo extends $pb.GeneratedMessage {
|
|||||||
$core.String? desc,
|
$core.String? desc,
|
||||||
$0.ViewDataType? dataType,
|
$0.ViewDataType? dataType,
|
||||||
$0.RepeatedView? belongings,
|
$0.RepeatedView? belongings,
|
||||||
ViewExtData? extData,
|
$core.String? extData,
|
||||||
}) {
|
}) {
|
||||||
final _result = create();
|
final _result = create();
|
||||||
if (id != null) {
|
if (id != null) {
|
||||||
@ -137,397 +137,12 @@ class ViewInfo extends $pb.GeneratedMessage {
|
|||||||
$0.RepeatedView ensureBelongings() => $_ensure(5);
|
$0.RepeatedView ensureBelongings() => $_ensure(5);
|
||||||
|
|
||||||
@$pb.TagNumber(7)
|
@$pb.TagNumber(7)
|
||||||
ViewExtData get extData => $_getN(6);
|
$core.String get extData => $_getSZ(6);
|
||||||
@$pb.TagNumber(7)
|
@$pb.TagNumber(7)
|
||||||
set extData(ViewExtData v) { setField(7, v); }
|
set extData($core.String v) { $_setString(6, v); }
|
||||||
@$pb.TagNumber(7)
|
@$pb.TagNumber(7)
|
||||||
$core.bool hasExtData() => $_has(6);
|
$core.bool hasExtData() => $_has(6);
|
||||||
@$pb.TagNumber(7)
|
@$pb.TagNumber(7)
|
||||||
void clearExtData() => clearField(7);
|
void clearExtData() => clearField(7);
|
||||||
@$pb.TagNumber(7)
|
|
||||||
ViewExtData ensureExtData() => $_ensure(6);
|
|
||||||
}
|
|
||||||
|
|
||||||
class ViewExtData extends $pb.GeneratedMessage {
|
|
||||||
static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'ViewExtData', createEmptyInstance: create)
|
|
||||||
..aOM<ViewFilter>(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'filter', subBuilder: ViewFilter.create)
|
|
||||||
..aOM<ViewGroup>(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'group', subBuilder: ViewGroup.create)
|
|
||||||
..aOM<ViewSort>(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'sort', subBuilder: ViewSort.create)
|
|
||||||
..hasRequiredFields = false
|
|
||||||
;
|
|
||||||
|
|
||||||
ViewExtData._() : super();
|
|
||||||
factory ViewExtData({
|
|
||||||
ViewFilter? filter,
|
|
||||||
ViewGroup? group,
|
|
||||||
ViewSort? sort,
|
|
||||||
}) {
|
|
||||||
final _result = create();
|
|
||||||
if (filter != null) {
|
|
||||||
_result.filter = filter;
|
|
||||||
}
|
|
||||||
if (group != null) {
|
|
||||||
_result.group = group;
|
|
||||||
}
|
|
||||||
if (sort != null) {
|
|
||||||
_result.sort = sort;
|
|
||||||
}
|
|
||||||
return _result;
|
|
||||||
}
|
|
||||||
factory ViewExtData.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
|
|
||||||
factory ViewExtData.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
|
|
||||||
@$core.Deprecated(
|
|
||||||
'Using this can add significant overhead to your binary. '
|
|
||||||
'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
|
|
||||||
'Will be removed in next major version')
|
|
||||||
ViewExtData clone() => ViewExtData()..mergeFromMessage(this);
|
|
||||||
@$core.Deprecated(
|
|
||||||
'Using this can add significant overhead to your binary. '
|
|
||||||
'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
|
|
||||||
'Will be removed in next major version')
|
|
||||||
ViewExtData copyWith(void Function(ViewExtData) updates) => super.copyWith((message) => updates(message as ViewExtData)) as ViewExtData; // ignore: deprecated_member_use
|
|
||||||
$pb.BuilderInfo get info_ => _i;
|
|
||||||
@$core.pragma('dart2js:noInline')
|
|
||||||
static ViewExtData create() => ViewExtData._();
|
|
||||||
ViewExtData createEmptyInstance() => create();
|
|
||||||
static $pb.PbList<ViewExtData> createRepeated() => $pb.PbList<ViewExtData>();
|
|
||||||
@$core.pragma('dart2js:noInline')
|
|
||||||
static ViewExtData getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<ViewExtData>(create);
|
|
||||||
static ViewExtData? _defaultInstance;
|
|
||||||
|
|
||||||
@$pb.TagNumber(1)
|
|
||||||
ViewFilter get filter => $_getN(0);
|
|
||||||
@$pb.TagNumber(1)
|
|
||||||
set filter(ViewFilter v) { setField(1, v); }
|
|
||||||
@$pb.TagNumber(1)
|
|
||||||
$core.bool hasFilter() => $_has(0);
|
|
||||||
@$pb.TagNumber(1)
|
|
||||||
void clearFilter() => clearField(1);
|
|
||||||
@$pb.TagNumber(1)
|
|
||||||
ViewFilter ensureFilter() => $_ensure(0);
|
|
||||||
|
|
||||||
@$pb.TagNumber(2)
|
|
||||||
ViewGroup get group => $_getN(1);
|
|
||||||
@$pb.TagNumber(2)
|
|
||||||
set group(ViewGroup v) { setField(2, v); }
|
|
||||||
@$pb.TagNumber(2)
|
|
||||||
$core.bool hasGroup() => $_has(1);
|
|
||||||
@$pb.TagNumber(2)
|
|
||||||
void clearGroup() => clearField(2);
|
|
||||||
@$pb.TagNumber(2)
|
|
||||||
ViewGroup ensureGroup() => $_ensure(1);
|
|
||||||
|
|
||||||
@$pb.TagNumber(3)
|
|
||||||
ViewSort get sort => $_getN(2);
|
|
||||||
@$pb.TagNumber(3)
|
|
||||||
set sort(ViewSort v) { setField(3, v); }
|
|
||||||
@$pb.TagNumber(3)
|
|
||||||
$core.bool hasSort() => $_has(2);
|
|
||||||
@$pb.TagNumber(3)
|
|
||||||
void clearSort() => clearField(3);
|
|
||||||
@$pb.TagNumber(3)
|
|
||||||
ViewSort ensureSort() => $_ensure(2);
|
|
||||||
}
|
|
||||||
|
|
||||||
class ViewFilter extends $pb.GeneratedMessage {
|
|
||||||
static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'ViewFilter', createEmptyInstance: create)
|
|
||||||
..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'objectId')
|
|
||||||
..hasRequiredFields = false
|
|
||||||
;
|
|
||||||
|
|
||||||
ViewFilter._() : super();
|
|
||||||
factory ViewFilter({
|
|
||||||
$core.String? objectId,
|
|
||||||
}) {
|
|
||||||
final _result = create();
|
|
||||||
if (objectId != null) {
|
|
||||||
_result.objectId = objectId;
|
|
||||||
}
|
|
||||||
return _result;
|
|
||||||
}
|
|
||||||
factory ViewFilter.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
|
|
||||||
factory ViewFilter.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
|
|
||||||
@$core.Deprecated(
|
|
||||||
'Using this can add significant overhead to your binary. '
|
|
||||||
'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
|
|
||||||
'Will be removed in next major version')
|
|
||||||
ViewFilter clone() => ViewFilter()..mergeFromMessage(this);
|
|
||||||
@$core.Deprecated(
|
|
||||||
'Using this can add significant overhead to your binary. '
|
|
||||||
'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
|
|
||||||
'Will be removed in next major version')
|
|
||||||
ViewFilter copyWith(void Function(ViewFilter) updates) => super.copyWith((message) => updates(message as ViewFilter)) as ViewFilter; // ignore: deprecated_member_use
|
|
||||||
$pb.BuilderInfo get info_ => _i;
|
|
||||||
@$core.pragma('dart2js:noInline')
|
|
||||||
static ViewFilter create() => ViewFilter._();
|
|
||||||
ViewFilter createEmptyInstance() => create();
|
|
||||||
static $pb.PbList<ViewFilter> createRepeated() => $pb.PbList<ViewFilter>();
|
|
||||||
@$core.pragma('dart2js:noInline')
|
|
||||||
static ViewFilter getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<ViewFilter>(create);
|
|
||||||
static ViewFilter? _defaultInstance;
|
|
||||||
|
|
||||||
@$pb.TagNumber(1)
|
|
||||||
$core.String get objectId => $_getSZ(0);
|
|
||||||
@$pb.TagNumber(1)
|
|
||||||
set objectId($core.String v) { $_setString(0, v); }
|
|
||||||
@$pb.TagNumber(1)
|
|
||||||
$core.bool hasObjectId() => $_has(0);
|
|
||||||
@$pb.TagNumber(1)
|
|
||||||
void clearObjectId() => clearField(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
enum ViewGroup_OneOfSubGroupObjectId {
|
|
||||||
subGroupObjectId,
|
|
||||||
notSet
|
|
||||||
}
|
|
||||||
|
|
||||||
class ViewGroup extends $pb.GeneratedMessage {
|
|
||||||
static const $core.Map<$core.int, ViewGroup_OneOfSubGroupObjectId> _ViewGroup_OneOfSubGroupObjectIdByTag = {
|
|
||||||
2 : ViewGroup_OneOfSubGroupObjectId.subGroupObjectId,
|
|
||||||
0 : ViewGroup_OneOfSubGroupObjectId.notSet
|
|
||||||
};
|
|
||||||
static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'ViewGroup', createEmptyInstance: create)
|
|
||||||
..oo(0, [2])
|
|
||||||
..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'groupObjectId')
|
|
||||||
..aOS(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'subGroupObjectId')
|
|
||||||
..hasRequiredFields = false
|
|
||||||
;
|
|
||||||
|
|
||||||
ViewGroup._() : super();
|
|
||||||
factory ViewGroup({
|
|
||||||
$core.String? groupObjectId,
|
|
||||||
$core.String? subGroupObjectId,
|
|
||||||
}) {
|
|
||||||
final _result = create();
|
|
||||||
if (groupObjectId != null) {
|
|
||||||
_result.groupObjectId = groupObjectId;
|
|
||||||
}
|
|
||||||
if (subGroupObjectId != null) {
|
|
||||||
_result.subGroupObjectId = subGroupObjectId;
|
|
||||||
}
|
|
||||||
return _result;
|
|
||||||
}
|
|
||||||
factory ViewGroup.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
|
|
||||||
factory ViewGroup.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
|
|
||||||
@$core.Deprecated(
|
|
||||||
'Using this can add significant overhead to your binary. '
|
|
||||||
'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
|
|
||||||
'Will be removed in next major version')
|
|
||||||
ViewGroup clone() => ViewGroup()..mergeFromMessage(this);
|
|
||||||
@$core.Deprecated(
|
|
||||||
'Using this can add significant overhead to your binary. '
|
|
||||||
'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
|
|
||||||
'Will be removed in next major version')
|
|
||||||
ViewGroup copyWith(void Function(ViewGroup) updates) => super.copyWith((message) => updates(message as ViewGroup)) as ViewGroup; // ignore: deprecated_member_use
|
|
||||||
$pb.BuilderInfo get info_ => _i;
|
|
||||||
@$core.pragma('dart2js:noInline')
|
|
||||||
static ViewGroup create() => ViewGroup._();
|
|
||||||
ViewGroup createEmptyInstance() => create();
|
|
||||||
static $pb.PbList<ViewGroup> createRepeated() => $pb.PbList<ViewGroup>();
|
|
||||||
@$core.pragma('dart2js:noInline')
|
|
||||||
static ViewGroup getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<ViewGroup>(create);
|
|
||||||
static ViewGroup? _defaultInstance;
|
|
||||||
|
|
||||||
ViewGroup_OneOfSubGroupObjectId whichOneOfSubGroupObjectId() => _ViewGroup_OneOfSubGroupObjectIdByTag[$_whichOneof(0)]!;
|
|
||||||
void clearOneOfSubGroupObjectId() => clearField($_whichOneof(0));
|
|
||||||
|
|
||||||
@$pb.TagNumber(1)
|
|
||||||
$core.String get groupObjectId => $_getSZ(0);
|
|
||||||
@$pb.TagNumber(1)
|
|
||||||
set groupObjectId($core.String v) { $_setString(0, v); }
|
|
||||||
@$pb.TagNumber(1)
|
|
||||||
$core.bool hasGroupObjectId() => $_has(0);
|
|
||||||
@$pb.TagNumber(1)
|
|
||||||
void clearGroupObjectId() => clearField(1);
|
|
||||||
|
|
||||||
@$pb.TagNumber(2)
|
|
||||||
$core.String get subGroupObjectId => $_getSZ(1);
|
|
||||||
@$pb.TagNumber(2)
|
|
||||||
set subGroupObjectId($core.String v) { $_setString(1, v); }
|
|
||||||
@$pb.TagNumber(2)
|
|
||||||
$core.bool hasSubGroupObjectId() => $_has(1);
|
|
||||||
@$pb.TagNumber(2)
|
|
||||||
void clearSubGroupObjectId() => clearField(2);
|
|
||||||
}
|
|
||||||
|
|
||||||
class ViewSort extends $pb.GeneratedMessage {
|
|
||||||
static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'ViewSort', createEmptyInstance: create)
|
|
||||||
..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'objectId')
|
|
||||||
..hasRequiredFields = false
|
|
||||||
;
|
|
||||||
|
|
||||||
ViewSort._() : super();
|
|
||||||
factory ViewSort({
|
|
||||||
$core.String? objectId,
|
|
||||||
}) {
|
|
||||||
final _result = create();
|
|
||||||
if (objectId != null) {
|
|
||||||
_result.objectId = objectId;
|
|
||||||
}
|
|
||||||
return _result;
|
|
||||||
}
|
|
||||||
factory ViewSort.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
|
|
||||||
factory ViewSort.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
|
|
||||||
@$core.Deprecated(
|
|
||||||
'Using this can add significant overhead to your binary. '
|
|
||||||
'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
|
|
||||||
'Will be removed in next major version')
|
|
||||||
ViewSort clone() => ViewSort()..mergeFromMessage(this);
|
|
||||||
@$core.Deprecated(
|
|
||||||
'Using this can add significant overhead to your binary. '
|
|
||||||
'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
|
|
||||||
'Will be removed in next major version')
|
|
||||||
ViewSort copyWith(void Function(ViewSort) updates) => super.copyWith((message) => updates(message as ViewSort)) as ViewSort; // ignore: deprecated_member_use
|
|
||||||
$pb.BuilderInfo get info_ => _i;
|
|
||||||
@$core.pragma('dart2js:noInline')
|
|
||||||
static ViewSort create() => ViewSort._();
|
|
||||||
ViewSort createEmptyInstance() => create();
|
|
||||||
static $pb.PbList<ViewSort> createRepeated() => $pb.PbList<ViewSort>();
|
|
||||||
@$core.pragma('dart2js:noInline')
|
|
||||||
static ViewSort getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<ViewSort>(create);
|
|
||||||
static ViewSort? _defaultInstance;
|
|
||||||
|
|
||||||
@$pb.TagNumber(1)
|
|
||||||
$core.String get objectId => $_getSZ(0);
|
|
||||||
@$pb.TagNumber(1)
|
|
||||||
set objectId($core.String v) { $_setString(0, v); }
|
|
||||||
@$pb.TagNumber(1)
|
|
||||||
$core.bool hasObjectId() => $_has(0);
|
|
||||||
@$pb.TagNumber(1)
|
|
||||||
void clearObjectId() => clearField(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
enum UpdateViewInfoPayload_OneOfFilter {
|
|
||||||
filter,
|
|
||||||
notSet
|
|
||||||
}
|
|
||||||
|
|
||||||
enum UpdateViewInfoPayload_OneOfGroup {
|
|
||||||
group,
|
|
||||||
notSet
|
|
||||||
}
|
|
||||||
|
|
||||||
enum UpdateViewInfoPayload_OneOfSort {
|
|
||||||
sort,
|
|
||||||
notSet
|
|
||||||
}
|
|
||||||
|
|
||||||
class UpdateViewInfoPayload extends $pb.GeneratedMessage {
|
|
||||||
static const $core.Map<$core.int, UpdateViewInfoPayload_OneOfFilter> _UpdateViewInfoPayload_OneOfFilterByTag = {
|
|
||||||
2 : UpdateViewInfoPayload_OneOfFilter.filter,
|
|
||||||
0 : UpdateViewInfoPayload_OneOfFilter.notSet
|
|
||||||
};
|
|
||||||
static const $core.Map<$core.int, UpdateViewInfoPayload_OneOfGroup> _UpdateViewInfoPayload_OneOfGroupByTag = {
|
|
||||||
3 : UpdateViewInfoPayload_OneOfGroup.group,
|
|
||||||
0 : UpdateViewInfoPayload_OneOfGroup.notSet
|
|
||||||
};
|
|
||||||
static const $core.Map<$core.int, UpdateViewInfoPayload_OneOfSort> _UpdateViewInfoPayload_OneOfSortByTag = {
|
|
||||||
4 : UpdateViewInfoPayload_OneOfSort.sort,
|
|
||||||
0 : UpdateViewInfoPayload_OneOfSort.notSet
|
|
||||||
};
|
|
||||||
static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'UpdateViewInfoPayload', createEmptyInstance: create)
|
|
||||||
..oo(0, [2])
|
|
||||||
..oo(1, [3])
|
|
||||||
..oo(2, [4])
|
|
||||||
..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'viewId')
|
|
||||||
..aOM<ViewFilter>(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'filter', subBuilder: ViewFilter.create)
|
|
||||||
..aOM<ViewGroup>(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'group', subBuilder: ViewGroup.create)
|
|
||||||
..aOM<ViewSort>(4, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'sort', subBuilder: ViewSort.create)
|
|
||||||
..hasRequiredFields = false
|
|
||||||
;
|
|
||||||
|
|
||||||
UpdateViewInfoPayload._() : super();
|
|
||||||
factory UpdateViewInfoPayload({
|
|
||||||
$core.String? viewId,
|
|
||||||
ViewFilter? filter,
|
|
||||||
ViewGroup? group,
|
|
||||||
ViewSort? sort,
|
|
||||||
}) {
|
|
||||||
final _result = create();
|
|
||||||
if (viewId != null) {
|
|
||||||
_result.viewId = viewId;
|
|
||||||
}
|
|
||||||
if (filter != null) {
|
|
||||||
_result.filter = filter;
|
|
||||||
}
|
|
||||||
if (group != null) {
|
|
||||||
_result.group = group;
|
|
||||||
}
|
|
||||||
if (sort != null) {
|
|
||||||
_result.sort = sort;
|
|
||||||
}
|
|
||||||
return _result;
|
|
||||||
}
|
|
||||||
factory UpdateViewInfoPayload.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
|
|
||||||
factory UpdateViewInfoPayload.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
|
|
||||||
@$core.Deprecated(
|
|
||||||
'Using this can add significant overhead to your binary. '
|
|
||||||
'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
|
|
||||||
'Will be removed in next major version')
|
|
||||||
UpdateViewInfoPayload clone() => UpdateViewInfoPayload()..mergeFromMessage(this);
|
|
||||||
@$core.Deprecated(
|
|
||||||
'Using this can add significant overhead to your binary. '
|
|
||||||
'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
|
|
||||||
'Will be removed in next major version')
|
|
||||||
UpdateViewInfoPayload copyWith(void Function(UpdateViewInfoPayload) updates) => super.copyWith((message) => updates(message as UpdateViewInfoPayload)) as UpdateViewInfoPayload; // ignore: deprecated_member_use
|
|
||||||
$pb.BuilderInfo get info_ => _i;
|
|
||||||
@$core.pragma('dart2js:noInline')
|
|
||||||
static UpdateViewInfoPayload create() => UpdateViewInfoPayload._();
|
|
||||||
UpdateViewInfoPayload createEmptyInstance() => create();
|
|
||||||
static $pb.PbList<UpdateViewInfoPayload> createRepeated() => $pb.PbList<UpdateViewInfoPayload>();
|
|
||||||
@$core.pragma('dart2js:noInline')
|
|
||||||
static UpdateViewInfoPayload getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<UpdateViewInfoPayload>(create);
|
|
||||||
static UpdateViewInfoPayload? _defaultInstance;
|
|
||||||
|
|
||||||
UpdateViewInfoPayload_OneOfFilter whichOneOfFilter() => _UpdateViewInfoPayload_OneOfFilterByTag[$_whichOneof(0)]!;
|
|
||||||
void clearOneOfFilter() => clearField($_whichOneof(0));
|
|
||||||
|
|
||||||
UpdateViewInfoPayload_OneOfGroup whichOneOfGroup() => _UpdateViewInfoPayload_OneOfGroupByTag[$_whichOneof(1)]!;
|
|
||||||
void clearOneOfGroup() => clearField($_whichOneof(1));
|
|
||||||
|
|
||||||
UpdateViewInfoPayload_OneOfSort whichOneOfSort() => _UpdateViewInfoPayload_OneOfSortByTag[$_whichOneof(2)]!;
|
|
||||||
void clearOneOfSort() => clearField($_whichOneof(2));
|
|
||||||
|
|
||||||
@$pb.TagNumber(1)
|
|
||||||
$core.String get viewId => $_getSZ(0);
|
|
||||||
@$pb.TagNumber(1)
|
|
||||||
set viewId($core.String v) { $_setString(0, v); }
|
|
||||||
@$pb.TagNumber(1)
|
|
||||||
$core.bool hasViewId() => $_has(0);
|
|
||||||
@$pb.TagNumber(1)
|
|
||||||
void clearViewId() => clearField(1);
|
|
||||||
|
|
||||||
@$pb.TagNumber(2)
|
|
||||||
ViewFilter get filter => $_getN(1);
|
|
||||||
@$pb.TagNumber(2)
|
|
||||||
set filter(ViewFilter v) { setField(2, v); }
|
|
||||||
@$pb.TagNumber(2)
|
|
||||||
$core.bool hasFilter() => $_has(1);
|
|
||||||
@$pb.TagNumber(2)
|
|
||||||
void clearFilter() => clearField(2);
|
|
||||||
@$pb.TagNumber(2)
|
|
||||||
ViewFilter ensureFilter() => $_ensure(1);
|
|
||||||
|
|
||||||
@$pb.TagNumber(3)
|
|
||||||
ViewGroup get group => $_getN(2);
|
|
||||||
@$pb.TagNumber(3)
|
|
||||||
set group(ViewGroup v) { setField(3, v); }
|
|
||||||
@$pb.TagNumber(3)
|
|
||||||
$core.bool hasGroup() => $_has(2);
|
|
||||||
@$pb.TagNumber(3)
|
|
||||||
void clearGroup() => clearField(3);
|
|
||||||
@$pb.TagNumber(3)
|
|
||||||
ViewGroup ensureGroup() => $_ensure(2);
|
|
||||||
|
|
||||||
@$pb.TagNumber(4)
|
|
||||||
ViewSort get sort => $_getN(3);
|
|
||||||
@$pb.TagNumber(4)
|
|
||||||
set sort(ViewSort v) { setField(4, v); }
|
|
||||||
@$pb.TagNumber(4)
|
|
||||||
$core.bool hasSort() => $_has(3);
|
|
||||||
@$pb.TagNumber(4)
|
|
||||||
void clearSort() => clearField(4);
|
|
||||||
@$pb.TagNumber(4)
|
|
||||||
ViewSort ensureSort() => $_ensure(3);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,73 +18,9 @@ const ViewInfo$json = const {
|
|||||||
const {'1': 'desc', '3': 4, '4': 1, '5': 9, '10': 'desc'},
|
const {'1': 'desc', '3': 4, '4': 1, '5': 9, '10': 'desc'},
|
||||||
const {'1': 'data_type', '3': 5, '4': 1, '5': 14, '6': '.ViewDataType', '10': 'dataType'},
|
const {'1': 'data_type', '3': 5, '4': 1, '5': 14, '6': '.ViewDataType', '10': 'dataType'},
|
||||||
const {'1': 'belongings', '3': 6, '4': 1, '5': 11, '6': '.RepeatedView', '10': 'belongings'},
|
const {'1': 'belongings', '3': 6, '4': 1, '5': 11, '6': '.RepeatedView', '10': 'belongings'},
|
||||||
const {'1': 'ext_data', '3': 7, '4': 1, '5': 11, '6': '.ViewExtData', '10': 'extData'},
|
const {'1': 'ext_data', '3': 7, '4': 1, '5': 9, '10': 'extData'},
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Descriptor for `ViewInfo`. Decode as a `google.protobuf.DescriptorProto`.
|
/// Descriptor for `ViewInfo`. Decode as a `google.protobuf.DescriptorProto`.
|
||||||
final $typed_data.Uint8List viewInfoDescriptor = $convert.base64Decode('CghWaWV3SW5mbxIOCgJpZBgBIAEoCVICaWQSIAoMYmVsb25nX3RvX2lkGAIgASgJUgpiZWxvbmdUb0lkEhIKBG5hbWUYAyABKAlSBG5hbWUSEgoEZGVzYxgEIAEoCVIEZGVzYxIqCglkYXRhX3R5cGUYBSABKA4yDS5WaWV3RGF0YVR5cGVSCGRhdGFUeXBlEi0KCmJlbG9uZ2luZ3MYBiABKAsyDS5SZXBlYXRlZFZpZXdSCmJlbG9uZ2luZ3MSJwoIZXh0X2RhdGEYByABKAsyDC5WaWV3RXh0RGF0YVIHZXh0RGF0YQ==');
|
final $typed_data.Uint8List viewInfoDescriptor = $convert.base64Decode('CghWaWV3SW5mbxIOCgJpZBgBIAEoCVICaWQSIAoMYmVsb25nX3RvX2lkGAIgASgJUgpiZWxvbmdUb0lkEhIKBG5hbWUYAyABKAlSBG5hbWUSEgoEZGVzYxgEIAEoCVIEZGVzYxIqCglkYXRhX3R5cGUYBSABKA4yDS5WaWV3RGF0YVR5cGVSCGRhdGFUeXBlEi0KCmJlbG9uZ2luZ3MYBiABKAsyDS5SZXBlYXRlZFZpZXdSCmJlbG9uZ2luZ3MSGQoIZXh0X2RhdGEYByABKAlSB2V4dERhdGE=');
|
||||||
@$core.Deprecated('Use viewExtDataDescriptor instead')
|
|
||||||
const ViewExtData$json = const {
|
|
||||||
'1': 'ViewExtData',
|
|
||||||
'2': const [
|
|
||||||
const {'1': 'filter', '3': 1, '4': 1, '5': 11, '6': '.ViewFilter', '10': 'filter'},
|
|
||||||
const {'1': 'group', '3': 2, '4': 1, '5': 11, '6': '.ViewGroup', '10': 'group'},
|
|
||||||
const {'1': 'sort', '3': 3, '4': 1, '5': 11, '6': '.ViewSort', '10': 'sort'},
|
|
||||||
],
|
|
||||||
};
|
|
||||||
|
|
||||||
/// Descriptor for `ViewExtData`. Decode as a `google.protobuf.DescriptorProto`.
|
|
||||||
final $typed_data.Uint8List viewExtDataDescriptor = $convert.base64Decode('CgtWaWV3RXh0RGF0YRIjCgZmaWx0ZXIYASABKAsyCy5WaWV3RmlsdGVyUgZmaWx0ZXISIAoFZ3JvdXAYAiABKAsyCi5WaWV3R3JvdXBSBWdyb3VwEh0KBHNvcnQYAyABKAsyCS5WaWV3U29ydFIEc29ydA==');
|
|
||||||
@$core.Deprecated('Use viewFilterDescriptor instead')
|
|
||||||
const ViewFilter$json = const {
|
|
||||||
'1': 'ViewFilter',
|
|
||||||
'2': const [
|
|
||||||
const {'1': 'object_id', '3': 1, '4': 1, '5': 9, '10': 'objectId'},
|
|
||||||
],
|
|
||||||
};
|
|
||||||
|
|
||||||
/// Descriptor for `ViewFilter`. Decode as a `google.protobuf.DescriptorProto`.
|
|
||||||
final $typed_data.Uint8List viewFilterDescriptor = $convert.base64Decode('CgpWaWV3RmlsdGVyEhsKCW9iamVjdF9pZBgBIAEoCVIIb2JqZWN0SWQ=');
|
|
||||||
@$core.Deprecated('Use viewGroupDescriptor instead')
|
|
||||||
const ViewGroup$json = const {
|
|
||||||
'1': 'ViewGroup',
|
|
||||||
'2': const [
|
|
||||||
const {'1': 'group_object_id', '3': 1, '4': 1, '5': 9, '10': 'groupObjectId'},
|
|
||||||
const {'1': 'sub_group_object_id', '3': 2, '4': 1, '5': 9, '9': 0, '10': 'subGroupObjectId'},
|
|
||||||
],
|
|
||||||
'8': const [
|
|
||||||
const {'1': 'one_of_sub_group_object_id'},
|
|
||||||
],
|
|
||||||
};
|
|
||||||
|
|
||||||
/// Descriptor for `ViewGroup`. Decode as a `google.protobuf.DescriptorProto`.
|
|
||||||
final $typed_data.Uint8List viewGroupDescriptor = $convert.base64Decode('CglWaWV3R3JvdXASJgoPZ3JvdXBfb2JqZWN0X2lkGAEgASgJUg1ncm91cE9iamVjdElkEi8KE3N1Yl9ncm91cF9vYmplY3RfaWQYAiABKAlIAFIQc3ViR3JvdXBPYmplY3RJZEIcChpvbmVfb2Zfc3ViX2dyb3VwX29iamVjdF9pZA==');
|
|
||||||
@$core.Deprecated('Use viewSortDescriptor instead')
|
|
||||||
const ViewSort$json = const {
|
|
||||||
'1': 'ViewSort',
|
|
||||||
'2': const [
|
|
||||||
const {'1': 'object_id', '3': 1, '4': 1, '5': 9, '10': 'objectId'},
|
|
||||||
],
|
|
||||||
};
|
|
||||||
|
|
||||||
/// Descriptor for `ViewSort`. Decode as a `google.protobuf.DescriptorProto`.
|
|
||||||
final $typed_data.Uint8List viewSortDescriptor = $convert.base64Decode('CghWaWV3U29ydBIbCglvYmplY3RfaWQYASABKAlSCG9iamVjdElk');
|
|
||||||
@$core.Deprecated('Use updateViewInfoPayloadDescriptor instead')
|
|
||||||
const UpdateViewInfoPayload$json = const {
|
|
||||||
'1': 'UpdateViewInfoPayload',
|
|
||||||
'2': const [
|
|
||||||
const {'1': 'view_id', '3': 1, '4': 1, '5': 9, '10': 'viewId'},
|
|
||||||
const {'1': 'filter', '3': 2, '4': 1, '5': 11, '6': '.ViewFilter', '9': 0, '10': 'filter'},
|
|
||||||
const {'1': 'group', '3': 3, '4': 1, '5': 11, '6': '.ViewGroup', '9': 1, '10': 'group'},
|
|
||||||
const {'1': 'sort', '3': 4, '4': 1, '5': 11, '6': '.ViewSort', '9': 2, '10': 'sort'},
|
|
||||||
],
|
|
||||||
'8': const [
|
|
||||||
const {'1': 'one_of_filter'},
|
|
||||||
const {'1': 'one_of_group'},
|
|
||||||
const {'1': 'one_of_sort'},
|
|
||||||
],
|
|
||||||
};
|
|
||||||
|
|
||||||
/// Descriptor for `UpdateViewInfoPayload`. Decode as a `google.protobuf.DescriptorProto`.
|
|
||||||
final $typed_data.Uint8List updateViewInfoPayloadDescriptor = $convert.base64Decode('ChVVcGRhdGVWaWV3SW5mb1BheWxvYWQSFwoHdmlld19pZBgBIAEoCVIGdmlld0lkEiUKBmZpbHRlchgCIAEoCzILLlZpZXdGaWx0ZXJIAFIGZmlsdGVyEiIKBWdyb3VwGAMgASgLMgouVmlld0dyb3VwSAFSBWdyb3VwEh8KBHNvcnQYBCABKAsyCS5WaWV3U29ydEgCUgRzb3J0Qg8KDW9uZV9vZl9maWx0ZXJCDgoMb25lX29mX2dyb3VwQg0KC29uZV9vZl9zb3J0');
|
|
||||||
|
@ -27,7 +27,6 @@ class FolderEvent extends $pb.ProtobufEnum {
|
|||||||
static const FolderEvent DuplicateView = FolderEvent._(205, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'DuplicateView');
|
static const FolderEvent DuplicateView = FolderEvent._(205, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'DuplicateView');
|
||||||
static const FolderEvent CloseView = FolderEvent._(206, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'CloseView');
|
static const FolderEvent CloseView = FolderEvent._(206, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'CloseView');
|
||||||
static const FolderEvent ReadViewInfo = FolderEvent._(207, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'ReadViewInfo');
|
static const FolderEvent ReadViewInfo = FolderEvent._(207, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'ReadViewInfo');
|
||||||
static const FolderEvent UpdateViewInfo = FolderEvent._(208, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'UpdateViewInfo');
|
|
||||||
static const FolderEvent CopyLink = FolderEvent._(220, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'CopyLink');
|
static const FolderEvent CopyLink = FolderEvent._(220, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'CopyLink');
|
||||||
static const FolderEvent SetLatestView = FolderEvent._(221, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'SetLatestView');
|
static const FolderEvent SetLatestView = FolderEvent._(221, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'SetLatestView');
|
||||||
static const FolderEvent MoveFolderItem = FolderEvent._(230, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'MoveFolderItem');
|
static const FolderEvent MoveFolderItem = FolderEvent._(230, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'MoveFolderItem');
|
||||||
@ -55,7 +54,6 @@ class FolderEvent extends $pb.ProtobufEnum {
|
|||||||
DuplicateView,
|
DuplicateView,
|
||||||
CloseView,
|
CloseView,
|
||||||
ReadViewInfo,
|
ReadViewInfo,
|
||||||
UpdateViewInfo,
|
|
||||||
CopyLink,
|
CopyLink,
|
||||||
SetLatestView,
|
SetLatestView,
|
||||||
MoveFolderItem,
|
MoveFolderItem,
|
||||||
|
@ -29,7 +29,6 @@ const FolderEvent$json = const {
|
|||||||
const {'1': 'DuplicateView', '2': 205},
|
const {'1': 'DuplicateView', '2': 205},
|
||||||
const {'1': 'CloseView', '2': 206},
|
const {'1': 'CloseView', '2': 206},
|
||||||
const {'1': 'ReadViewInfo', '2': 207},
|
const {'1': 'ReadViewInfo', '2': 207},
|
||||||
const {'1': 'UpdateViewInfo', '2': 208},
|
|
||||||
const {'1': 'CopyLink', '2': 220},
|
const {'1': 'CopyLink', '2': 220},
|
||||||
const {'1': 'SetLatestView', '2': 221},
|
const {'1': 'SetLatestView', '2': 221},
|
||||||
const {'1': 'MoveFolderItem', '2': 230},
|
const {'1': 'MoveFolderItem', '2': 230},
|
||||||
@ -42,4 +41,4 @@ const FolderEvent$json = const {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/// Descriptor for `FolderEvent`. Decode as a `google.protobuf.EnumDescriptorProto`.
|
/// Descriptor for `FolderEvent`. Decode as a `google.protobuf.EnumDescriptorProto`.
|
||||||
final $typed_data.Uint8List folderEventDescriptor = $convert.base64Decode('CgtGb2xkZXJFdmVudBITCg9DcmVhdGVXb3Jrc3BhY2UQABIUChBSZWFkQ3VyV29ya3NwYWNlEAESEgoOUmVhZFdvcmtzcGFjZXMQAhITCg9EZWxldGVXb3Jrc3BhY2UQAxIRCg1PcGVuV29ya3NwYWNlEAQSFQoRUmVhZFdvcmtzcGFjZUFwcHMQBRINCglDcmVhdGVBcHAQZRINCglEZWxldGVBcHAQZhILCgdSZWFkQXBwEGcSDQoJVXBkYXRlQXBwEGgSDwoKQ3JlYXRlVmlldxDJARINCghSZWFkVmlldxDKARIPCgpVcGRhdGVWaWV3EMsBEg8KCkRlbGV0ZVZpZXcQzAESEgoNRHVwbGljYXRlVmlldxDNARIOCglDbG9zZVZpZXcQzgESEQoMUmVhZFZpZXdJbmZvEM8BEhMKDlVwZGF0ZVZpZXdJbmZvENABEg0KCENvcHlMaW5rENwBEhIKDVNldExhdGVzdFZpZXcQ3QESEwoOTW92ZUZvbGRlckl0ZW0Q5gESDgoJUmVhZFRyYXNoEKwCEhEKDFB1dGJhY2tUcmFzaBCtAhIQCgtEZWxldGVUcmFzaBCuAhIUCg9SZXN0b3JlQWxsVHJhc2gQrwISEwoORGVsZXRlQWxsVHJhc2gQsAI=');
|
final $typed_data.Uint8List folderEventDescriptor = $convert.base64Decode('CgtGb2xkZXJFdmVudBITCg9DcmVhdGVXb3Jrc3BhY2UQABIUChBSZWFkQ3VyV29ya3NwYWNlEAESEgoOUmVhZFdvcmtzcGFjZXMQAhITCg9EZWxldGVXb3Jrc3BhY2UQAxIRCg1PcGVuV29ya3NwYWNlEAQSFQoRUmVhZFdvcmtzcGFjZUFwcHMQBRINCglDcmVhdGVBcHAQZRINCglEZWxldGVBcHAQZhILCgdSZWFkQXBwEGcSDQoJVXBkYXRlQXBwEGgSDwoKQ3JlYXRlVmlldxDJARINCghSZWFkVmlldxDKARIPCgpVcGRhdGVWaWV3EMsBEg8KCkRlbGV0ZVZpZXcQzAESEgoNRHVwbGljYXRlVmlldxDNARIOCglDbG9zZVZpZXcQzgESEQoMUmVhZFZpZXdJbmZvEM8BEg0KCENvcHlMaW5rENwBEhIKDVNldExhdGVzdFZpZXcQ3QESEwoOTW92ZUZvbGRlckl0ZW0Q5gESDgoJUmVhZFRyYXNoEKwCEhEKDFB1dGJhY2tUcmFzaBCtAhIQCgtEZWxldGVUcmFzaBCuAhIUCg9SZXN0b3JlQWxsVHJhc2gQrwISEwoORGVsZXRlQWxsVHJhc2gQsAI=');
|
||||||
|
@ -0,0 +1,433 @@
|
|||||||
|
///
|
||||||
|
// Generated code. Do not modify.
|
||||||
|
// source: grid_info.proto
|
||||||
|
//
|
||||||
|
// @dart = 2.12
|
||||||
|
// ignore_for_file: annotate_overrides,camel_case_types,unnecessary_const,non_constant_identifier_names,library_prefixes,unused_import,unused_shown_name,return_of_invalid_type,unnecessary_this,prefer_final_fields
|
||||||
|
|
||||||
|
import 'dart:core' as $core;
|
||||||
|
|
||||||
|
import 'package:protobuf/protobuf.dart' as $pb;
|
||||||
|
|
||||||
|
class ViewExtData extends $pb.GeneratedMessage {
|
||||||
|
static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'ViewExtData', createEmptyInstance: create)
|
||||||
|
..aOM<ViewFilter>(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'filter', subBuilder: ViewFilter.create)
|
||||||
|
..aOM<ViewGroup>(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'group', subBuilder: ViewGroup.create)
|
||||||
|
..aOM<ViewSort>(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'sort', subBuilder: ViewSort.create)
|
||||||
|
..hasRequiredFields = false
|
||||||
|
;
|
||||||
|
|
||||||
|
ViewExtData._() : super();
|
||||||
|
factory ViewExtData({
|
||||||
|
ViewFilter? filter,
|
||||||
|
ViewGroup? group,
|
||||||
|
ViewSort? sort,
|
||||||
|
}) {
|
||||||
|
final _result = create();
|
||||||
|
if (filter != null) {
|
||||||
|
_result.filter = filter;
|
||||||
|
}
|
||||||
|
if (group != null) {
|
||||||
|
_result.group = group;
|
||||||
|
}
|
||||||
|
if (sort != null) {
|
||||||
|
_result.sort = sort;
|
||||||
|
}
|
||||||
|
return _result;
|
||||||
|
}
|
||||||
|
factory ViewExtData.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
|
||||||
|
factory ViewExtData.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
|
||||||
|
@$core.Deprecated(
|
||||||
|
'Using this can add significant overhead to your binary. '
|
||||||
|
'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
|
||||||
|
'Will be removed in next major version')
|
||||||
|
ViewExtData clone() => ViewExtData()..mergeFromMessage(this);
|
||||||
|
@$core.Deprecated(
|
||||||
|
'Using this can add significant overhead to your binary. '
|
||||||
|
'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
|
||||||
|
'Will be removed in next major version')
|
||||||
|
ViewExtData copyWith(void Function(ViewExtData) updates) => super.copyWith((message) => updates(message as ViewExtData)) as ViewExtData; // ignore: deprecated_member_use
|
||||||
|
$pb.BuilderInfo get info_ => _i;
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static ViewExtData create() => ViewExtData._();
|
||||||
|
ViewExtData createEmptyInstance() => create();
|
||||||
|
static $pb.PbList<ViewExtData> createRepeated() => $pb.PbList<ViewExtData>();
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static ViewExtData getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<ViewExtData>(create);
|
||||||
|
static ViewExtData? _defaultInstance;
|
||||||
|
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
ViewFilter get filter => $_getN(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
set filter(ViewFilter v) { setField(1, v); }
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$core.bool hasFilter() => $_has(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
void clearFilter() => clearField(1);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
ViewFilter ensureFilter() => $_ensure(0);
|
||||||
|
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
ViewGroup get group => $_getN(1);
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
set group(ViewGroup v) { setField(2, v); }
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
$core.bool hasGroup() => $_has(1);
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
void clearGroup() => clearField(2);
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
ViewGroup ensureGroup() => $_ensure(1);
|
||||||
|
|
||||||
|
@$pb.TagNumber(3)
|
||||||
|
ViewSort get sort => $_getN(2);
|
||||||
|
@$pb.TagNumber(3)
|
||||||
|
set sort(ViewSort v) { setField(3, v); }
|
||||||
|
@$pb.TagNumber(3)
|
||||||
|
$core.bool hasSort() => $_has(2);
|
||||||
|
@$pb.TagNumber(3)
|
||||||
|
void clearSort() => clearField(3);
|
||||||
|
@$pb.TagNumber(3)
|
||||||
|
ViewSort ensureSort() => $_ensure(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
enum ViewFilter_OneOfFieldId {
|
||||||
|
fieldId,
|
||||||
|
notSet
|
||||||
|
}
|
||||||
|
|
||||||
|
class ViewFilter extends $pb.GeneratedMessage {
|
||||||
|
static const $core.Map<$core.int, ViewFilter_OneOfFieldId> _ViewFilter_OneOfFieldIdByTag = {
|
||||||
|
1 : ViewFilter_OneOfFieldId.fieldId,
|
||||||
|
0 : ViewFilter_OneOfFieldId.notSet
|
||||||
|
};
|
||||||
|
static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'ViewFilter', createEmptyInstance: create)
|
||||||
|
..oo(0, [1])
|
||||||
|
..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'fieldId')
|
||||||
|
..hasRequiredFields = false
|
||||||
|
;
|
||||||
|
|
||||||
|
ViewFilter._() : super();
|
||||||
|
factory ViewFilter({
|
||||||
|
$core.String? fieldId,
|
||||||
|
}) {
|
||||||
|
final _result = create();
|
||||||
|
if (fieldId != null) {
|
||||||
|
_result.fieldId = fieldId;
|
||||||
|
}
|
||||||
|
return _result;
|
||||||
|
}
|
||||||
|
factory ViewFilter.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
|
||||||
|
factory ViewFilter.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
|
||||||
|
@$core.Deprecated(
|
||||||
|
'Using this can add significant overhead to your binary. '
|
||||||
|
'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
|
||||||
|
'Will be removed in next major version')
|
||||||
|
ViewFilter clone() => ViewFilter()..mergeFromMessage(this);
|
||||||
|
@$core.Deprecated(
|
||||||
|
'Using this can add significant overhead to your binary. '
|
||||||
|
'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
|
||||||
|
'Will be removed in next major version')
|
||||||
|
ViewFilter copyWith(void Function(ViewFilter) updates) => super.copyWith((message) => updates(message as ViewFilter)) as ViewFilter; // ignore: deprecated_member_use
|
||||||
|
$pb.BuilderInfo get info_ => _i;
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static ViewFilter create() => ViewFilter._();
|
||||||
|
ViewFilter createEmptyInstance() => create();
|
||||||
|
static $pb.PbList<ViewFilter> createRepeated() => $pb.PbList<ViewFilter>();
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static ViewFilter getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<ViewFilter>(create);
|
||||||
|
static ViewFilter? _defaultInstance;
|
||||||
|
|
||||||
|
ViewFilter_OneOfFieldId whichOneOfFieldId() => _ViewFilter_OneOfFieldIdByTag[$_whichOneof(0)]!;
|
||||||
|
void clearOneOfFieldId() => clearField($_whichOneof(0));
|
||||||
|
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$core.String get fieldId => $_getSZ(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
set fieldId($core.String v) { $_setString(0, v); }
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$core.bool hasFieldId() => $_has(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
void clearFieldId() => clearField(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
enum ViewGroup_OneOfGroupFieldId {
|
||||||
|
groupFieldId,
|
||||||
|
notSet
|
||||||
|
}
|
||||||
|
|
||||||
|
enum ViewGroup_OneOfSubGroupFieldId {
|
||||||
|
subGroupFieldId,
|
||||||
|
notSet
|
||||||
|
}
|
||||||
|
|
||||||
|
class ViewGroup extends $pb.GeneratedMessage {
|
||||||
|
static const $core.Map<$core.int, ViewGroup_OneOfGroupFieldId> _ViewGroup_OneOfGroupFieldIdByTag = {
|
||||||
|
1 : ViewGroup_OneOfGroupFieldId.groupFieldId,
|
||||||
|
0 : ViewGroup_OneOfGroupFieldId.notSet
|
||||||
|
};
|
||||||
|
static const $core.Map<$core.int, ViewGroup_OneOfSubGroupFieldId> _ViewGroup_OneOfSubGroupFieldIdByTag = {
|
||||||
|
2 : ViewGroup_OneOfSubGroupFieldId.subGroupFieldId,
|
||||||
|
0 : ViewGroup_OneOfSubGroupFieldId.notSet
|
||||||
|
};
|
||||||
|
static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'ViewGroup', createEmptyInstance: create)
|
||||||
|
..oo(0, [1])
|
||||||
|
..oo(1, [2])
|
||||||
|
..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'groupFieldId')
|
||||||
|
..aOS(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'subGroupFieldId')
|
||||||
|
..hasRequiredFields = false
|
||||||
|
;
|
||||||
|
|
||||||
|
ViewGroup._() : super();
|
||||||
|
factory ViewGroup({
|
||||||
|
$core.String? groupFieldId,
|
||||||
|
$core.String? subGroupFieldId,
|
||||||
|
}) {
|
||||||
|
final _result = create();
|
||||||
|
if (groupFieldId != null) {
|
||||||
|
_result.groupFieldId = groupFieldId;
|
||||||
|
}
|
||||||
|
if (subGroupFieldId != null) {
|
||||||
|
_result.subGroupFieldId = subGroupFieldId;
|
||||||
|
}
|
||||||
|
return _result;
|
||||||
|
}
|
||||||
|
factory ViewGroup.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
|
||||||
|
factory ViewGroup.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
|
||||||
|
@$core.Deprecated(
|
||||||
|
'Using this can add significant overhead to your binary. '
|
||||||
|
'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
|
||||||
|
'Will be removed in next major version')
|
||||||
|
ViewGroup clone() => ViewGroup()..mergeFromMessage(this);
|
||||||
|
@$core.Deprecated(
|
||||||
|
'Using this can add significant overhead to your binary. '
|
||||||
|
'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
|
||||||
|
'Will be removed in next major version')
|
||||||
|
ViewGroup copyWith(void Function(ViewGroup) updates) => super.copyWith((message) => updates(message as ViewGroup)) as ViewGroup; // ignore: deprecated_member_use
|
||||||
|
$pb.BuilderInfo get info_ => _i;
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static ViewGroup create() => ViewGroup._();
|
||||||
|
ViewGroup createEmptyInstance() => create();
|
||||||
|
static $pb.PbList<ViewGroup> createRepeated() => $pb.PbList<ViewGroup>();
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static ViewGroup getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<ViewGroup>(create);
|
||||||
|
static ViewGroup? _defaultInstance;
|
||||||
|
|
||||||
|
ViewGroup_OneOfGroupFieldId whichOneOfGroupFieldId() => _ViewGroup_OneOfGroupFieldIdByTag[$_whichOneof(0)]!;
|
||||||
|
void clearOneOfGroupFieldId() => clearField($_whichOneof(0));
|
||||||
|
|
||||||
|
ViewGroup_OneOfSubGroupFieldId whichOneOfSubGroupFieldId() => _ViewGroup_OneOfSubGroupFieldIdByTag[$_whichOneof(1)]!;
|
||||||
|
void clearOneOfSubGroupFieldId() => clearField($_whichOneof(1));
|
||||||
|
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$core.String get groupFieldId => $_getSZ(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
set groupFieldId($core.String v) { $_setString(0, v); }
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$core.bool hasGroupFieldId() => $_has(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
void clearGroupFieldId() => clearField(1);
|
||||||
|
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
$core.String get subGroupFieldId => $_getSZ(1);
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
set subGroupFieldId($core.String v) { $_setString(1, v); }
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
$core.bool hasSubGroupFieldId() => $_has(1);
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
void clearSubGroupFieldId() => clearField(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
enum ViewSort_OneOfFieldId {
|
||||||
|
fieldId,
|
||||||
|
notSet
|
||||||
|
}
|
||||||
|
|
||||||
|
class ViewSort extends $pb.GeneratedMessage {
|
||||||
|
static const $core.Map<$core.int, ViewSort_OneOfFieldId> _ViewSort_OneOfFieldIdByTag = {
|
||||||
|
1 : ViewSort_OneOfFieldId.fieldId,
|
||||||
|
0 : ViewSort_OneOfFieldId.notSet
|
||||||
|
};
|
||||||
|
static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'ViewSort', createEmptyInstance: create)
|
||||||
|
..oo(0, [1])
|
||||||
|
..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'fieldId')
|
||||||
|
..hasRequiredFields = false
|
||||||
|
;
|
||||||
|
|
||||||
|
ViewSort._() : super();
|
||||||
|
factory ViewSort({
|
||||||
|
$core.String? fieldId,
|
||||||
|
}) {
|
||||||
|
final _result = create();
|
||||||
|
if (fieldId != null) {
|
||||||
|
_result.fieldId = fieldId;
|
||||||
|
}
|
||||||
|
return _result;
|
||||||
|
}
|
||||||
|
factory ViewSort.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
|
||||||
|
factory ViewSort.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
|
||||||
|
@$core.Deprecated(
|
||||||
|
'Using this can add significant overhead to your binary. '
|
||||||
|
'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
|
||||||
|
'Will be removed in next major version')
|
||||||
|
ViewSort clone() => ViewSort()..mergeFromMessage(this);
|
||||||
|
@$core.Deprecated(
|
||||||
|
'Using this can add significant overhead to your binary. '
|
||||||
|
'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
|
||||||
|
'Will be removed in next major version')
|
||||||
|
ViewSort copyWith(void Function(ViewSort) updates) => super.copyWith((message) => updates(message as ViewSort)) as ViewSort; // ignore: deprecated_member_use
|
||||||
|
$pb.BuilderInfo get info_ => _i;
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static ViewSort create() => ViewSort._();
|
||||||
|
ViewSort createEmptyInstance() => create();
|
||||||
|
static $pb.PbList<ViewSort> createRepeated() => $pb.PbList<ViewSort>();
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static ViewSort getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<ViewSort>(create);
|
||||||
|
static ViewSort? _defaultInstance;
|
||||||
|
|
||||||
|
ViewSort_OneOfFieldId whichOneOfFieldId() => _ViewSort_OneOfFieldIdByTag[$_whichOneof(0)]!;
|
||||||
|
void clearOneOfFieldId() => clearField($_whichOneof(0));
|
||||||
|
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$core.String get fieldId => $_getSZ(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
set fieldId($core.String v) { $_setString(0, v); }
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$core.bool hasFieldId() => $_has(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
void clearFieldId() => clearField(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
enum GridInfoChangesetPayload_OneOfFilter {
|
||||||
|
filter,
|
||||||
|
notSet
|
||||||
|
}
|
||||||
|
|
||||||
|
enum GridInfoChangesetPayload_OneOfGroup {
|
||||||
|
group,
|
||||||
|
notSet
|
||||||
|
}
|
||||||
|
|
||||||
|
enum GridInfoChangesetPayload_OneOfSort {
|
||||||
|
sort,
|
||||||
|
notSet
|
||||||
|
}
|
||||||
|
|
||||||
|
class GridInfoChangesetPayload extends $pb.GeneratedMessage {
|
||||||
|
static const $core.Map<$core.int, GridInfoChangesetPayload_OneOfFilter> _GridInfoChangesetPayload_OneOfFilterByTag = {
|
||||||
|
2 : GridInfoChangesetPayload_OneOfFilter.filter,
|
||||||
|
0 : GridInfoChangesetPayload_OneOfFilter.notSet
|
||||||
|
};
|
||||||
|
static const $core.Map<$core.int, GridInfoChangesetPayload_OneOfGroup> _GridInfoChangesetPayload_OneOfGroupByTag = {
|
||||||
|
3 : GridInfoChangesetPayload_OneOfGroup.group,
|
||||||
|
0 : GridInfoChangesetPayload_OneOfGroup.notSet
|
||||||
|
};
|
||||||
|
static const $core.Map<$core.int, GridInfoChangesetPayload_OneOfSort> _GridInfoChangesetPayload_OneOfSortByTag = {
|
||||||
|
4 : GridInfoChangesetPayload_OneOfSort.sort,
|
||||||
|
0 : GridInfoChangesetPayload_OneOfSort.notSet
|
||||||
|
};
|
||||||
|
static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'GridInfoChangesetPayload', createEmptyInstance: create)
|
||||||
|
..oo(0, [2])
|
||||||
|
..oo(1, [3])
|
||||||
|
..oo(2, [4])
|
||||||
|
..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'gridId')
|
||||||
|
..aOM<ViewFilter>(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'filter', subBuilder: ViewFilter.create)
|
||||||
|
..aOM<ViewGroup>(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'group', subBuilder: ViewGroup.create)
|
||||||
|
..aOM<ViewSort>(4, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'sort', subBuilder: ViewSort.create)
|
||||||
|
..hasRequiredFields = false
|
||||||
|
;
|
||||||
|
|
||||||
|
GridInfoChangesetPayload._() : super();
|
||||||
|
factory GridInfoChangesetPayload({
|
||||||
|
$core.String? gridId,
|
||||||
|
ViewFilter? filter,
|
||||||
|
ViewGroup? group,
|
||||||
|
ViewSort? sort,
|
||||||
|
}) {
|
||||||
|
final _result = create();
|
||||||
|
if (gridId != null) {
|
||||||
|
_result.gridId = gridId;
|
||||||
|
}
|
||||||
|
if (filter != null) {
|
||||||
|
_result.filter = filter;
|
||||||
|
}
|
||||||
|
if (group != null) {
|
||||||
|
_result.group = group;
|
||||||
|
}
|
||||||
|
if (sort != null) {
|
||||||
|
_result.sort = sort;
|
||||||
|
}
|
||||||
|
return _result;
|
||||||
|
}
|
||||||
|
factory GridInfoChangesetPayload.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
|
||||||
|
factory GridInfoChangesetPayload.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
|
||||||
|
@$core.Deprecated(
|
||||||
|
'Using this can add significant overhead to your binary. '
|
||||||
|
'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
|
||||||
|
'Will be removed in next major version')
|
||||||
|
GridInfoChangesetPayload clone() => GridInfoChangesetPayload()..mergeFromMessage(this);
|
||||||
|
@$core.Deprecated(
|
||||||
|
'Using this can add significant overhead to your binary. '
|
||||||
|
'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
|
||||||
|
'Will be removed in next major version')
|
||||||
|
GridInfoChangesetPayload copyWith(void Function(GridInfoChangesetPayload) updates) => super.copyWith((message) => updates(message as GridInfoChangesetPayload)) as GridInfoChangesetPayload; // ignore: deprecated_member_use
|
||||||
|
$pb.BuilderInfo get info_ => _i;
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static GridInfoChangesetPayload create() => GridInfoChangesetPayload._();
|
||||||
|
GridInfoChangesetPayload createEmptyInstance() => create();
|
||||||
|
static $pb.PbList<GridInfoChangesetPayload> createRepeated() => $pb.PbList<GridInfoChangesetPayload>();
|
||||||
|
@$core.pragma('dart2js:noInline')
|
||||||
|
static GridInfoChangesetPayload getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<GridInfoChangesetPayload>(create);
|
||||||
|
static GridInfoChangesetPayload? _defaultInstance;
|
||||||
|
|
||||||
|
GridInfoChangesetPayload_OneOfFilter whichOneOfFilter() => _GridInfoChangesetPayload_OneOfFilterByTag[$_whichOneof(0)]!;
|
||||||
|
void clearOneOfFilter() => clearField($_whichOneof(0));
|
||||||
|
|
||||||
|
GridInfoChangesetPayload_OneOfGroup whichOneOfGroup() => _GridInfoChangesetPayload_OneOfGroupByTag[$_whichOneof(1)]!;
|
||||||
|
void clearOneOfGroup() => clearField($_whichOneof(1));
|
||||||
|
|
||||||
|
GridInfoChangesetPayload_OneOfSort whichOneOfSort() => _GridInfoChangesetPayload_OneOfSortByTag[$_whichOneof(2)]!;
|
||||||
|
void clearOneOfSort() => clearField($_whichOneof(2));
|
||||||
|
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$core.String get gridId => $_getSZ(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
set gridId($core.String v) { $_setString(0, v); }
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
$core.bool hasGridId() => $_has(0);
|
||||||
|
@$pb.TagNumber(1)
|
||||||
|
void clearGridId() => clearField(1);
|
||||||
|
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
ViewFilter get filter => $_getN(1);
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
set filter(ViewFilter v) { setField(2, v); }
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
$core.bool hasFilter() => $_has(1);
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
void clearFilter() => clearField(2);
|
||||||
|
@$pb.TagNumber(2)
|
||||||
|
ViewFilter ensureFilter() => $_ensure(1);
|
||||||
|
|
||||||
|
@$pb.TagNumber(3)
|
||||||
|
ViewGroup get group => $_getN(2);
|
||||||
|
@$pb.TagNumber(3)
|
||||||
|
set group(ViewGroup v) { setField(3, v); }
|
||||||
|
@$pb.TagNumber(3)
|
||||||
|
$core.bool hasGroup() => $_has(2);
|
||||||
|
@$pb.TagNumber(3)
|
||||||
|
void clearGroup() => clearField(3);
|
||||||
|
@$pb.TagNumber(3)
|
||||||
|
ViewGroup ensureGroup() => $_ensure(2);
|
||||||
|
|
||||||
|
@$pb.TagNumber(4)
|
||||||
|
ViewSort get sort => $_getN(3);
|
||||||
|
@$pb.TagNumber(4)
|
||||||
|
set sort(ViewSort v) { setField(4, v); }
|
||||||
|
@$pb.TagNumber(4)
|
||||||
|
$core.bool hasSort() => $_has(3);
|
||||||
|
@$pb.TagNumber(4)
|
||||||
|
void clearSort() => clearField(4);
|
||||||
|
@$pb.TagNumber(4)
|
||||||
|
ViewSort ensureSort() => $_ensure(3);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,7 @@
|
|||||||
|
///
|
||||||
|
// Generated code. Do not modify.
|
||||||
|
// source: grid_info.proto
|
||||||
|
//
|
||||||
|
// @dart = 2.12
|
||||||
|
// ignore_for_file: annotate_overrides,camel_case_types,unnecessary_const,non_constant_identifier_names,library_prefixes,unused_import,unused_shown_name,return_of_invalid_type,unnecessary_this,prefer_final_fields
|
||||||
|
|
@ -0,0 +1,81 @@
|
|||||||
|
///
|
||||||
|
// Generated code. Do not modify.
|
||||||
|
// source: grid_info.proto
|
||||||
|
//
|
||||||
|
// @dart = 2.12
|
||||||
|
// ignore_for_file: annotate_overrides,camel_case_types,unnecessary_const,non_constant_identifier_names,library_prefixes,unused_import,unused_shown_name,return_of_invalid_type,unnecessary_this,prefer_final_fields,deprecated_member_use_from_same_package
|
||||||
|
|
||||||
|
import 'dart:core' as $core;
|
||||||
|
import 'dart:convert' as $convert;
|
||||||
|
import 'dart:typed_data' as $typed_data;
|
||||||
|
@$core.Deprecated('Use viewExtDataDescriptor instead')
|
||||||
|
const ViewExtData$json = const {
|
||||||
|
'1': 'ViewExtData',
|
||||||
|
'2': const [
|
||||||
|
const {'1': 'filter', '3': 1, '4': 1, '5': 11, '6': '.ViewFilter', '10': 'filter'},
|
||||||
|
const {'1': 'group', '3': 2, '4': 1, '5': 11, '6': '.ViewGroup', '10': 'group'},
|
||||||
|
const {'1': 'sort', '3': 3, '4': 1, '5': 11, '6': '.ViewSort', '10': 'sort'},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Descriptor for `ViewExtData`. Decode as a `google.protobuf.DescriptorProto`.
|
||||||
|
final $typed_data.Uint8List viewExtDataDescriptor = $convert.base64Decode('CgtWaWV3RXh0RGF0YRIjCgZmaWx0ZXIYASABKAsyCy5WaWV3RmlsdGVyUgZmaWx0ZXISIAoFZ3JvdXAYAiABKAsyCi5WaWV3R3JvdXBSBWdyb3VwEh0KBHNvcnQYAyABKAsyCS5WaWV3U29ydFIEc29ydA==');
|
||||||
|
@$core.Deprecated('Use viewFilterDescriptor instead')
|
||||||
|
const ViewFilter$json = const {
|
||||||
|
'1': 'ViewFilter',
|
||||||
|
'2': const [
|
||||||
|
const {'1': 'field_id', '3': 1, '4': 1, '5': 9, '9': 0, '10': 'fieldId'},
|
||||||
|
],
|
||||||
|
'8': const [
|
||||||
|
const {'1': 'one_of_field_id'},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Descriptor for `ViewFilter`. Decode as a `google.protobuf.DescriptorProto`.
|
||||||
|
final $typed_data.Uint8List viewFilterDescriptor = $convert.base64Decode('CgpWaWV3RmlsdGVyEhsKCGZpZWxkX2lkGAEgASgJSABSB2ZpZWxkSWRCEQoPb25lX29mX2ZpZWxkX2lk');
|
||||||
|
@$core.Deprecated('Use viewGroupDescriptor instead')
|
||||||
|
const ViewGroup$json = const {
|
||||||
|
'1': 'ViewGroup',
|
||||||
|
'2': const [
|
||||||
|
const {'1': 'group_field_id', '3': 1, '4': 1, '5': 9, '9': 0, '10': 'groupFieldId'},
|
||||||
|
const {'1': 'sub_group_field_id', '3': 2, '4': 1, '5': 9, '9': 1, '10': 'subGroupFieldId'},
|
||||||
|
],
|
||||||
|
'8': const [
|
||||||
|
const {'1': 'one_of_group_field_id'},
|
||||||
|
const {'1': 'one_of_sub_group_field_id'},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Descriptor for `ViewGroup`. Decode as a `google.protobuf.DescriptorProto`.
|
||||||
|
final $typed_data.Uint8List viewGroupDescriptor = $convert.base64Decode('CglWaWV3R3JvdXASJgoOZ3JvdXBfZmllbGRfaWQYASABKAlIAFIMZ3JvdXBGaWVsZElkEi0KEnN1Yl9ncm91cF9maWVsZF9pZBgCIAEoCUgBUg9zdWJHcm91cEZpZWxkSWRCFwoVb25lX29mX2dyb3VwX2ZpZWxkX2lkQhsKGW9uZV9vZl9zdWJfZ3JvdXBfZmllbGRfaWQ=');
|
||||||
|
@$core.Deprecated('Use viewSortDescriptor instead')
|
||||||
|
const ViewSort$json = const {
|
||||||
|
'1': 'ViewSort',
|
||||||
|
'2': const [
|
||||||
|
const {'1': 'field_id', '3': 1, '4': 1, '5': 9, '9': 0, '10': 'fieldId'},
|
||||||
|
],
|
||||||
|
'8': const [
|
||||||
|
const {'1': 'one_of_field_id'},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Descriptor for `ViewSort`. Decode as a `google.protobuf.DescriptorProto`.
|
||||||
|
final $typed_data.Uint8List viewSortDescriptor = $convert.base64Decode('CghWaWV3U29ydBIbCghmaWVsZF9pZBgBIAEoCUgAUgdmaWVsZElkQhEKD29uZV9vZl9maWVsZF9pZA==');
|
||||||
|
@$core.Deprecated('Use gridInfoChangesetPayloadDescriptor instead')
|
||||||
|
const GridInfoChangesetPayload$json = const {
|
||||||
|
'1': 'GridInfoChangesetPayload',
|
||||||
|
'2': const [
|
||||||
|
const {'1': 'grid_id', '3': 1, '4': 1, '5': 9, '10': 'gridId'},
|
||||||
|
const {'1': 'filter', '3': 2, '4': 1, '5': 11, '6': '.ViewFilter', '9': 0, '10': 'filter'},
|
||||||
|
const {'1': 'group', '3': 3, '4': 1, '5': 11, '6': '.ViewGroup', '9': 1, '10': 'group'},
|
||||||
|
const {'1': 'sort', '3': 4, '4': 1, '5': 11, '6': '.ViewSort', '9': 2, '10': 'sort'},
|
||||||
|
],
|
||||||
|
'8': const [
|
||||||
|
const {'1': 'one_of_filter'},
|
||||||
|
const {'1': 'one_of_group'},
|
||||||
|
const {'1': 'one_of_sort'},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Descriptor for `GridInfoChangesetPayload`. Decode as a `google.protobuf.DescriptorProto`.
|
||||||
|
final $typed_data.Uint8List gridInfoChangesetPayloadDescriptor = $convert.base64Decode('ChhHcmlkSW5mb0NoYW5nZXNldFBheWxvYWQSFwoHZ3JpZF9pZBgBIAEoCVIGZ3JpZElkEiUKBmZpbHRlchgCIAEoCzILLlZpZXdGaWx0ZXJIAFIGZmlsdGVyEiIKBWdyb3VwGAMgASgLMgouVmlld0dyb3VwSAFSBWdyb3VwEh8KBHNvcnQYBCABKAsyCS5WaWV3U29ydEgCUgRzb3J0Qg8KDW9uZV9vZl9maWx0ZXJCDgoMb25lX29mX2dyb3VwQg0KC29uZV9vZl9zb3J0');
|
@ -0,0 +1,9 @@
|
|||||||
|
///
|
||||||
|
// Generated code. Do not modify.
|
||||||
|
// source: grid_info.proto
|
||||||
|
//
|
||||||
|
// @dart = 2.12
|
||||||
|
// ignore_for_file: annotate_overrides,camel_case_types,unnecessary_const,non_constant_identifier_names,library_prefixes,unused_import,unused_shown_name,return_of_invalid_type,unnecessary_this,prefer_final_fields,deprecated_member_use_from_same_package
|
||||||
|
|
||||||
|
export 'grid_info.pb.dart';
|
||||||
|
|
@ -1,3 +1,4 @@
|
|||||||
// Auto-generated, do not edit
|
// Auto-generated, do not edit
|
||||||
export './grid.pb.dart';
|
export './grid.pb.dart';
|
||||||
|
export './grid_info.pb.dart';
|
||||||
export './field.pb.dart';
|
export './field.pb.dart';
|
||||||
|
@ -64,7 +64,6 @@ pub fn create(folder: Arc<FolderManager>) -> Module {
|
|||||||
.event(FolderEvent::ReadView, read_view_handler)
|
.event(FolderEvent::ReadView, read_view_handler)
|
||||||
.event(FolderEvent::UpdateView, update_view_handler)
|
.event(FolderEvent::UpdateView, update_view_handler)
|
||||||
.event(FolderEvent::ReadViewInfo, read_view_info_handler)
|
.event(FolderEvent::ReadViewInfo, read_view_info_handler)
|
||||||
.event(FolderEvent::UpdateViewInfo, update_view_info_handler)
|
|
||||||
.event(FolderEvent::DeleteView, delete_view_handler)
|
.event(FolderEvent::DeleteView, delete_view_handler)
|
||||||
.event(FolderEvent::DuplicateView, duplicate_view_handler)
|
.event(FolderEvent::DuplicateView, duplicate_view_handler)
|
||||||
.event(FolderEvent::SetLatestView, set_latest_view_handler)
|
.event(FolderEvent::SetLatestView, set_latest_view_handler)
|
||||||
@ -136,9 +135,6 @@ pub enum FolderEvent {
|
|||||||
#[event(input = "ViewId", output = "ViewInfo")]
|
#[event(input = "ViewId", output = "ViewInfo")]
|
||||||
ReadViewInfo = 207,
|
ReadViewInfo = 207,
|
||||||
|
|
||||||
#[event(input = "UpdateViewInfoPayload", output = "ViewInfo")]
|
|
||||||
UpdateViewInfo = 208,
|
|
||||||
|
|
||||||
#[event()]
|
#[event()]
|
||||||
CopyLink = 220,
|
CopyLink = 220,
|
||||||
|
|
||||||
|
@ -9,15 +9,12 @@ use crate::{
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
use bytes::Bytes;
|
use bytes::Bytes;
|
||||||
use flowy_sync::client_document::default::{initial_quill_delta_string, initial_read_me};
|
|
||||||
|
|
||||||
use flowy_error::FlowyError;
|
use flowy_error::FlowyError;
|
||||||
use flowy_folder_data_model::entities::view::ViewDataType;
|
use flowy_folder_data_model::entities::view::ViewDataType;
|
||||||
|
|
||||||
use flowy_folder_data_model::entities::UpdateViewInfoParams;
|
|
||||||
use flowy_folder_data_model::user_default;
|
use flowy_folder_data_model::user_default;
|
||||||
use flowy_revision::disk::SQLiteTextBlockRevisionPersistence;
|
use flowy_revision::disk::SQLiteTextBlockRevisionPersistence;
|
||||||
use flowy_revision::{RevisionManager, RevisionPersistence, RevisionWebSocket};
|
use flowy_revision::{RevisionManager, RevisionPersistence, RevisionWebSocket};
|
||||||
|
use flowy_sync::client_document::default::{initial_quill_delta_string, initial_read_me};
|
||||||
use flowy_sync::{client_folder::FolderPad, entities::ws_data::ServerRevisionWSData};
|
use flowy_sync::{client_folder::FolderPad, entities::ws_data::ServerRevisionWSData};
|
||||||
use lazy_static::lazy_static;
|
use lazy_static::lazy_static;
|
||||||
use lib_infra::future::FutureResult;
|
use lib_infra::future::FutureResult;
|
||||||
@ -256,8 +253,6 @@ pub trait ViewDataProcessor {
|
|||||||
data: Vec<u8>,
|
data: Vec<u8>,
|
||||||
) -> FutureResult<Bytes, FlowyError>;
|
) -> FutureResult<Bytes, FlowyError>;
|
||||||
|
|
||||||
fn handle_view_info_updated(&self, params: UpdateViewInfoParams) -> FutureResult<(), FlowyError>;
|
|
||||||
|
|
||||||
fn data_type(&self) -> ViewDataType;
|
fn data_type(&self) -> ViewDataType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,7 +42,6 @@ pub enum FolderEvent {
|
|||||||
DuplicateView = 205,
|
DuplicateView = 205,
|
||||||
CloseView = 206,
|
CloseView = 206,
|
||||||
ReadViewInfo = 207,
|
ReadViewInfo = 207,
|
||||||
UpdateViewInfo = 208,
|
|
||||||
CopyLink = 220,
|
CopyLink = 220,
|
||||||
SetLatestView = 221,
|
SetLatestView = 221,
|
||||||
MoveFolderItem = 230,
|
MoveFolderItem = 230,
|
||||||
@ -77,7 +76,6 @@ impl ::protobuf::ProtobufEnum for FolderEvent {
|
|||||||
205 => ::std::option::Option::Some(FolderEvent::DuplicateView),
|
205 => ::std::option::Option::Some(FolderEvent::DuplicateView),
|
||||||
206 => ::std::option::Option::Some(FolderEvent::CloseView),
|
206 => ::std::option::Option::Some(FolderEvent::CloseView),
|
||||||
207 => ::std::option::Option::Some(FolderEvent::ReadViewInfo),
|
207 => ::std::option::Option::Some(FolderEvent::ReadViewInfo),
|
||||||
208 => ::std::option::Option::Some(FolderEvent::UpdateViewInfo),
|
|
||||||
220 => ::std::option::Option::Some(FolderEvent::CopyLink),
|
220 => ::std::option::Option::Some(FolderEvent::CopyLink),
|
||||||
221 => ::std::option::Option::Some(FolderEvent::SetLatestView),
|
221 => ::std::option::Option::Some(FolderEvent::SetLatestView),
|
||||||
230 => ::std::option::Option::Some(FolderEvent::MoveFolderItem),
|
230 => ::std::option::Option::Some(FolderEvent::MoveFolderItem),
|
||||||
@ -109,7 +107,6 @@ impl ::protobuf::ProtobufEnum for FolderEvent {
|
|||||||
FolderEvent::DuplicateView,
|
FolderEvent::DuplicateView,
|
||||||
FolderEvent::CloseView,
|
FolderEvent::CloseView,
|
||||||
FolderEvent::ReadViewInfo,
|
FolderEvent::ReadViewInfo,
|
||||||
FolderEvent::UpdateViewInfo,
|
|
||||||
FolderEvent::CopyLink,
|
FolderEvent::CopyLink,
|
||||||
FolderEvent::SetLatestView,
|
FolderEvent::SetLatestView,
|
||||||
FolderEvent::MoveFolderItem,
|
FolderEvent::MoveFolderItem,
|
||||||
@ -146,7 +143,7 @@ impl ::protobuf::reflect::ProtobufValue for FolderEvent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static file_descriptor_proto_data: &'static [u8] = b"\
|
static file_descriptor_proto_data: &'static [u8] = b"\
|
||||||
\n\x0fevent_map.proto*\xeb\x03\n\x0bFolderEvent\x12\x13\n\x0fCreateWorks\
|
\n\x0fevent_map.proto*\xd6\x03\n\x0bFolderEvent\x12\x13\n\x0fCreateWorks\
|
||||||
pace\x10\0\x12\x14\n\x10ReadCurWorkspace\x10\x01\x12\x12\n\x0eReadWorksp\
|
pace\x10\0\x12\x14\n\x10ReadCurWorkspace\x10\x01\x12\x12\n\x0eReadWorksp\
|
||||||
aces\x10\x02\x12\x13\n\x0fDeleteWorkspace\x10\x03\x12\x11\n\rOpenWorkspa\
|
aces\x10\x02\x12\x13\n\x0fDeleteWorkspace\x10\x03\x12\x11\n\rOpenWorkspa\
|
||||||
ce\x10\x04\x12\x15\n\x11ReadWorkspaceApps\x10\x05\x12\r\n\tCreateApp\x10\
|
ce\x10\x04\x12\x15\n\x11ReadWorkspaceApps\x10\x05\x12\r\n\tCreateApp\x10\
|
||||||
@ -154,12 +151,11 @@ static file_descriptor_proto_data: &'static [u8] = b"\
|
|||||||
\x10h\x12\x0f\n\nCreateView\x10\xc9\x01\x12\r\n\x08ReadView\x10\xca\x01\
|
\x10h\x12\x0f\n\nCreateView\x10\xc9\x01\x12\r\n\x08ReadView\x10\xca\x01\
|
||||||
\x12\x0f\n\nUpdateView\x10\xcb\x01\x12\x0f\n\nDeleteView\x10\xcc\x01\x12\
|
\x12\x0f\n\nUpdateView\x10\xcb\x01\x12\x0f\n\nDeleteView\x10\xcc\x01\x12\
|
||||||
\x12\n\rDuplicateView\x10\xcd\x01\x12\x0e\n\tCloseView\x10\xce\x01\x12\
|
\x12\n\rDuplicateView\x10\xcd\x01\x12\x0e\n\tCloseView\x10\xce\x01\x12\
|
||||||
\x11\n\x0cReadViewInfo\x10\xcf\x01\x12\x13\n\x0eUpdateViewInfo\x10\xd0\
|
\x11\n\x0cReadViewInfo\x10\xcf\x01\x12\r\n\x08CopyLink\x10\xdc\x01\x12\
|
||||||
\x01\x12\r\n\x08CopyLink\x10\xdc\x01\x12\x12\n\rSetLatestView\x10\xdd\
|
\x12\n\rSetLatestView\x10\xdd\x01\x12\x13\n\x0eMoveFolderItem\x10\xe6\
|
||||||
\x01\x12\x13\n\x0eMoveFolderItem\x10\xe6\x01\x12\x0e\n\tReadTrash\x10\
|
\x01\x12\x0e\n\tReadTrash\x10\xac\x02\x12\x11\n\x0cPutbackTrash\x10\xad\
|
||||||
\xac\x02\x12\x11\n\x0cPutbackTrash\x10\xad\x02\x12\x10\n\x0bDeleteTrash\
|
\x02\x12\x10\n\x0bDeleteTrash\x10\xae\x02\x12\x14\n\x0fRestoreAllTrash\
|
||||||
\x10\xae\x02\x12\x14\n\x0fRestoreAllTrash\x10\xaf\x02\x12\x13\n\x0eDelet\
|
\x10\xaf\x02\x12\x13\n\x0eDeleteAllTrash\x10\xb0\x02b\x06proto3\
|
||||||
eAllTrash\x10\xb0\x02b\x06proto3\
|
|
||||||
";
|
";
|
||||||
|
|
||||||
static file_descriptor_proto_lazy: ::protobuf::rt::LazyV2<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::LazyV2::INIT;
|
static file_descriptor_proto_lazy: ::protobuf::rt::LazyV2<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::LazyV2::INIT;
|
||||||
|
@ -18,7 +18,6 @@ enum FolderEvent {
|
|||||||
DuplicateView = 205;
|
DuplicateView = 205;
|
||||||
CloseView = 206;
|
CloseView = 206;
|
||||||
ReadViewInfo = 207;
|
ReadViewInfo = 207;
|
||||||
UpdateViewInfo = 208;
|
|
||||||
CopyLink = 220;
|
CopyLink = 220;
|
||||||
SetLatestView = 221;
|
SetLatestView = 221;
|
||||||
MoveFolderItem = 230;
|
MoveFolderItem = 230;
|
||||||
|
@ -1,16 +1,14 @@
|
|||||||
use flowy_sync::{
|
|
||||||
client_folder::{FolderChange, FolderPad},
|
|
||||||
entities::{revision::Revision, ws_data::ServerRevisionWSData},
|
|
||||||
};
|
|
||||||
|
|
||||||
use crate::manager::FolderId;
|
use crate::manager::FolderId;
|
||||||
use bytes::Bytes;
|
use bytes::Bytes;
|
||||||
use flowy_error::{FlowyError, FlowyResult};
|
use flowy_error::{FlowyError, FlowyResult};
|
||||||
use flowy_sync::util::make_delta_from_revisions;
|
|
||||||
|
|
||||||
use flowy_revision::{
|
use flowy_revision::{
|
||||||
RevisionCloudService, RevisionCompactor, RevisionManager, RevisionObjectBuilder, RevisionWebSocket,
|
RevisionCloudService, RevisionCompactor, RevisionManager, RevisionObjectBuilder, RevisionWebSocket,
|
||||||
};
|
};
|
||||||
|
use flowy_sync::util::make_delta_from_revisions;
|
||||||
|
use flowy_sync::{
|
||||||
|
client_folder::{FolderChange, FolderPad},
|
||||||
|
entities::{revision::Revision, ws_data::ServerRevisionWSData},
|
||||||
|
};
|
||||||
use lib_infra::future::FutureResult;
|
use lib_infra::future::FutureResult;
|
||||||
use lib_ot::core::PlainTextAttributes;
|
use lib_ot::core::PlainTextAttributes;
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ use crate::{
|
|||||||
use bytes::Bytes;
|
use bytes::Bytes;
|
||||||
use flowy_database::kv::KV;
|
use flowy_database::kv::KV;
|
||||||
use flowy_folder_data_model::entities::view::{gen_view_id, ViewDataType};
|
use flowy_folder_data_model::entities::view::{gen_view_id, ViewDataType};
|
||||||
use flowy_folder_data_model::entities::{UpdateViewInfoParams, ViewExtData, ViewInfo};
|
use flowy_folder_data_model::entities::ViewInfo;
|
||||||
use flowy_folder_data_model::revision::ViewRevision;
|
use flowy_folder_data_model::revision::ViewRevision;
|
||||||
use flowy_sync::entities::text_block_info::TextBlockId;
|
use flowy_sync::entities::text_block_info::TextBlockId;
|
||||||
use futures::{FutureExt, StreamExt};
|
use futures::{FutureExt, StreamExt};
|
||||||
@ -135,7 +135,6 @@ impl ViewController {
|
|||||||
.map(|view_rev| view_rev.into())
|
.map(|view_rev| view_rev.into())
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
let ext_data = ViewExtData::from(view_rev.ext_data);
|
|
||||||
let view_info = ViewInfo {
|
let view_info = ViewInfo {
|
||||||
id: view_rev.id,
|
id: view_rev.id,
|
||||||
belong_to_id: view_rev.belong_to_id,
|
belong_to_id: view_rev.belong_to_id,
|
||||||
@ -143,7 +142,7 @@ impl ViewController {
|
|||||||
desc: view_rev.desc,
|
desc: view_rev.desc,
|
||||||
data_type: view_rev.data_type,
|
data_type: view_rev.data_type,
|
||||||
belongings: RepeatedView { items },
|
belongings: RepeatedView { items },
|
||||||
ext_data,
|
ext_data: view_rev.ext_data,
|
||||||
};
|
};
|
||||||
Ok(view_info)
|
Ok(view_info)
|
||||||
})
|
})
|
||||||
@ -259,11 +258,6 @@ impl ViewController {
|
|||||||
Ok(view_rev)
|
Ok(view_rev)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tracing::instrument(level = "debug", skip(self, _params), err)]
|
|
||||||
pub(crate) async fn update_view_info(&self, _params: UpdateViewInfoParams) -> Result<(), FlowyError> {
|
|
||||||
todo!()
|
|
||||||
}
|
|
||||||
|
|
||||||
pub(crate) async fn latest_visit_view(&self) -> FlowyResult<Option<ViewRevision>> {
|
pub(crate) async fn latest_visit_view(&self) -> FlowyResult<Option<ViewRevision>> {
|
||||||
match KV::get_str(LATEST_VIEW_ID) {
|
match KV::get_str(LATEST_VIEW_ID) {
|
||||||
None => Ok(None),
|
None => Ok(None),
|
||||||
|
@ -11,7 +11,7 @@ use crate::{
|
|||||||
services::{TrashController, ViewController},
|
services::{TrashController, ViewController},
|
||||||
};
|
};
|
||||||
use flowy_folder_data_model::entities::view::{MoveFolderItemParams, MoveFolderItemPayload, MoveFolderItemType};
|
use flowy_folder_data_model::entities::view::{MoveFolderItemParams, MoveFolderItemPayload, MoveFolderItemType};
|
||||||
use flowy_folder_data_model::entities::{UpdateViewInfoParams, UpdateViewInfoPayload, ViewInfo};
|
use flowy_folder_data_model::entities::ViewInfo;
|
||||||
use flowy_folder_data_model::revision::TrashRevision;
|
use flowy_folder_data_model::revision::TrashRevision;
|
||||||
use lib_dispatch::prelude::{data_result, AppData, Data, DataResult};
|
use lib_dispatch::prelude::{data_result, AppData, Data, DataResult};
|
||||||
use std::{convert::TryInto, sync::Arc};
|
use std::{convert::TryInto, sync::Arc};
|
||||||
@ -54,17 +54,6 @@ pub(crate) async fn update_view_handler(
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tracing::instrument(level = "debug", skip(data, controller), err)]
|
|
||||||
pub(crate) async fn update_view_info_handler(
|
|
||||||
data: Data<UpdateViewInfoPayload>,
|
|
||||||
controller: AppData<Arc<ViewController>>,
|
|
||||||
) -> Result<(), FlowyError> {
|
|
||||||
let params: UpdateViewInfoParams = data.into_inner().try_into()?;
|
|
||||||
let _ = controller.update_view_info(params).await?;
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
pub(crate) async fn delete_view_handler(
|
pub(crate) async fn delete_view_handler(
|
||||||
data: Data<RepeatedViewId>,
|
data: Data<RepeatedViewId>,
|
||||||
view_controller: AppData<Arc<ViewController>>,
|
view_controller: AppData<Arc<ViewController>>,
|
||||||
|
@ -6,7 +6,7 @@ use bytes::Bytes;
|
|||||||
use dashmap::DashMap;
|
use dashmap::DashMap;
|
||||||
use flowy_database::ConnectionPool;
|
use flowy_database::ConnectionPool;
|
||||||
use flowy_error::{FlowyError, FlowyResult};
|
use flowy_error::{FlowyError, FlowyResult};
|
||||||
use flowy_grid_data_model::revision::{BuildGridContext, GridRevision};
|
use flowy_grid_data_model::revision::{BuildGridContext, GridInfoRevision, GridRevision};
|
||||||
use flowy_revision::disk::{SQLiteGridBlockMetaRevisionPersistence, SQLiteGridRevisionPersistence};
|
use flowy_revision::disk::{SQLiteGridBlockMetaRevisionPersistence, SQLiteGridRevisionPersistence};
|
||||||
use flowy_revision::{RevisionManager, RevisionPersistence, RevisionWebSocket};
|
use flowy_revision::{RevisionManager, RevisionPersistence, RevisionWebSocket};
|
||||||
use flowy_sync::client_grid::{make_block_meta_delta, make_grid_delta};
|
use flowy_sync::client_grid::{make_block_meta_delta, make_grid_delta};
|
||||||
@ -160,6 +160,7 @@ pub async fn make_grid_view_data(
|
|||||||
grid_id: view_id.to_string(),
|
grid_id: view_id.to_string(),
|
||||||
fields: build_context.field_revs,
|
fields: build_context.field_revs,
|
||||||
blocks: build_context.blocks,
|
blocks: build_context.blocks,
|
||||||
|
info: GridInfoRevision::default(),
|
||||||
};
|
};
|
||||||
|
|
||||||
// Create grid
|
// Create grid
|
||||||
|
@ -45,7 +45,7 @@ impl CellDataOperation<String> for CheckboxTypeOption {
|
|||||||
&self,
|
&self,
|
||||||
encoded_data: T,
|
encoded_data: T,
|
||||||
decoded_field_type: &FieldType,
|
decoded_field_type: &FieldType,
|
||||||
field_rev: &FieldRevision,
|
_field_rev: &FieldRevision,
|
||||||
) -> FlowyResult<DecodedCellData>
|
) -> FlowyResult<DecodedCellData>
|
||||||
where
|
where
|
||||||
T: Into<String>,
|
T: Into<String>,
|
||||||
|
@ -120,7 +120,7 @@ impl CellDataOperation<String> for DateTypeOption {
|
|||||||
&self,
|
&self,
|
||||||
encoded_data: T,
|
encoded_data: T,
|
||||||
decoded_field_type: &FieldType,
|
decoded_field_type: &FieldType,
|
||||||
field_rev: &FieldRevision,
|
_field_rev: &FieldRevision,
|
||||||
) -> FlowyResult<DecodedCellData>
|
) -> FlowyResult<DecodedCellData>
|
||||||
where
|
where
|
||||||
T: Into<String>,
|
T: Into<String>,
|
||||||
|
@ -144,7 +144,7 @@ impl CellDataOperation<String> for NumberTypeOption {
|
|||||||
&self,
|
&self,
|
||||||
encoded_data: T,
|
encoded_data: T,
|
||||||
decoded_field_type: &FieldType,
|
decoded_field_type: &FieldType,
|
||||||
field_rev: &FieldRevision,
|
_field_rev: &FieldRevision,
|
||||||
) -> FlowyResult<DecodedCellData>
|
) -> FlowyResult<DecodedCellData>
|
||||||
where
|
where
|
||||||
T: Into<String>,
|
T: Into<String>,
|
||||||
|
@ -99,7 +99,7 @@ impl CellDataOperation<String> for SingleSelectTypeOption {
|
|||||||
&self,
|
&self,
|
||||||
encoded_data: T,
|
encoded_data: T,
|
||||||
decoded_field_type: &FieldType,
|
decoded_field_type: &FieldType,
|
||||||
field_rev: &FieldRevision,
|
_field_rev: &FieldRevision,
|
||||||
) -> FlowyResult<DecodedCellData>
|
) -> FlowyResult<DecodedCellData>
|
||||||
where
|
where
|
||||||
T: Into<String>,
|
T: Into<String>,
|
||||||
@ -197,7 +197,7 @@ impl CellDataOperation<String> for MultiSelectTypeOption {
|
|||||||
&self,
|
&self,
|
||||||
encoded_data: T,
|
encoded_data: T,
|
||||||
decoded_field_type: &FieldType,
|
decoded_field_type: &FieldType,
|
||||||
field_rev: &FieldRevision,
|
_field_rev: &FieldRevision,
|
||||||
) -> FlowyResult<DecodedCellData>
|
) -> FlowyResult<DecodedCellData>
|
||||||
where
|
where
|
||||||
T: Into<String>,
|
T: Into<String>,
|
||||||
|
@ -38,7 +38,7 @@ impl CellDataOperation<EncodedCellData<URLCellData>> for URLTypeOption {
|
|||||||
&self,
|
&self,
|
||||||
encoded_data: T,
|
encoded_data: T,
|
||||||
decoded_field_type: &FieldType,
|
decoded_field_type: &FieldType,
|
||||||
field_rev: &FieldRevision,
|
_field_rev: &FieldRevision,
|
||||||
) -> FlowyResult<DecodedCellData>
|
) -> FlowyResult<DecodedCellData>
|
||||||
where
|
where
|
||||||
T: Into<EncodedCellData<URLCellData>>,
|
T: Into<EncodedCellData<URLCellData>>,
|
||||||
|
@ -24,10 +24,7 @@ impl<'a> CreateRowMetaBuilder<'a> {
|
|||||||
visibility: true,
|
visibility: true,
|
||||||
};
|
};
|
||||||
|
|
||||||
Self {
|
Self { field_rev_map, payload }
|
||||||
field_rev_map: field_rev_map,
|
|
||||||
payload,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn add_cell(&mut self, field_id: &str, data: String) -> FlowyResult<()> {
|
pub fn add_cell(&mut self, field_id: &str, data: String) -> FlowyResult<()> {
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
use bytes::Bytes;
|
use bytes::Bytes;
|
||||||
use flowy_database::ConnectionPool;
|
use flowy_database::ConnectionPool;
|
||||||
use flowy_folder::entities::UpdateViewInfoParams;
|
|
||||||
use flowy_folder::manager::{ViewDataProcessor, ViewDataProcessorMap};
|
use flowy_folder::manager::{ViewDataProcessor, ViewDataProcessorMap};
|
||||||
use flowy_folder::prelude::ViewDataType;
|
use flowy_folder::prelude::ViewDataType;
|
||||||
use flowy_folder::{
|
use flowy_folder::{
|
||||||
@ -204,11 +203,6 @@ impl ViewDataProcessor for TextBlockViewDataProcessor {
|
|||||||
FutureResult::new(async move { Ok(Bytes::from(data)) })
|
FutureResult::new(async move { Ok(Bytes::from(data)) })
|
||||||
}
|
}
|
||||||
|
|
||||||
fn handle_view_info_updated(&self, _params: UpdateViewInfoParams) -> FutureResult<(), FlowyError> {
|
|
||||||
tracing::warn!("Unimplemented the handle_view_info_updated in TextBlock");
|
|
||||||
FutureResult::new(async { Ok(()) })
|
|
||||||
}
|
|
||||||
|
|
||||||
fn data_type(&self) -> ViewDataType {
|
fn data_type(&self) -> ViewDataType {
|
||||||
ViewDataType::TextBlock
|
ViewDataType::TextBlock
|
||||||
}
|
}
|
||||||
@ -284,10 +278,6 @@ impl ViewDataProcessor for GridViewDataProcessor {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
fn handle_view_info_updated(&self, params: UpdateViewInfoParams) -> FutureResult<(), FlowyError> {
|
|
||||||
todo!()
|
|
||||||
}
|
|
||||||
|
|
||||||
fn data_type(&self) -> ViewDataType {
|
fn data_type(&self) -> ViewDataType {
|
||||||
ViewDataType::Grid
|
ViewDataType::Grid
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,5 @@
|
|||||||
use crate::entities::{RepeatedView, ViewDataType};
|
use crate::entities::{RepeatedView, ViewDataType};
|
||||||
use crate::parser::view::ViewIdentify;
|
|
||||||
use crate::parser::view_info::{ViewFilterParser, ViewGroupParser, ViewSortParser};
|
|
||||||
use flowy_derive::ProtoBuf;
|
use flowy_derive::ProtoBuf;
|
||||||
use flowy_error_code::ErrorCode;
|
|
||||||
use std::convert::TryInto;
|
|
||||||
|
|
||||||
#[derive(Eq, PartialEq, ProtoBuf, Debug, Default, Clone)]
|
#[derive(Eq, PartialEq, ProtoBuf, Debug, Default, Clone)]
|
||||||
pub struct ViewInfo {
|
pub struct ViewInfo {
|
||||||
@ -26,90 +22,5 @@ pub struct ViewInfo {
|
|||||||
pub belongings: RepeatedView,
|
pub belongings: RepeatedView,
|
||||||
|
|
||||||
#[pb(index = 7)]
|
#[pb(index = 7)]
|
||||||
pub ext_data: ViewExtData,
|
pub ext_data: String,
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Eq, PartialEq, ProtoBuf, Debug, Default, Clone)]
|
|
||||||
pub struct ViewExtData {
|
|
||||||
#[pb(index = 1)]
|
|
||||||
pub filter: ViewFilter,
|
|
||||||
|
|
||||||
#[pb(index = 2)]
|
|
||||||
pub group: ViewGroup,
|
|
||||||
|
|
||||||
#[pb(index = 3)]
|
|
||||||
pub sort: ViewSort,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Eq, PartialEq, ProtoBuf, Debug, Default, Clone)]
|
|
||||||
pub struct ViewFilter {
|
|
||||||
#[pb(index = 1)]
|
|
||||||
pub object_id: String,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Eq, PartialEq, ProtoBuf, Debug, Default, Clone)]
|
|
||||||
pub struct ViewGroup {
|
|
||||||
#[pb(index = 1)]
|
|
||||||
pub group_object_id: String,
|
|
||||||
|
|
||||||
#[pb(index = 2, one_of)]
|
|
||||||
pub sub_group_object_id: Option<String>,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Eq, PartialEq, ProtoBuf, Debug, Default, Clone)]
|
|
||||||
pub struct ViewSort {
|
|
||||||
#[pb(index = 1)]
|
|
||||||
pub object_id: String,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Default, ProtoBuf)]
|
|
||||||
pub struct UpdateViewInfoPayload {
|
|
||||||
#[pb(index = 1)]
|
|
||||||
pub view_id: String,
|
|
||||||
|
|
||||||
#[pb(index = 2, one_of)]
|
|
||||||
pub filter: Option<ViewFilter>,
|
|
||||||
|
|
||||||
#[pb(index = 3, one_of)]
|
|
||||||
pub group: Option<ViewGroup>,
|
|
||||||
|
|
||||||
#[pb(index = 4, one_of)]
|
|
||||||
pub sort: Option<ViewSort>,
|
|
||||||
}
|
|
||||||
|
|
||||||
pub struct UpdateViewInfoParams {
|
|
||||||
pub view_id: String,
|
|
||||||
pub filter: Option<ViewFilter>,
|
|
||||||
pub group: Option<ViewGroup>,
|
|
||||||
pub sort: Option<ViewSort>,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl TryInto<UpdateViewInfoParams> for UpdateViewInfoPayload {
|
|
||||||
type Error = ErrorCode;
|
|
||||||
|
|
||||||
fn try_into(self) -> Result<UpdateViewInfoParams, Self::Error> {
|
|
||||||
let view_id = ViewIdentify::parse(self.view_id)?.0;
|
|
||||||
|
|
||||||
let filter = match self.filter {
|
|
||||||
None => None,
|
|
||||||
Some(filter) => Some(ViewFilterParser::parse(filter)?),
|
|
||||||
};
|
|
||||||
|
|
||||||
let group = match self.group {
|
|
||||||
None => None,
|
|
||||||
Some(group) => Some(ViewGroupParser::parse(group)?),
|
|
||||||
};
|
|
||||||
|
|
||||||
let sort = match self.sort {
|
|
||||||
None => None,
|
|
||||||
Some(sort) => Some(ViewSortParser::parse(sort)?),
|
|
||||||
};
|
|
||||||
|
|
||||||
Ok(UpdateViewInfoParams {
|
|
||||||
view_id,
|
|
||||||
filter,
|
|
||||||
group,
|
|
||||||
sort,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
pub mod app;
|
pub mod app;
|
||||||
pub mod trash;
|
pub mod trash;
|
||||||
pub mod view;
|
pub mod view;
|
||||||
pub mod view_info;
|
|
||||||
pub mod workspace;
|
pub mod workspace;
|
||||||
|
@ -1,5 +0,0 @@
|
|||||||
mod object_id;
|
|
||||||
mod view_ext;
|
|
||||||
|
|
||||||
pub use object_id::*;
|
|
||||||
pub use view_ext::*;
|
|
@ -1,19 +0,0 @@
|
|||||||
use crate::errors::ErrorCode;
|
|
||||||
|
|
||||||
#[derive(Debug)]
|
|
||||||
pub struct ObjectId(pub String);
|
|
||||||
|
|
||||||
impl ObjectId {
|
|
||||||
pub fn parse(s: String) -> Result<ObjectId, ErrorCode> {
|
|
||||||
if s.trim().is_empty() {
|
|
||||||
return Err(ErrorCode::UnexpectedEmptyString);
|
|
||||||
}
|
|
||||||
Ok(Self(s))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl AsRef<str> for ObjectId {
|
|
||||||
fn as_ref(&self) -> &str {
|
|
||||||
&self.0
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,40 +0,0 @@
|
|||||||
use crate::entities::{ViewFilter, ViewGroup, ViewSort};
|
|
||||||
use crate::errors::ErrorCode;
|
|
||||||
use crate::parser::view_info::ObjectId;
|
|
||||||
|
|
||||||
pub struct ViewFilterParser(pub ViewFilter);
|
|
||||||
|
|
||||||
impl ViewFilterParser {
|
|
||||||
pub fn parse(value: ViewFilter) -> Result<ViewFilter, ErrorCode> {
|
|
||||||
let object_id = ObjectId::parse(value.object_id)?.0;
|
|
||||||
Ok(ViewFilter { object_id })
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub struct ViewGroupParser(pub ViewGroup);
|
|
||||||
|
|
||||||
impl ViewGroupParser {
|
|
||||||
pub fn parse(value: ViewGroup) -> Result<ViewGroup, ErrorCode> {
|
|
||||||
let group_object_id = ObjectId::parse(value.group_object_id)?.0;
|
|
||||||
|
|
||||||
let sub_group_object_id = match value.sub_group_object_id {
|
|
||||||
None => None,
|
|
||||||
Some(object_id) => Some(ObjectId::parse(object_id)?.0),
|
|
||||||
};
|
|
||||||
|
|
||||||
Ok(ViewGroup {
|
|
||||||
group_object_id,
|
|
||||||
sub_group_object_id,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub struct ViewSortParser(pub ViewSort);
|
|
||||||
|
|
||||||
impl ViewSortParser {
|
|
||||||
pub fn parse(value: ViewSort) -> Result<ViewSort, ErrorCode> {
|
|
||||||
let object_id = ObjectId::parse(value.object_id)?.0;
|
|
||||||
|
|
||||||
Ok(ViewSort { object_id })
|
|
||||||
}
|
|
||||||
}
|
|
File diff suppressed because it is too large
Load Diff
@ -8,26 +8,5 @@ message ViewInfo {
|
|||||||
string desc = 4;
|
string desc = 4;
|
||||||
ViewDataType data_type = 5;
|
ViewDataType data_type = 5;
|
||||||
RepeatedView belongings = 6;
|
RepeatedView belongings = 6;
|
||||||
ViewExtData ext_data = 7;
|
string ext_data = 7;
|
||||||
}
|
|
||||||
message ViewExtData {
|
|
||||||
ViewFilter filter = 1;
|
|
||||||
ViewGroup group = 2;
|
|
||||||
ViewSort sort = 3;
|
|
||||||
}
|
|
||||||
message ViewFilter {
|
|
||||||
string object_id = 1;
|
|
||||||
}
|
|
||||||
message ViewGroup {
|
|
||||||
string group_object_id = 1;
|
|
||||||
oneof one_of_sub_group_object_id { string sub_group_object_id = 2; };
|
|
||||||
}
|
|
||||||
message ViewSort {
|
|
||||||
string object_id = 1;
|
|
||||||
}
|
|
||||||
message UpdateViewInfoPayload {
|
|
||||||
string view_id = 1;
|
|
||||||
oneof one_of_filter { ViewFilter filter = 2; };
|
|
||||||
oneof one_of_group { ViewGroup group = 3; };
|
|
||||||
oneof one_of_sort { ViewSort sort = 4; };
|
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
mod app;
|
mod app_rev;
|
||||||
mod trash;
|
mod trash_rev;
|
||||||
mod view;
|
mod view_rev;
|
||||||
mod workspace;
|
mod workspace_rev;
|
||||||
|
|
||||||
pub use app::*;
|
pub use app_rev::*;
|
||||||
pub use trash::*;
|
pub use trash_rev::*;
|
||||||
pub use view::*;
|
pub use view_rev::*;
|
||||||
pub use workspace::*;
|
pub use workspace_rev::*;
|
||||||
|
@ -1,142 +0,0 @@
|
|||||||
use crate::entities::view::{View, ViewDataType};
|
|
||||||
use crate::entities::{RepeatedView, TrashType, ViewExtData, ViewFilter, ViewGroup, ViewSort};
|
|
||||||
use crate::revision::TrashRevision;
|
|
||||||
use serde::{Deserialize, Serialize};
|
|
||||||
|
|
||||||
#[derive(Default, Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
|
|
||||||
pub struct ViewRevision {
|
|
||||||
pub id: String,
|
|
||||||
|
|
||||||
pub belong_to_id: String,
|
|
||||||
|
|
||||||
pub name: String,
|
|
||||||
|
|
||||||
pub desc: String,
|
|
||||||
|
|
||||||
#[serde(default)]
|
|
||||||
pub data_type: ViewDataType,
|
|
||||||
|
|
||||||
pub version: i64,
|
|
||||||
|
|
||||||
pub belongings: Vec<ViewRevision>,
|
|
||||||
|
|
||||||
pub modified_time: i64,
|
|
||||||
|
|
||||||
pub create_time: i64,
|
|
||||||
|
|
||||||
#[serde(default)]
|
|
||||||
pub ext_data: String,
|
|
||||||
|
|
||||||
#[serde(default)]
|
|
||||||
pub thumbnail: String,
|
|
||||||
|
|
||||||
#[serde(default = "default_plugin_type")]
|
|
||||||
pub plugin_type: i32,
|
|
||||||
}
|
|
||||||
|
|
||||||
fn default_plugin_type() -> i32 {
|
|
||||||
0
|
|
||||||
}
|
|
||||||
|
|
||||||
impl std::convert::From<ViewRevision> for View {
|
|
||||||
fn from(view_serde: ViewRevision) -> Self {
|
|
||||||
View {
|
|
||||||
id: view_serde.id,
|
|
||||||
belong_to_id: view_serde.belong_to_id,
|
|
||||||
name: view_serde.name,
|
|
||||||
data_type: view_serde.data_type,
|
|
||||||
modified_time: view_serde.modified_time,
|
|
||||||
create_time: view_serde.create_time,
|
|
||||||
plugin_type: view_serde.plugin_type,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl std::convert::From<ViewRevision> for TrashRevision {
|
|
||||||
fn from(view_rev: ViewRevision) -> Self {
|
|
||||||
TrashRevision {
|
|
||||||
id: view_rev.id,
|
|
||||||
name: view_rev.name,
|
|
||||||
modified_time: view_rev.modified_time,
|
|
||||||
create_time: view_rev.create_time,
|
|
||||||
ty: TrashType::TrashView,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize)]
|
|
||||||
pub struct ViewExtDataRevision {
|
|
||||||
pub filter: ViewFilterRevision,
|
|
||||||
pub group: ViewGroupRevision,
|
|
||||||
pub sort: ViewSortRevision,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize)]
|
|
||||||
pub struct ViewFilterRevision {
|
|
||||||
pub field_id: String,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize)]
|
|
||||||
pub struct ViewGroupRevision {
|
|
||||||
pub group_field_id: String,
|
|
||||||
pub sub_group_field_id: Option<String>,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize)]
|
|
||||||
pub struct ViewSortRevision {
|
|
||||||
field_id: String,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl std::convert::From<String> for ViewExtData {
|
|
||||||
fn from(s: String) -> Self {
|
|
||||||
match serde_json::from_str::<ViewExtDataRevision>(&s) {
|
|
||||||
Ok(data) => data.into(),
|
|
||||||
Err(err) => {
|
|
||||||
log::error!("{:?}", err);
|
|
||||||
ViewExtData::default()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl std::convert::From<ViewExtDataRevision> for ViewExtData {
|
|
||||||
fn from(rev: ViewExtDataRevision) -> Self {
|
|
||||||
ViewExtData {
|
|
||||||
filter: rev.filter.into(),
|
|
||||||
group: rev.group.into(),
|
|
||||||
sort: rev.sort.into(),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl std::convert::From<ViewFilterRevision> for ViewFilter {
|
|
||||||
fn from(rev: ViewFilterRevision) -> Self {
|
|
||||||
ViewFilter {
|
|
||||||
object_id: rev.field_id,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl std::convert::From<ViewGroupRevision> for ViewGroup {
|
|
||||||
fn from(rev: ViewGroupRevision) -> Self {
|
|
||||||
ViewGroup {
|
|
||||||
group_object_id: rev.group_field_id,
|
|
||||||
sub_group_object_id: rev.sub_group_field_id,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl std::convert::From<ViewSortRevision> for ViewSort {
|
|
||||||
fn from(rev: ViewSortRevision) -> Self {
|
|
||||||
ViewSort {
|
|
||||||
object_id: rev.field_id,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl std::convert::From<Vec<ViewRevision>> for RepeatedView {
|
|
||||||
fn from(values: Vec<ViewRevision>) -> Self {
|
|
||||||
let items = values.into_iter().map(|value| value.into()).collect::<Vec<View>>();
|
|
||||||
RepeatedView { items }
|
|
||||||
}
|
|
||||||
}
|
|
71
shared-lib/flowy-folder-data-model/src/revision/view_rev.rs
Normal file
71
shared-lib/flowy-folder-data-model/src/revision/view_rev.rs
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
use crate::entities::view::{View, ViewDataType};
|
||||||
|
use crate::entities::{RepeatedView, TrashType};
|
||||||
|
use crate::revision::TrashRevision;
|
||||||
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
|
#[derive(Default, Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
|
||||||
|
pub struct ViewRevision {
|
||||||
|
pub id: String,
|
||||||
|
|
||||||
|
pub belong_to_id: String,
|
||||||
|
|
||||||
|
pub name: String,
|
||||||
|
|
||||||
|
pub desc: String,
|
||||||
|
|
||||||
|
#[serde(default)]
|
||||||
|
pub data_type: ViewDataType,
|
||||||
|
|
||||||
|
pub version: i64,
|
||||||
|
|
||||||
|
pub belongings: Vec<ViewRevision>,
|
||||||
|
|
||||||
|
pub modified_time: i64,
|
||||||
|
|
||||||
|
pub create_time: i64,
|
||||||
|
|
||||||
|
#[serde(default)]
|
||||||
|
pub ext_data: String,
|
||||||
|
|
||||||
|
#[serde(default)]
|
||||||
|
pub thumbnail: String,
|
||||||
|
|
||||||
|
#[serde(default = "default_plugin_type")]
|
||||||
|
pub plugin_type: i32,
|
||||||
|
}
|
||||||
|
|
||||||
|
fn default_plugin_type() -> i32 {
|
||||||
|
0
|
||||||
|
}
|
||||||
|
|
||||||
|
impl std::convert::From<ViewRevision> for View {
|
||||||
|
fn from(view_serde: ViewRevision) -> Self {
|
||||||
|
View {
|
||||||
|
id: view_serde.id,
|
||||||
|
belong_to_id: view_serde.belong_to_id,
|
||||||
|
name: view_serde.name,
|
||||||
|
data_type: view_serde.data_type,
|
||||||
|
modified_time: view_serde.modified_time,
|
||||||
|
create_time: view_serde.create_time,
|
||||||
|
plugin_type: view_serde.plugin_type,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl std::convert::From<ViewRevision> for TrashRevision {
|
||||||
|
fn from(view_rev: ViewRevision) -> Self {
|
||||||
|
TrashRevision {
|
||||||
|
id: view_rev.id,
|
||||||
|
name: view_rev.name,
|
||||||
|
modified_time: view_rev.modified_time,
|
||||||
|
create_time: view_rev.create_time,
|
||||||
|
ty: TrashType::TrashView,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
impl std::convert::From<Vec<ViewRevision>> for RepeatedView {
|
||||||
|
fn from(values: Vec<ViewRevision>) -> Self {
|
||||||
|
let items = values.into_iter().map(|value| value.into()).collect::<Vec<View>>();
|
||||||
|
RepeatedView { items }
|
||||||
|
}
|
||||||
|
}
|
@ -1,10 +1,8 @@
|
|||||||
use crate::parser::NotEmptyStr;
|
use crate::parser::NotEmptyStr;
|
||||||
use crate::revision::{CellRevision, FieldRevision, RowMetaChangeset, RowRevision};
|
use crate::revision::FieldRevision;
|
||||||
use flowy_derive::{ProtoBuf, ProtoBuf_Enum};
|
use flowy_derive::{ProtoBuf, ProtoBuf_Enum};
|
||||||
use flowy_error_code::ErrorCode;
|
use flowy_error_code::ErrorCode;
|
||||||
|
|
||||||
use serde_repr::*;
|
use serde_repr::*;
|
||||||
|
|
||||||
use strum_macros::{Display, EnumCount as EnumCountMacro, EnumIter, EnumString};
|
use strum_macros::{Display, EnumCount as EnumCountMacro, EnumIter, EnumString};
|
||||||
|
|
||||||
#[derive(Debug, Clone, Default, ProtoBuf)]
|
#[derive(Debug, Clone, Default, ProtoBuf)]
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
use crate::entities::FieldOrder;
|
use crate::entities::FieldOrder;
|
||||||
use crate::parser::NotEmptyStr;
|
use crate::parser::NotEmptyStr;
|
||||||
use crate::revision::{CellRevision, FieldRevision, RowMetaChangeset, RowRevision};
|
use crate::revision::RowRevision;
|
||||||
use flowy_derive::{ProtoBuf, ProtoBuf_Enum};
|
use flowy_derive::{ProtoBuf, ProtoBuf_Enum};
|
||||||
use flowy_error_code::ErrorCode;
|
use flowy_error_code::ErrorCode;
|
||||||
|
|
||||||
|
91
shared-lib/flowy-grid-data-model/src/entities/grid_info.rs
Normal file
91
shared-lib/flowy-grid-data-model/src/entities/grid_info.rs
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
use crate::parser::{NotEmptyStr, ViewFilterParser, ViewGroupParser, ViewSortParser};
|
||||||
|
use flowy_derive::ProtoBuf;
|
||||||
|
use flowy_error_code::ErrorCode;
|
||||||
|
use std::convert::TryInto;
|
||||||
|
|
||||||
|
#[derive(Eq, PartialEq, ProtoBuf, Debug, Default, Clone)]
|
||||||
|
pub struct ViewExtData {
|
||||||
|
#[pb(index = 1)]
|
||||||
|
pub filter: ViewFilter,
|
||||||
|
|
||||||
|
#[pb(index = 2)]
|
||||||
|
pub group: ViewGroup,
|
||||||
|
|
||||||
|
#[pb(index = 3)]
|
||||||
|
pub sort: ViewSort,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Eq, PartialEq, ProtoBuf, Debug, Default, Clone)]
|
||||||
|
pub struct ViewFilter {
|
||||||
|
#[pb(index = 1, one_of)]
|
||||||
|
pub field_id: Option<String>,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Eq, PartialEq, ProtoBuf, Debug, Default, Clone)]
|
||||||
|
pub struct ViewGroup {
|
||||||
|
#[pb(index = 1, one_of)]
|
||||||
|
pub group_field_id: Option<String>,
|
||||||
|
|
||||||
|
#[pb(index = 2, one_of)]
|
||||||
|
pub sub_group_field_id: Option<String>,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Eq, PartialEq, ProtoBuf, Debug, Default, Clone)]
|
||||||
|
pub struct ViewSort {
|
||||||
|
#[pb(index = 1, one_of)]
|
||||||
|
pub field_id: Option<String>,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Default, ProtoBuf)]
|
||||||
|
pub struct GridInfoChangesetPayload {
|
||||||
|
#[pb(index = 1)]
|
||||||
|
pub grid_id: String,
|
||||||
|
|
||||||
|
#[pb(index = 2, one_of)]
|
||||||
|
pub filter: Option<ViewFilter>,
|
||||||
|
|
||||||
|
#[pb(index = 3, one_of)]
|
||||||
|
pub group: Option<ViewGroup>,
|
||||||
|
|
||||||
|
#[pb(index = 4, one_of)]
|
||||||
|
pub sort: Option<ViewSort>,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct GridInfoChangesetParams {
|
||||||
|
pub view_id: String,
|
||||||
|
pub filter: Option<ViewFilter>,
|
||||||
|
pub group: Option<ViewGroup>,
|
||||||
|
pub sort: Option<ViewSort>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl TryInto<GridInfoChangesetParams> for GridInfoChangesetPayload {
|
||||||
|
type Error = ErrorCode;
|
||||||
|
|
||||||
|
fn try_into(self) -> Result<GridInfoChangesetParams, Self::Error> {
|
||||||
|
let view_id = NotEmptyStr::parse(self.grid_id)
|
||||||
|
.map_err(|_| ErrorCode::FieldIdIsEmpty)?
|
||||||
|
.0;
|
||||||
|
|
||||||
|
let filter = match self.filter {
|
||||||
|
None => None,
|
||||||
|
Some(filter) => Some(ViewFilterParser::parse(filter)?),
|
||||||
|
};
|
||||||
|
|
||||||
|
let group = match self.group {
|
||||||
|
None => None,
|
||||||
|
Some(group) => Some(ViewGroupParser::parse(group)?),
|
||||||
|
};
|
||||||
|
|
||||||
|
let sort = match self.sort {
|
||||||
|
None => None,
|
||||||
|
Some(sort) => Some(ViewSortParser::parse(sort)?),
|
||||||
|
};
|
||||||
|
|
||||||
|
Ok(GridInfoChangesetParams {
|
||||||
|
view_id,
|
||||||
|
filter,
|
||||||
|
group,
|
||||||
|
sort,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
@ -1,5 +1,7 @@
|
|||||||
mod field;
|
mod field;
|
||||||
mod grid;
|
mod grid;
|
||||||
|
mod grid_info;
|
||||||
|
|
||||||
pub use field::*;
|
pub use field::*;
|
||||||
pub use grid::*;
|
pub use grid::*;
|
||||||
|
pub use grid_info::*;
|
||||||
|
@ -0,0 +1,58 @@
|
|||||||
|
use crate::entities::{ViewFilter, ViewGroup, ViewSort};
|
||||||
|
use crate::parser::NotEmptyStr;
|
||||||
|
use flowy_error_code::ErrorCode;
|
||||||
|
|
||||||
|
pub struct ViewFilterParser(pub ViewFilter);
|
||||||
|
|
||||||
|
impl ViewFilterParser {
|
||||||
|
pub fn parse(value: ViewFilter) -> Result<ViewFilter, ErrorCode> {
|
||||||
|
let field_id = match value.field_id {
|
||||||
|
None => None,
|
||||||
|
Some(field_id) => Some(NotEmptyStr::parse(field_id).map_err(|_| ErrorCode::FieldIdIsEmpty)?.0),
|
||||||
|
};
|
||||||
|
|
||||||
|
Ok(ViewFilter { field_id })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct ViewGroupParser(pub ViewGroup);
|
||||||
|
|
||||||
|
impl ViewGroupParser {
|
||||||
|
pub fn parse(value: ViewGroup) -> Result<ViewGroup, ErrorCode> {
|
||||||
|
let group_field_id = match value.group_field_id {
|
||||||
|
None => None,
|
||||||
|
Some(group_field_id) => Some(
|
||||||
|
NotEmptyStr::parse(group_field_id)
|
||||||
|
.map_err(|_| ErrorCode::FieldIdIsEmpty)?
|
||||||
|
.0,
|
||||||
|
),
|
||||||
|
};
|
||||||
|
|
||||||
|
let sub_group_field_id = match value.sub_group_field_id {
|
||||||
|
None => None,
|
||||||
|
Some(sub_group_field_id) => Some(
|
||||||
|
NotEmptyStr::parse(sub_group_field_id)
|
||||||
|
.map_err(|_| ErrorCode::FieldIdIsEmpty)?
|
||||||
|
.0,
|
||||||
|
),
|
||||||
|
};
|
||||||
|
|
||||||
|
Ok(ViewGroup {
|
||||||
|
group_field_id,
|
||||||
|
sub_group_field_id,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct ViewSortParser(pub ViewSort);
|
||||||
|
|
||||||
|
impl ViewSortParser {
|
||||||
|
pub fn parse(value: ViewSort) -> Result<ViewSort, ErrorCode> {
|
||||||
|
let field_id = match value.field_id {
|
||||||
|
None => None,
|
||||||
|
Some(field_id) => Some(NotEmptyStr::parse(field_id).map_err(|_| ErrorCode::FieldIdIsEmpty)?.0),
|
||||||
|
};
|
||||||
|
|
||||||
|
Ok(ViewSort { field_id })
|
||||||
|
}
|
||||||
|
}
|
@ -1,3 +1,5 @@
|
|||||||
|
mod grid_info_parser;
|
||||||
mod str_parser;
|
mod str_parser;
|
||||||
|
|
||||||
|
pub use grid_info_parser::*;
|
||||||
pub use str_parser::*;
|
pub use str_parser::*;
|
||||||
|
1444
shared-lib/flowy-grid-data-model/src/protobuf/model/grid_info.rs
Normal file
1444
shared-lib/flowy-grid-data-model/src/protobuf/model/grid_info.rs
Normal file
File diff suppressed because it is too large
Load Diff
@ -4,5 +4,8 @@
|
|||||||
mod grid;
|
mod grid;
|
||||||
pub use grid::*;
|
pub use grid::*;
|
||||||
|
|
||||||
|
mod grid_info;
|
||||||
|
pub use grid_info::*;
|
||||||
|
|
||||||
mod field;
|
mod field;
|
||||||
pub use field::*;
|
pub use field::*;
|
||||||
|
@ -0,0 +1,23 @@
|
|||||||
|
syntax = "proto3";
|
||||||
|
|
||||||
|
message ViewExtData {
|
||||||
|
ViewFilter filter = 1;
|
||||||
|
ViewGroup group = 2;
|
||||||
|
ViewSort sort = 3;
|
||||||
|
}
|
||||||
|
message ViewFilter {
|
||||||
|
oneof one_of_field_id { string field_id = 1; };
|
||||||
|
}
|
||||||
|
message ViewGroup {
|
||||||
|
oneof one_of_group_field_id { string group_field_id = 1; };
|
||||||
|
oneof one_of_sub_group_field_id { string sub_group_field_id = 2; };
|
||||||
|
}
|
||||||
|
message ViewSort {
|
||||||
|
oneof one_of_field_id { string field_id = 1; };
|
||||||
|
}
|
||||||
|
message GridInfoChangesetPayload {
|
||||||
|
string grid_id = 1;
|
||||||
|
oneof one_of_filter { ViewFilter filter = 2; };
|
||||||
|
oneof one_of_group { ViewGroup group = 3; };
|
||||||
|
oneof one_of_sort { ViewSort sort = 4; };
|
||||||
|
}
|
@ -0,0 +1,66 @@
|
|||||||
|
use crate::entities::{ViewFilter, ViewGroup, ViewSort};
|
||||||
|
use serde::{Deserialize, Serialize};
|
||||||
|
use serde_repr::*;
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
|
||||||
|
pub struct GridInfoRevision {
|
||||||
|
pub filter: GridFilterRevision,
|
||||||
|
pub group: GridGroupRevision,
|
||||||
|
pub sort: GridSortRevision,
|
||||||
|
pub layout: GridLayoutRevision,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
|
||||||
|
pub struct GridLayoutRevision {
|
||||||
|
pub ty: GridLayoutType,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Serialize_repr, Deserialize_repr)]
|
||||||
|
#[repr(u8)]
|
||||||
|
pub enum GridLayoutType {
|
||||||
|
Table = 0,
|
||||||
|
Board = 1,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl std::default::Default for GridLayoutType {
|
||||||
|
fn default() -> Self {
|
||||||
|
GridLayoutType::Table
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
|
||||||
|
pub struct GridFilterRevision {
|
||||||
|
pub field_id: Option<String>,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
|
||||||
|
pub struct GridGroupRevision {
|
||||||
|
pub group_field_id: Option<String>,
|
||||||
|
pub sub_group_field_id: Option<String>,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
|
||||||
|
pub struct GridSortRevision {
|
||||||
|
field_id: Option<String>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl std::convert::From<GridFilterRevision> for ViewFilter {
|
||||||
|
fn from(rev: GridFilterRevision) -> Self {
|
||||||
|
ViewFilter { field_id: rev.field_id }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl std::convert::From<GridGroupRevision> for ViewGroup {
|
||||||
|
fn from(rev: GridGroupRevision) -> Self {
|
||||||
|
ViewGroup {
|
||||||
|
group_field_id: rev.group_field_id,
|
||||||
|
sub_group_field_id: rev.sub_group_field_id,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl std::convert::From<GridSortRevision> for ViewSort {
|
||||||
|
fn from(rev: GridSortRevision) -> Self {
|
||||||
|
ViewSort { field_id: rev.field_id }
|
||||||
|
}
|
||||||
|
}
|
310
shared-lib/flowy-grid-data-model/src/revision/grid_rev.rs
Normal file
310
shared-lib/flowy-grid-data-model/src/revision/grid_rev.rs
Normal file
@ -0,0 +1,310 @@
|
|||||||
|
use crate::entities::{CellChangeset, Field, FieldOrder, FieldType, RowOrder};
|
||||||
|
use crate::revision::GridInfoRevision;
|
||||||
|
use bytes::Bytes;
|
||||||
|
use indexmap::IndexMap;
|
||||||
|
use nanoid::nanoid;
|
||||||
|
use serde::{Deserialize, Serialize};
|
||||||
|
use std::collections::HashMap;
|
||||||
|
use std::sync::Arc;
|
||||||
|
|
||||||
|
pub const DEFAULT_ROW_HEIGHT: i32 = 42;
|
||||||
|
|
||||||
|
pub fn gen_grid_id() -> String {
|
||||||
|
// nanoid calculator https://zelark.github.io/nano-id-cc/
|
||||||
|
nanoid!(10)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn gen_block_id() -> String {
|
||||||
|
nanoid!(10)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn gen_row_id() -> String {
|
||||||
|
nanoid!(6)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn gen_field_id() -> String {
|
||||||
|
nanoid!(6)
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
|
||||||
|
pub struct GridRevision {
|
||||||
|
pub grid_id: String,
|
||||||
|
pub fields: Vec<FieldRevision>,
|
||||||
|
pub blocks: Vec<GridBlockRevision>,
|
||||||
|
|
||||||
|
#[serde(default, skip)]
|
||||||
|
pub info: GridInfoRevision,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl GridRevision {
|
||||||
|
pub fn new(grid_id: &str) -> Self {
|
||||||
|
Self {
|
||||||
|
grid_id: grid_id.to_owned(),
|
||||||
|
fields: vec![],
|
||||||
|
blocks: vec![],
|
||||||
|
info: GridInfoRevision::default(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
|
||||||
|
pub struct GridBlockRevision {
|
||||||
|
pub block_id: String,
|
||||||
|
pub start_row_index: i32,
|
||||||
|
pub row_count: i32,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl GridBlockRevision {
|
||||||
|
pub fn len(&self) -> i32 {
|
||||||
|
self.row_count
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn is_empty(&self) -> bool {
|
||||||
|
self.row_count == 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl GridBlockRevision {
|
||||||
|
pub fn new() -> Self {
|
||||||
|
GridBlockRevision {
|
||||||
|
block_id: gen_block_id(),
|
||||||
|
..Default::default()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct GridBlockRevisionChangeset {
|
||||||
|
pub block_id: String,
|
||||||
|
pub start_row_index: Option<i32>,
|
||||||
|
pub row_count: Option<i32>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl GridBlockRevisionChangeset {
|
||||||
|
pub fn from_row_count(block_id: &str, row_count: i32) -> Self {
|
||||||
|
Self {
|
||||||
|
block_id: block_id.to_string(),
|
||||||
|
start_row_index: None,
|
||||||
|
row_count: Some(row_count),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
|
||||||
|
pub struct GridBlockRevisionData {
|
||||||
|
pub block_id: String,
|
||||||
|
pub rows: Vec<RowRevision>,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Default, Serialize, Deserialize, Eq, PartialEq)]
|
||||||
|
pub struct FieldRevision {
|
||||||
|
pub id: String,
|
||||||
|
|
||||||
|
pub name: String,
|
||||||
|
|
||||||
|
pub desc: String,
|
||||||
|
|
||||||
|
pub field_type: FieldType,
|
||||||
|
|
||||||
|
pub frozen: bool,
|
||||||
|
|
||||||
|
pub visibility: bool,
|
||||||
|
|
||||||
|
pub width: i32,
|
||||||
|
|
||||||
|
/// type_options contains key/value pairs
|
||||||
|
/// key: id of the FieldType
|
||||||
|
/// value: type option data that can be parsed into specified TypeOptionStruct.
|
||||||
|
/// For example, CheckboxTypeOption, MultiSelectTypeOption etc.
|
||||||
|
#[serde(with = "indexmap::serde_seq")]
|
||||||
|
pub type_options: IndexMap<String, String>,
|
||||||
|
|
||||||
|
#[serde(default = "default_is_primary")]
|
||||||
|
pub is_primary: bool,
|
||||||
|
}
|
||||||
|
|
||||||
|
fn default_is_primary() -> bool {
|
||||||
|
false
|
||||||
|
}
|
||||||
|
|
||||||
|
impl FieldRevision {
|
||||||
|
pub fn new(name: &str, desc: &str, field_type: FieldType, is_primary: bool) -> Self {
|
||||||
|
let width = field_type.default_cell_width();
|
||||||
|
Self {
|
||||||
|
id: gen_field_id(),
|
||||||
|
name: name.to_string(),
|
||||||
|
desc: desc.to_string(),
|
||||||
|
field_type,
|
||||||
|
frozen: false,
|
||||||
|
visibility: true,
|
||||||
|
width,
|
||||||
|
type_options: Default::default(),
|
||||||
|
is_primary,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn insert_type_option_entry<T>(&mut self, entry: &T)
|
||||||
|
where
|
||||||
|
T: TypeOptionDataEntry + ?Sized,
|
||||||
|
{
|
||||||
|
self.type_options.insert(entry.field_type().type_id(), entry.json_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_type_option_entry<T: TypeOptionDataDeserializer>(&self, field_type: &FieldType) -> Option<T> {
|
||||||
|
self.type_options
|
||||||
|
.get(&field_type.type_id())
|
||||||
|
.map(|s| T::from_json_str(s))
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn insert_type_option_str(&mut self, field_type: &FieldType, json_str: String) {
|
||||||
|
self.type_options.insert(field_type.type_id(), json_str);
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_type_option_str(&self, field_type: &FieldType) -> Option<String> {
|
||||||
|
self.type_options.get(&field_type.type_id()).map(|s| s.to_owned())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl std::convert::From<FieldRevision> for Field {
|
||||||
|
fn from(field_rev: FieldRevision) -> Self {
|
||||||
|
Self {
|
||||||
|
id: field_rev.id,
|
||||||
|
name: field_rev.name,
|
||||||
|
desc: field_rev.desc,
|
||||||
|
field_type: field_rev.field_type,
|
||||||
|
frozen: field_rev.frozen,
|
||||||
|
visibility: field_rev.visibility,
|
||||||
|
width: field_rev.width,
|
||||||
|
is_primary: field_rev.is_primary,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl std::convert::From<&FieldRevision> for FieldOrder {
|
||||||
|
fn from(field_rev: &FieldRevision) -> Self {
|
||||||
|
Self {
|
||||||
|
field_id: field_rev.id.clone(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub trait TypeOptionDataEntry {
|
||||||
|
fn field_type(&self) -> FieldType;
|
||||||
|
fn json_str(&self) -> String;
|
||||||
|
fn protobuf_bytes(&self) -> Bytes;
|
||||||
|
}
|
||||||
|
|
||||||
|
pub trait TypeOptionDataDeserializer {
|
||||||
|
fn from_json_str(s: &str) -> Self;
|
||||||
|
fn from_protobuf_bytes(bytes: Bytes) -> Self;
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
|
||||||
|
pub struct RowRevision {
|
||||||
|
pub id: String,
|
||||||
|
pub block_id: String,
|
||||||
|
/// cells contains key/value pairs.
|
||||||
|
/// key: field id,
|
||||||
|
/// value: CellMeta
|
||||||
|
#[serde(with = "indexmap::serde_seq")]
|
||||||
|
pub cells: IndexMap<String, CellRevision>,
|
||||||
|
pub height: i32,
|
||||||
|
pub visibility: bool,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl RowRevision {
|
||||||
|
pub fn new(block_id: &str) -> Self {
|
||||||
|
Self {
|
||||||
|
id: gen_row_id(),
|
||||||
|
block_id: block_id.to_owned(),
|
||||||
|
cells: Default::default(),
|
||||||
|
height: DEFAULT_ROW_HEIGHT,
|
||||||
|
visibility: true,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl std::convert::From<&RowRevision> for RowOrder {
|
||||||
|
fn from(row: &RowRevision) -> Self {
|
||||||
|
Self {
|
||||||
|
row_id: row.id.clone(),
|
||||||
|
block_id: row.block_id.clone(),
|
||||||
|
height: row.height,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl std::convert::From<&Arc<RowRevision>> for RowOrder {
|
||||||
|
fn from(row: &Arc<RowRevision>) -> Self {
|
||||||
|
Self {
|
||||||
|
row_id: row.id.clone(),
|
||||||
|
block_id: row.block_id.clone(),
|
||||||
|
height: row.height,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Default)]
|
||||||
|
pub struct RowMetaChangeset {
|
||||||
|
pub row_id: String,
|
||||||
|
pub height: Option<i32>,
|
||||||
|
pub visibility: Option<bool>,
|
||||||
|
pub cell_by_field_id: HashMap<String, CellRevision>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl std::convert::From<CellChangeset> for RowMetaChangeset {
|
||||||
|
fn from(changeset: CellChangeset) -> Self {
|
||||||
|
let mut cell_by_field_id = HashMap::with_capacity(1);
|
||||||
|
let field_id = changeset.field_id;
|
||||||
|
let cell_rev = CellRevision {
|
||||||
|
data: changeset.cell_content_changeset.unwrap_or_else(|| "".to_owned()),
|
||||||
|
};
|
||||||
|
cell_by_field_id.insert(field_id, cell_rev);
|
||||||
|
|
||||||
|
RowMetaChangeset {
|
||||||
|
row_id: changeset.row_id,
|
||||||
|
height: None,
|
||||||
|
visibility: None,
|
||||||
|
cell_by_field_id,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize)]
|
||||||
|
pub struct CellRevision {
|
||||||
|
pub data: String,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl CellRevision {
|
||||||
|
pub fn new(data: String) -> Self {
|
||||||
|
Self { data }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Clone, Default, Deserialize, Serialize)]
|
||||||
|
pub struct BuildGridContext {
|
||||||
|
pub field_revs: Vec<FieldRevision>,
|
||||||
|
pub blocks: Vec<GridBlockRevision>,
|
||||||
|
pub blocks_meta_data: Vec<GridBlockRevisionData>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl BuildGridContext {
|
||||||
|
pub fn new() -> Self {
|
||||||
|
Self::default()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl std::convert::From<BuildGridContext> for Bytes {
|
||||||
|
fn from(ctx: BuildGridContext) -> Self {
|
||||||
|
let bytes = serde_json::to_vec(&ctx).unwrap_or_else(|_| vec![]);
|
||||||
|
Bytes::from(bytes)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl std::convert::TryFrom<Bytes> for BuildGridContext {
|
||||||
|
type Error = serde_json::Error;
|
||||||
|
|
||||||
|
fn try_from(bytes: Bytes) -> Result<Self, Self::Error> {
|
||||||
|
let ctx: BuildGridContext = serde_json::from_slice(&bytes)?;
|
||||||
|
Ok(ctx)
|
||||||
|
}
|
||||||
|
}
|
@ -1,296 +1,5 @@
|
|||||||
use crate::entities::{CellChangeset, Field, FieldOrder, FieldType, RowOrder};
|
mod grid_info_rev;
|
||||||
use bytes::Bytes;
|
mod grid_rev;
|
||||||
use indexmap::IndexMap;
|
|
||||||
use nanoid::nanoid;
|
|
||||||
use serde::{Deserialize, Serialize};
|
|
||||||
use std::any::Any;
|
|
||||||
use std::collections::HashMap;
|
|
||||||
use std::sync::Arc;
|
|
||||||
|
|
||||||
pub const DEFAULT_ROW_HEIGHT: i32 = 42;
|
pub use grid_info_rev::*;
|
||||||
|
pub use grid_rev::*;
|
||||||
pub fn gen_grid_id() -> String {
|
|
||||||
// nanoid calculator https://zelark.github.io/nano-id-cc/
|
|
||||||
nanoid!(10)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn gen_block_id() -> String {
|
|
||||||
nanoid!(10)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn gen_row_id() -> String {
|
|
||||||
nanoid!(6)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn gen_field_id() -> String {
|
|
||||||
nanoid!(6)
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
|
|
||||||
pub struct GridRevision {
|
|
||||||
pub grid_id: String,
|
|
||||||
pub fields: Vec<FieldRevision>,
|
|
||||||
pub blocks: Vec<GridBlockRevision>,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
|
|
||||||
pub struct GridBlockRevision {
|
|
||||||
pub block_id: String,
|
|
||||||
pub start_row_index: i32,
|
|
||||||
pub row_count: i32,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl GridBlockRevision {
|
|
||||||
pub fn len(&self) -> i32 {
|
|
||||||
self.row_count
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn is_empty(&self) -> bool {
|
|
||||||
self.row_count == 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl GridBlockRevision {
|
|
||||||
pub fn new() -> Self {
|
|
||||||
GridBlockRevision {
|
|
||||||
block_id: gen_block_id(),
|
|
||||||
..Default::default()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub struct GridBlockRevisionChangeset {
|
|
||||||
pub block_id: String,
|
|
||||||
pub start_row_index: Option<i32>,
|
|
||||||
pub row_count: Option<i32>,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl GridBlockRevisionChangeset {
|
|
||||||
pub fn from_row_count(block_id: &str, row_count: i32) -> Self {
|
|
||||||
Self {
|
|
||||||
block_id: block_id.to_string(),
|
|
||||||
start_row_index: None,
|
|
||||||
row_count: Some(row_count),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
|
|
||||||
pub struct GridBlockRevisionData {
|
|
||||||
pub block_id: String,
|
|
||||||
pub rows: Vec<RowRevision>,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Clone, Default, Serialize, Deserialize, Eq, PartialEq)]
|
|
||||||
pub struct FieldRevision {
|
|
||||||
pub id: String,
|
|
||||||
|
|
||||||
pub name: String,
|
|
||||||
|
|
||||||
pub desc: String,
|
|
||||||
|
|
||||||
pub field_type: FieldType,
|
|
||||||
|
|
||||||
pub frozen: bool,
|
|
||||||
|
|
||||||
pub visibility: bool,
|
|
||||||
|
|
||||||
pub width: i32,
|
|
||||||
|
|
||||||
/// type_options contains key/value pairs
|
|
||||||
/// key: id of the FieldType
|
|
||||||
/// value: type option data that can be parsed into specified TypeOptionStruct.
|
|
||||||
/// For example, CheckboxTypeOption, MultiSelectTypeOption etc.
|
|
||||||
#[serde(with = "indexmap::serde_seq")]
|
|
||||||
pub type_options: IndexMap<String, String>,
|
|
||||||
|
|
||||||
#[serde(default = "default_is_primary")]
|
|
||||||
pub is_primary: bool,
|
|
||||||
}
|
|
||||||
|
|
||||||
fn default_is_primary() -> bool {
|
|
||||||
false
|
|
||||||
}
|
|
||||||
|
|
||||||
impl FieldRevision {
|
|
||||||
pub fn new(name: &str, desc: &str, field_type: FieldType, is_primary: bool) -> Self {
|
|
||||||
let width = field_type.default_cell_width();
|
|
||||||
Self {
|
|
||||||
id: gen_field_id(),
|
|
||||||
name: name.to_string(),
|
|
||||||
desc: desc.to_string(),
|
|
||||||
field_type,
|
|
||||||
frozen: false,
|
|
||||||
visibility: true,
|
|
||||||
width,
|
|
||||||
type_options: Default::default(),
|
|
||||||
is_primary,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn insert_type_option_entry<T>(&mut self, entry: &T)
|
|
||||||
where
|
|
||||||
T: TypeOptionDataEntry + ?Sized,
|
|
||||||
{
|
|
||||||
self.type_options.insert(entry.field_type().type_id(), entry.json_str());
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn get_type_option_entry<T: TypeOptionDataDeserializer>(&self, field_type: &FieldType) -> Option<T> {
|
|
||||||
self.type_options
|
|
||||||
.get(&field_type.type_id())
|
|
||||||
.map(|s| T::from_json_str(s))
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn insert_type_option_str(&mut self, field_type: &FieldType, json_str: String) {
|
|
||||||
self.type_options.insert(field_type.type_id(), json_str);
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn get_type_option_str(&self, field_type: &FieldType) -> Option<String> {
|
|
||||||
self.type_options.get(&field_type.type_id()).map(|s| s.to_owned())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl std::convert::From<FieldRevision> for Field {
|
|
||||||
fn from(field_rev: FieldRevision) -> Self {
|
|
||||||
Self {
|
|
||||||
id: field_rev.id,
|
|
||||||
name: field_rev.name,
|
|
||||||
desc: field_rev.desc,
|
|
||||||
field_type: field_rev.field_type,
|
|
||||||
frozen: field_rev.frozen,
|
|
||||||
visibility: field_rev.visibility,
|
|
||||||
width: field_rev.width,
|
|
||||||
is_primary: field_rev.is_primary,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl std::convert::From<&FieldRevision> for FieldOrder {
|
|
||||||
fn from(field_rev: &FieldRevision) -> Self {
|
|
||||||
Self {
|
|
||||||
field_id: field_rev.id.clone(),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub trait TypeOptionDataEntry {
|
|
||||||
fn field_type(&self) -> FieldType;
|
|
||||||
fn json_str(&self) -> String;
|
|
||||||
fn protobuf_bytes(&self) -> Bytes;
|
|
||||||
}
|
|
||||||
|
|
||||||
pub trait TypeOptionDataDeserializer {
|
|
||||||
fn from_json_str(s: &str) -> Self;
|
|
||||||
fn from_protobuf_bytes(bytes: Bytes) -> Self;
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
|
|
||||||
pub struct RowRevision {
|
|
||||||
pub id: String,
|
|
||||||
pub block_id: String,
|
|
||||||
/// cells contains key/value pairs.
|
|
||||||
/// key: field id,
|
|
||||||
/// value: CellMeta
|
|
||||||
#[serde(with = "indexmap::serde_seq")]
|
|
||||||
pub cells: IndexMap<String, CellRevision>,
|
|
||||||
pub height: i32,
|
|
||||||
pub visibility: bool,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl RowRevision {
|
|
||||||
pub fn new(block_id: &str) -> Self {
|
|
||||||
Self {
|
|
||||||
id: gen_row_id(),
|
|
||||||
block_id: block_id.to_owned(),
|
|
||||||
cells: Default::default(),
|
|
||||||
height: DEFAULT_ROW_HEIGHT,
|
|
||||||
visibility: true,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl std::convert::From<&RowRevision> for RowOrder {
|
|
||||||
fn from(row: &RowRevision) -> Self {
|
|
||||||
Self {
|
|
||||||
row_id: row.id.clone(),
|
|
||||||
block_id: row.block_id.clone(),
|
|
||||||
height: row.height,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl std::convert::From<&Arc<RowRevision>> for RowOrder {
|
|
||||||
fn from(row: &Arc<RowRevision>) -> Self {
|
|
||||||
Self {
|
|
||||||
row_id: row.id.clone(),
|
|
||||||
block_id: row.block_id.clone(),
|
|
||||||
height: row.height,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Clone, Default)]
|
|
||||||
pub struct RowMetaChangeset {
|
|
||||||
pub row_id: String,
|
|
||||||
pub height: Option<i32>,
|
|
||||||
pub visibility: Option<bool>,
|
|
||||||
pub cell_by_field_id: HashMap<String, CellRevision>,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl std::convert::From<CellChangeset> for RowMetaChangeset {
|
|
||||||
fn from(changeset: CellChangeset) -> Self {
|
|
||||||
let mut cell_by_field_id = HashMap::with_capacity(1);
|
|
||||||
let field_id = changeset.field_id;
|
|
||||||
let cell_rev = CellRevision {
|
|
||||||
data: changeset.cell_content_changeset.unwrap_or_else(|| "".to_owned()),
|
|
||||||
};
|
|
||||||
cell_by_field_id.insert(field_id, cell_rev);
|
|
||||||
|
|
||||||
RowMetaChangeset {
|
|
||||||
row_id: changeset.row_id,
|
|
||||||
height: None,
|
|
||||||
visibility: None,
|
|
||||||
cell_by_field_id,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize)]
|
|
||||||
pub struct CellRevision {
|
|
||||||
pub data: String,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl CellRevision {
|
|
||||||
pub fn new(data: String) -> Self {
|
|
||||||
Self { data }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Clone, Default, Deserialize, Serialize)]
|
|
||||||
pub struct BuildGridContext {
|
|
||||||
pub field_revs: Vec<FieldRevision>,
|
|
||||||
pub blocks: Vec<GridBlockRevision>,
|
|
||||||
pub blocks_meta_data: Vec<GridBlockRevisionData>,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl BuildGridContext {
|
|
||||||
pub fn new() -> Self {
|
|
||||||
Self::default()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl std::convert::From<BuildGridContext> for Bytes {
|
|
||||||
fn from(ctx: BuildGridContext) -> Self {
|
|
||||||
let bytes = serde_json::to_vec(&ctx).unwrap_or_else(|_| vec![]);
|
|
||||||
Bytes::from(bytes)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl std::convert::TryFrom<Bytes> for BuildGridContext {
|
|
||||||
type Error = serde_json::Error;
|
|
||||||
|
|
||||||
fn try_from(bytes: Bytes) -> Result<Self, Self::Error> {
|
|
||||||
let ctx: BuildGridContext = serde_json::from_slice(&bytes)?;
|
|
||||||
Ok(ctx)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -3,11 +3,7 @@ use flowy_grid_data_model::revision::*;
|
|||||||
#[test]
|
#[test]
|
||||||
fn grid_default_serde_test() {
|
fn grid_default_serde_test() {
|
||||||
let grid_id = "1".to_owned();
|
let grid_id = "1".to_owned();
|
||||||
let grid = GridRevision {
|
let grid = GridRevision::new(&grid_id);
|
||||||
grid_id,
|
|
||||||
fields: vec![],
|
|
||||||
blocks: vec![],
|
|
||||||
};
|
|
||||||
|
|
||||||
let json = serde_json::to_string(&grid).unwrap();
|
let json = serde_json::to_string(&grid).unwrap();
|
||||||
assert_eq!(json, r#"{"grid_id":"1","fields":[],"blocks":[]}"#)
|
assert_eq!(json, r#"{"grid_id":"1","fields":[],"blocks":[]}"#)
|
||||||
|
@ -79,6 +79,7 @@ mod tests {
|
|||||||
grid_id,
|
grid_id,
|
||||||
fields: build_context.field_revs,
|
fields: build_context.field_revs,
|
||||||
blocks: build_context.blocks,
|
blocks: build_context.blocks,
|
||||||
|
info: Default::default(),
|
||||||
};
|
};
|
||||||
|
|
||||||
let grid_meta_delta = make_grid_delta(&grid_rev);
|
let grid_meta_delta = make_grid_delta(&grid_rev);
|
||||||
|
@ -7,7 +7,6 @@ use flowy_grid_data_model::entities::{FieldChangesetParams, FieldOrder};
|
|||||||
use flowy_grid_data_model::revision::{
|
use flowy_grid_data_model::revision::{
|
||||||
gen_block_id, gen_grid_id, FieldRevision, GridBlockRevision, GridBlockRevisionChangeset, GridRevision,
|
gen_block_id, gen_grid_id, FieldRevision, GridBlockRevision, GridBlockRevisionChangeset, GridRevision,
|
||||||
};
|
};
|
||||||
use futures::StreamExt;
|
|
||||||
use lib_infra::util::move_vec_element;
|
use lib_infra::util::move_vec_element;
|
||||||
use lib_ot::core::{OperationTransformable, PlainTextAttributes, PlainTextDelta, PlainTextDeltaBuilder};
|
use lib_ot::core::{OperationTransformable, PlainTextAttributes, PlainTextDelta, PlainTextDeltaBuilder};
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
@ -423,11 +422,7 @@ pub fn make_grid_revisions(user_id: &str, grid_rev: &GridRevision) -> RepeatedRe
|
|||||||
|
|
||||||
impl std::default::Default for GridRevisionPad {
|
impl std::default::Default for GridRevisionPad {
|
||||||
fn default() -> Self {
|
fn default() -> Self {
|
||||||
let grid = GridRevision {
|
let grid = GridRevision::new(&gen_grid_id());
|
||||||
grid_id: gen_grid_id(),
|
|
||||||
fields: vec![],
|
|
||||||
blocks: vec![],
|
|
||||||
};
|
|
||||||
let delta = make_grid_delta(&grid);
|
let delta = make_grid_delta(&grid);
|
||||||
GridRevisionPad {
|
GridRevisionPad {
|
||||||
grid_rev: Arc::new(grid),
|
grid_rev: Arc::new(grid),
|
||||||
|
Loading…
Reference in New Issue
Block a user