diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/application/cell/cell_controller_builder.dart b/frontend/appflowy_flutter/lib/plugins/database_view/application/cell/cell_controller_builder.dart index 73f995117e..31aefb4a8f 100644 --- a/frontend/appflowy_flutter/lib/plugins/database_view/application/cell/cell_controller_builder.dart +++ b/frontend/appflowy_flutter/lib/plugins/database_view/application/cell/cell_controller_builder.dart @@ -13,7 +13,7 @@ typedef NumberCellController = CellController; typedef SelectOptionCellController = CellController; typedef ChecklistCellController = CellController; -typedef DateCellController = CellController; +typedef DateCellController = CellController; typedef URLCellController = CellController; class CellControllerBuilder { @@ -54,7 +54,7 @@ class CellControllerBuilder { cellCache: _cellCache, cellDataLoader: cellDataLoader, cellDataPersistence: - DateCellDataPersistence(cellContext: _cellContext), + TextCellDataPersistence(cellContext: _cellContext), ); case FieldType.Number: final cellDataLoader = CellDataLoader( diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/application/cell/cell_data_persistence.dart b/frontend/appflowy_flutter/lib/plugins/database_view/application/cell/cell_data_persistence.dart index fab3399c77..ed64abf23e 100644 --- a/frontend/appflowy_flutter/lib/plugins/database_view/application/cell/cell_data_persistence.dart +++ b/frontend/appflowy_flutter/lib/plugins/database_view/application/cell/cell_data_persistence.dart @@ -1,7 +1,7 @@ part of 'cell_service.dart'; /// Save the cell data to disk -/// You can extend this class to do custom operations. For example, the DateCellDataPersistence. +/// You can extend this class to do custom operations. abstract class CellDataPersistence { Future> save(D data); } @@ -28,51 +28,3 @@ class TextCellDataPersistence implements CellDataPersistence { }); } } - -@freezed -class DateCellData with _$DateCellData { - const factory DateCellData({ - DateTime? dateTime, - String? time, - required bool includeTime, - bool? clearFlag, - }) = _DateCellData; -} - -class DateCellDataPersistence implements CellDataPersistence { - final DatabaseCellContext cellContext; - DateCellDataPersistence({ - required this.cellContext, - }); - - @override - Future> save(DateCellData data) { - final payload = DateChangesetPB.create() - ..cellId = _makeCellPath(cellContext); - if (data.dateTime != null) { - final date = (data.dateTime!.millisecondsSinceEpoch ~/ 1000).toString(); - payload.date = date; - } - if (data.time != null) { - payload.time = data.time!; - } - if (data.clearFlag != null) { - payload.clearFlag = data.clearFlag!; - } - payload.includeTime = data.includeTime; - - return DatabaseEventUpdateDateCell(payload).send().then((result) { - return result.fold( - (l) => none(), - (err) => Some(err), - ); - }); - } -} - -CellIdPB _makeCellPath(DatabaseCellContext cellId) { - return CellIdPB.create() - ..viewId = cellId.viewId - ..fieldId = cellId.fieldId - ..rowId = cellId.rowId; -} diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/application/cell/date_cell_service.dart b/frontend/appflowy_flutter/lib/plugins/database_view/application/cell/date_cell_service.dart new file mode 100644 index 0000000000..736fd09ed9 --- /dev/null +++ b/frontend/appflowy_flutter/lib/plugins/database_view/application/cell/date_cell_service.dart @@ -0,0 +1,47 @@ +import 'package:appflowy_backend/dispatch/dispatch.dart'; +import 'package:appflowy_backend/protobuf/flowy-database2/cell_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-database2/date_entities.pb.dart'; +import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart'; +import 'package:dartz/dartz.dart'; +import 'package:fixnum/fixnum.dart'; + +final class DateCellBackendService { + final CellIdPB cellId; + + DateCellBackendService({ + required String viewId, + required String fieldId, + required String rowId, + }) : cellId = CellIdPB.create() + ..viewId = viewId + ..fieldId = fieldId + ..rowId = rowId; + + Future> update({ + DateTime? date, + String? time, + required includeTime, + }) { + final payload = DateChangesetPB.create() + ..cellId = cellId + ..includeTime = includeTime; + + if (date != null) { + final dateTimestamp = date.millisecondsSinceEpoch ~/ 1000; + payload.date = Int64(dateTimestamp); + } + if (time != null) { + payload.time = time; + } + + return DatabaseEventUpdateDateCell(payload).send(); + } + + Future> clear() { + final payload = DateChangesetPB.create() + ..cellId = cellId + ..clearFlag = true; + + return DatabaseEventUpdateDateCell(payload).send(); + } +} diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/date_cell/date_cal_bloc.dart b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/date_cell/date_cal_bloc.dart index 12c88b4a23..b26e8e019d 100644 --- a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/date_cell/date_cal_bloc.dart +++ b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/date_cell/date_cal_bloc.dart @@ -2,7 +2,7 @@ import 'dart:async'; import 'package:appflowy/generated/locale_keys.g.dart'; import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart'; -import 'package:appflowy/plugins/database_view/application/cell/cell_service.dart'; +import 'package:appflowy/plugins/database_view/application/cell/date_cell_service.dart'; import 'package:appflowy/plugins/database_view/application/field/field_service.dart'; import 'package:appflowy_backend/log.dart'; import 'package:appflowy_backend/protobuf/flowy-database2/date_entities.pb.dart'; @@ -19,6 +19,7 @@ part 'date_cal_bloc.freezed.dart'; class DateCellCalendarBloc extends Bloc { + final DateCellBackendService _dateCellBackendService; final DateCellController cellController; void Function()? _onCellChangedFn; @@ -26,18 +27,24 @@ class DateCellCalendarBloc required DateTypeOptionPB dateTypeOptionPB, required DateCellDataPB? cellData, required this.cellController, - }) : super(DateCellCalendarState.initial(dateTypeOptionPB, cellData)) { + }) : _dateCellBackendService = DateCellBackendService( + viewId: cellController.viewId, + fieldId: cellController.fieldId, + rowId: cellController.rowId, + ), + super(DateCellCalendarState.initial(dateTypeOptionPB, cellData)) { on( (event, emit) async { await event.when( initial: () async => _startListening(), didReceiveCellUpdate: (DateCellDataPB? cellData) { - final dateData = _dateDataFromCellData(cellData); + final (dateTime, time, includeTime) = + _dateDataFromCellData(cellData); emit( state.copyWith( - dateTime: dateData.dateTime, - time: dateData.time, - includeTime: dateData.includeTime, + dateTime: dateTime, + time: time, + includeTime: includeTime, ), ); }, @@ -45,13 +52,13 @@ class DateCellCalendarBloc emit(state.copyWith(timeFormatError: timeFormatError)); }, selectDay: (date) async { - await _updateDateData(emit, date: date); + await _updateDateData(date: date); }, setIncludeTime: (includeTime) async { - await _updateDateData(emit, includeTime: includeTime); + await _updateDateData(includeTime: includeTime); }, setTime: (time) async { - await _updateDateData(emit, time: time); + await _updateDateData(time: time); }, setDateFormat: (dateFormat) async { await _updateTypeOption(emit, dateFormat: dateFormat); @@ -66,15 +73,14 @@ class DateCellCalendarBloc emit(state.copyWith(focusedDay: focusedDay)); }, clearDate: () async { - await _clearDate(emit); + await _clearDate(); }, ); }, ); } - Future _updateDateData( - Emitter emit, { + Future _updateDateData({ DateTime? date, String? time, bool? includeTime, @@ -86,76 +92,60 @@ class DateCellCalendarBloc date != null && time == null, ); final String? newTime = time ?? state.time; - DateTime? newDate = _utcToLocalAddTime(date); + DateTime? newDate = _utcToLocalAndAddCurrentTime(date); if (time != null && time.isNotEmpty) { newDate = state.dateTime ?? DateTime.now(); } - final DateCellData newDateData = DateCellData( - dateTime: newDate, + final result = await _dateCellBackendService.update( + date: newDate, time: newTime, includeTime: includeTime ?? state.includeTime, ); - cellController.saveCellData( - newDateData, - onFinish: (result) { - result.fold( - () { - if (!isClosed && state.timeFormatError != null) { - add(const DateCellCalendarEvent.didReceiveTimeFormatError(null)); - } - }, - (err) { - switch (err.code) { - case ErrorCode.InvalidDateTimeFormat: - if (isClosed) return; - add( - DateCellCalendarEvent.didReceiveTimeFormatError( - timeFormatPrompt(err), - ), - ); - break; - default: - Log.error(err); - } - }, - ); + result.fold( + (_) { + if (!isClosed && state.timeFormatError != null) { + add(const DateCellCalendarEvent.didReceiveTimeFormatError(null)); + } + }, + (err) { + switch (err.code) { + case ErrorCode.InvalidDateTimeFormat: + if (isClosed) return; + add( + DateCellCalendarEvent.didReceiveTimeFormatError( + timeFormatPrompt(err), + ), + ); + break; + default: + Log.error(err); + } }, ); } - Future _clearDate(Emitter emit) async { - final DateCellData newDateData = DateCellData( - dateTime: null, - time: null, - includeTime: state.includeTime, - clearFlag: true, - ); - - cellController.saveCellData( - newDateData, - onFinish: (result) { - result.fold( - () { - if (!isClosed) { - add(const DateCellCalendarEvent.didReceiveTimeFormatError(null)); - } - }, - (err) => Log.error(err), - ); + Future _clearDate() async { + final result = await _dateCellBackendService.clear(); + result.fold( + (_) { + if (!isClosed) { + add(const DateCellCalendarEvent.didReceiveTimeFormatError(null)); + } }, + (err) => Log.error(err), ); } - DateTime? _utcToLocalAddTime(DateTime? date) { + DateTime? _utcToLocalAndAddCurrentTime(DateTime? date) { if (date == null) { return null; } final now = DateTime.now(); - // the incoming date is Utc. this trick converts it into Local - // and add the current time, though the time may be overwritten by - // explicitly provided time string + // the incoming date is Utc. This trick converts it into Local + // and add the current time. The time may be overwritten by + // explicitly provided time string in the backend though return DateTime( date.year, date.month, @@ -285,14 +275,14 @@ class DateCellCalendarState with _$DateCellCalendarState { DateTypeOptionPB dateTypeOptionPB, DateCellDataPB? cellData, ) { - final dateData = _dateDataFromCellData(cellData); + final (dateTime, time, includeTime) = _dateDataFromCellData(cellData); return DateCellCalendarState( dateTypeOptionPB: dateTypeOptionPB, format: CalendarFormat.month, focusedDay: DateTime.now(), - dateTime: dateData.dateTime, - time: dateData.time, - includeTime: dateData.includeTime, + dateTime: dateTime, + time: time, + includeTime: includeTime, timeFormatError: null, timeHintText: _timeHintText(dateTypeOptionPB), ); @@ -310,11 +300,11 @@ String _timeHintText(DateTypeOptionPB typeOption) { } } -DateCellData _dateDataFromCellData(DateCellDataPB? cellData) { +(DateTime?, String?, bool) _dateDataFromCellData(DateCellDataPB? cellData) { // a null DateCellDataPB may be returned, indicating that all the fields are // at their default values: empty strings and false booleans if (cellData == null) { - return const DateCellData(includeTime: false); + return (null, null, false); } DateTime? dateTime; @@ -326,5 +316,5 @@ DateCellData _dateDataFromCellData(DateCellDataPB? cellData) { } final bool includeTime = cellData.includeTime; - return DateCellData(dateTime: dateTime, time: time, includeTime: includeTime); + return (dateTime, time, includeTime); } diff --git a/frontend/appflowy_tauri/src/appflowy_app/stores/effects/database/cell/data_persistence.ts b/frontend/appflowy_tauri/src/appflowy_app/stores/effects/database/cell/data_persistence.ts index fcc37ec341..9066b61150 100644 --- a/frontend/appflowy_tauri/src/appflowy_app/stores/effects/database/cell/data_persistence.ts +++ b/frontend/appflowy_tauri/src/appflowy_app/stores/effects/database/cell/data_persistence.ts @@ -25,7 +25,7 @@ export class DateCellDataPersistence extends CellDataPersistence { save(data: CalendarData): Promise> { const payload = DateChangesetPB.fromObject({ cell_id: _makeCellId(this.cellIdentifier) }); - payload.date = ((data.date.getTime() / 1000) | 0).toString(); + payload.date = (data.date.getTime() / 1000) | 0; if (data.time !== undefined) { payload.time = data.time; } diff --git a/frontend/rust-lib/flowy-database2/src/entities/type_option_entities/date_entities.rs b/frontend/rust-lib/flowy-database2/src/entities/type_option_entities/date_entities.rs index 9ece95e6f3..67ff1f19b9 100644 --- a/frontend/rust-lib/flowy-database2/src/entities/type_option_entities/date_entities.rs +++ b/frontend/rust-lib/flowy-database2/src/entities/type_option_entities/date_entities.rs @@ -28,7 +28,7 @@ pub struct DateChangesetPB { pub cell_id: CellIdPB, #[pb(index = 2, one_of)] - pub date: Option, + pub date: Option, #[pb(index = 3, one_of)] pub time: Option, diff --git a/frontend/rust-lib/flowy-database2/src/event_handler.rs b/frontend/rust-lib/flowy-database2/src/event_handler.rs index ce08fb6a29..b16b1ab851 100644 --- a/frontend/rust-lib/flowy-database2/src/event_handler.rs +++ b/frontend/rust-lib/flowy-database2/src/event_handler.rs @@ -843,7 +843,7 @@ pub(crate) async fn move_calendar_event_handler( let data = data.into_inner(); let cell_id: CellIdParams = data.cell_path.try_into()?; let cell_changeset = DateCellChangeset { - date: Some(data.timestamp.to_string()), + date: Some(data.timestamp), ..Default::default() }; let database_editor = manager.get_database_with_view_id(&cell_id.view_id).await?; diff --git a/frontend/rust-lib/flowy-database2/src/services/cell/cell_operation.rs b/frontend/rust-lib/flowy-database2/src/services/cell/cell_operation.rs index b0e9c43ab5..0f49104709 100644 --- a/frontend/rust-lib/flowy-database2/src/services/cell/cell_operation.rs +++ b/frontend/rust-lib/flowy-database2/src/services/cell/cell_operation.rs @@ -209,7 +209,7 @@ pub fn insert_checkbox_cell(is_check: bool, field: &Field) -> Cell { pub fn insert_date_cell(timestamp: i64, include_time: Option, field: &Field) -> Cell { let cell_data = serde_json::to_string(&DateCellChangeset { - date: Some(timestamp.to_string()), + date: Some(timestamp), time: None, include_time, clear_flag: None, diff --git a/frontend/rust-lib/flowy-database2/src/services/field/type_options/date_type_option/date_tests.rs b/frontend/rust-lib/flowy-database2/src/services/field/type_options/date_type_option/date_tests.rs index ea02c906f2..7caf141f62 100644 --- a/frontend/rust-lib/flowy-database2/src/services/field/type_options/date_type_option/date_tests.rs +++ b/frontend/rust-lib/flowy-database2/src/services/field/type_options/date_type_option/date_tests.rs @@ -25,7 +25,7 @@ mod tests { &type_option, &field, DateCellChangeset { - date: Some("1647251762".to_owned()), + date: Some(1647251762), time: None, include_time: None, clear_flag: None, @@ -39,7 +39,7 @@ mod tests { &type_option, &field, DateCellChangeset { - date: Some("1647251762".to_owned()), + date: Some(1647251762), time: None, include_time: None, clear_flag: None, @@ -53,7 +53,7 @@ mod tests { &type_option, &field, DateCellChangeset { - date: Some("1647251762".to_owned()), + date: Some(1647251762), time: None, include_time: None, clear_flag: None, @@ -67,7 +67,7 @@ mod tests { &type_option, &field, DateCellChangeset { - date: Some("1647251762".to_owned()), + date: Some(1647251762), time: None, include_time: None, clear_flag: None, @@ -81,7 +81,7 @@ mod tests { &type_option, &field, DateCellChangeset { - date: Some("1647251762".to_owned()), + date: Some(1647251762), time: None, include_time: None, clear_flag: None, @@ -107,7 +107,7 @@ mod tests { &type_option, &field, DateCellChangeset { - date: Some("1653609600".to_owned()), + date: Some(1653609600), time: None, include_time: Some(true), clear_flag: None, @@ -119,7 +119,7 @@ mod tests { &type_option, &field, DateCellChangeset { - date: Some("1653609600".to_owned()), + date: Some(1653609600), time: Some("9:00".to_owned()), include_time: Some(true), clear_flag: None, @@ -131,7 +131,7 @@ mod tests { &type_option, &field, DateCellChangeset { - date: Some("1653609600".to_owned()), + date: Some(1653609600), time: Some("23:00".to_owned()), include_time: Some(true), clear_flag: None, @@ -145,7 +145,7 @@ mod tests { &type_option, &field, DateCellChangeset { - date: Some("1653609600".to_owned()), + date: Some(1653609600), time: None, include_time: Some(true), clear_flag: None, @@ -157,7 +157,7 @@ mod tests { &type_option, &field, DateCellChangeset { - date: Some("1653609600".to_owned()), + date: Some(1653609600), time: Some("9:00 AM".to_owned()), include_time: Some(true), clear_flag: None, @@ -169,7 +169,7 @@ mod tests { &type_option, &field, DateCellChangeset { - date: Some("1653609600".to_owned()), + date: Some(1653609600), time: Some("11:23 pm".to_owned()), include_time: Some(true), clear_flag: None, @@ -182,25 +182,6 @@ mod tests { } } - #[test] - fn date_type_option_invalid_date_str_test() { - let field_type = FieldType::DateTime; - let type_option = DateTypeOption::test(); - let field = FieldBuilder::from_field_type(field_type).build(); - assert_date( - &type_option, - &field, - DateCellChangeset { - date: Some("abc".to_owned()), - time: None, - include_time: None, - clear_flag: None, - }, - None, - "", - ); - } - #[test] #[should_panic] fn date_type_option_invalid_include_time_str_test() { @@ -212,7 +193,7 @@ mod tests { &type_option, &field, DateCellChangeset { - date: Some("1653609600".to_owned()), + date: Some(1653609600), time: Some("1:".to_owned()), include_time: Some(true), clear_flag: None, @@ -233,7 +214,7 @@ mod tests { &type_option, &field, DateCellChangeset { - date: Some("1653609600".to_owned()), + date: Some(1653609600), time: Some("".to_owned()), include_time: Some(true), clear_flag: None, @@ -252,7 +233,7 @@ mod tests { &type_option, &field, DateCellChangeset { - date: Some("1653609600".to_owned()), + date: Some(1653609600), time: Some("00:00".to_owned()), include_time: Some(true), clear_flag: None, @@ -273,7 +254,7 @@ mod tests { &type_option, &field, DateCellChangeset { - date: Some("1653609600".to_owned()), + date: Some(1653609600), time: Some("1:00 am".to_owned()), include_time: Some(true), clear_flag: None, @@ -297,7 +278,7 @@ mod tests { &type_option, &field, DateCellChangeset { - date: Some("1653609600".to_owned()), + date: Some(1653609600), time: Some("20:00".to_owned()), include_time: Some(true), clear_flag: None, @@ -345,7 +326,7 @@ mod tests { let old_cell_data = initialize_date_cell( &type_option, DateCellChangeset { - date: Some("1700006400".to_owned()), + date: Some(1700006400), time: Some("08:00".to_owned()), include_time: Some(true), clear_flag: None, @@ -355,7 +336,7 @@ mod tests { &type_option, &field, DateCellChangeset { - date: Some("1701302400".to_owned()), + date: Some(1701302400), time: None, include_time: None, clear_flag: None, @@ -373,7 +354,7 @@ mod tests { let old_cell_data = initialize_date_cell( &type_option, DateCellChangeset { - date: Some("1700006400".to_owned()), + date: Some(1700006400), time: Some("08:00".to_owned()), include_time: Some(true), clear_flag: None, @@ -401,7 +382,7 @@ mod tests { let old_cell_data = initialize_date_cell( &type_option, DateCellChangeset { - date: Some("1700006400".to_owned()), + date: Some(1700006400), time: Some("08:00".to_owned()), include_time: Some(true), clear_flag: None, diff --git a/frontend/rust-lib/flowy-database2/src/services/field/type_options/date_type_option/date_type_option.rs b/frontend/rust-lib/flowy-database2/src/services/field/type_options/date_type_option/date_type_option.rs index 2ce02bdbc5..7d03368c80 100644 --- a/frontend/rust-lib/flowy-database2/src/services/field/type_options/date_type_option/date_type_option.rs +++ b/frontend/rust-lib/flowy-database2/src/services/field/type_options/date_type_option/date_type_option.rs @@ -256,7 +256,7 @@ impl CellDataChangeset for DateTypeOption { // order to change the day without changing the time, the old time string // should be passed in as well. - let changeset_timestamp = changeset.date_timestamp(); + let changeset_timestamp = changeset.date; // parse the time string, which is in the local timezone let parsed_time = match (include_time, changeset.time) { diff --git a/frontend/rust-lib/flowy-database2/src/services/field/type_options/date_type_option/date_type_option_entities.rs b/frontend/rust-lib/flowy-database2/src/services/field/type_options/date_type_option/date_type_option_entities.rs index 27738949e0..e6bfb4c717 100644 --- a/frontend/rust-lib/flowy-database2/src/services/field/type_options/date_type_option/date_type_option_entities.rs +++ b/frontend/rust-lib/flowy-database2/src/services/field/type_options/date_type_option/date_type_option_entities.rs @@ -18,18 +18,12 @@ use crate::services::field::{TypeOptionCellData, CELL_DATA}; #[derive(Clone, Debug, Default, Serialize, Deserialize)] pub struct DateCellChangeset { - pub date: Option, + pub date: Option, pub time: Option, pub include_time: Option, pub clear_flag: Option, } -impl DateCellChangeset { - pub fn date_timestamp(&self) -> Option { - self.date.as_ref().and_then(|date| date.parse::().ok()) - } -} - impl FromCellChangeset for DateCellChangeset { fn from_changeset(changeset: String) -> FlowyResult where diff --git a/frontend/rust-lib/flowy-database2/tests/database/cell_test/test.rs b/frontend/rust-lib/flowy-database2/tests/database/cell_test/test.rs index 62527d6acc..ab3be4dcc5 100644 --- a/frontend/rust-lib/flowy-database2/tests/database/cell_test/test.rs +++ b/frontend/rust-lib/flowy-database2/tests/database/cell_test/test.rs @@ -26,7 +26,7 @@ async fn grid_cell_update() { FieldType::RichText => "".to_string(), FieldType::Number => "123".to_string(), FieldType::DateTime | FieldType::LastEditedTime | FieldType::CreatedTime => { - make_date_cell_string("123") + make_date_cell_string(123) }, FieldType::SingleSelect => { let type_option = field diff --git a/frontend/rust-lib/flowy-database2/tests/database/database_editor.rs b/frontend/rust-lib/flowy-database2/tests/database/database_editor.rs index d716b57ee2..8c7b1a0646 100644 --- a/frontend/rust-lib/flowy-database2/tests/database/database_editor.rs +++ b/frontend/rust-lib/flowy-database2/tests/database/database_editor.rs @@ -322,13 +322,13 @@ impl<'a> TestRowBuilder<'a> { pub fn insert_date_cell( &mut self, - data: &str, + data: i64, time: Option, include_time: Option, field_type: &FieldType, ) -> String { let value = serde_json::to_string(&DateCellChangeset { - date: Some(data.to_string()), + date: Some(data), time, include_time, clear_flag: None, diff --git a/frontend/rust-lib/flowy-database2/tests/database/field_test/util.rs b/frontend/rust-lib/flowy-database2/tests/database/field_test/util.rs index cc46e17a2e..7ec748eb9d 100644 --- a/frontend/rust-lib/flowy-database2/tests/database/field_test/util.rs +++ b/frontend/rust-lib/flowy-database2/tests/database/field_test/util.rs @@ -78,9 +78,9 @@ pub fn create_date_field(grid_id: &str, field_type: FieldType) -> (CreateFieldPa // The grid will contains all existing field types and there are three empty rows in this grid. -pub fn make_date_cell_string(s: &str) -> String { +pub fn make_date_cell_string(timestamp: i64) -> String { serde_json::to_string(&DateCellChangeset { - date: Some(s.to_string()), + date: Some(timestamp), time: None, include_time: Some(false), clear_flag: None, diff --git a/frontend/rust-lib/flowy-database2/tests/database/mock_data/board_mock_data.rs b/frontend/rust-lib/flowy-database2/tests/database/mock_data/board_mock_data.rs index 8ffbf8d7b0..3378bdb1bc 100644 --- a/frontend/rust-lib/flowy-database2/tests/database/mock_data/board_mock_data.rs +++ b/frontend/rust-lib/flowy-database2/tests/database/mock_data/board_mock_data.rs @@ -129,7 +129,7 @@ pub fn make_test_board() -> DatabaseData { FieldType::Number => row_builder.insert_number_cell("1"), // 1647251762 => Mar 14,2022 FieldType::DateTime | FieldType::LastEditedTime | FieldType::CreatedTime => { - row_builder.insert_date_cell("1647251762", None, None, &field_type) + row_builder.insert_date_cell(1647251762, None, None, &field_type) }, FieldType::SingleSelect => { row_builder.insert_single_select_cell(|mut options| options.remove(0)) @@ -149,7 +149,7 @@ pub fn make_test_board() -> DatabaseData { FieldType::Number => row_builder.insert_number_cell("2"), // 1647251762 => Mar 14,2022 FieldType::DateTime | FieldType::LastEditedTime | FieldType::CreatedTime => { - row_builder.insert_date_cell("1647251762", None, None, &field_type) + row_builder.insert_date_cell(1647251762, None, None, &field_type) }, FieldType::SingleSelect => { row_builder.insert_single_select_cell(|mut options| options.remove(0)) @@ -168,7 +168,7 @@ pub fn make_test_board() -> DatabaseData { FieldType::Number => row_builder.insert_number_cell("3"), // 1647251762 => Mar 14,2022 FieldType::DateTime | FieldType::LastEditedTime | FieldType::CreatedTime => { - row_builder.insert_date_cell("1647251762", None, None, &field_type) + row_builder.insert_date_cell(1647251762, None, None, &field_type) }, FieldType::SingleSelect => { row_builder.insert_single_select_cell(|mut options| options.remove(1)) @@ -190,7 +190,7 @@ pub fn make_test_board() -> DatabaseData { FieldType::RichText => row_builder.insert_text_cell("DA"), FieldType::Number => row_builder.insert_number_cell("4"), FieldType::DateTime | FieldType::LastEditedTime | FieldType::CreatedTime => { - row_builder.insert_date_cell("1668704685", None, None, &field_type) + row_builder.insert_date_cell(1668704685, None, None, &field_type) }, FieldType::SingleSelect => { row_builder.insert_single_select_cell(|mut options| options.remove(1)) @@ -207,7 +207,7 @@ pub fn make_test_board() -> DatabaseData { FieldType::RichText => row_builder.insert_text_cell("AE"), FieldType::Number => row_builder.insert_number_cell(""), FieldType::DateTime | FieldType::LastEditedTime | FieldType::CreatedTime => { - row_builder.insert_date_cell("1668359085", None, None, &field_type) + row_builder.insert_date_cell(1668359085, None, None, &field_type) }, FieldType::SingleSelect => { row_builder.insert_single_select_cell(|mut options| options.remove(2)) diff --git a/frontend/rust-lib/flowy-database2/tests/database/mock_data/calendar_mock_data.rs b/frontend/rust-lib/flowy-database2/tests/database/mock_data/calendar_mock_data.rs index 41d4a86cc2..c41433e591 100644 --- a/frontend/rust-lib/flowy-database2/tests/database/mock_data/calendar_mock_data.rs +++ b/frontend/rust-lib/flowy-database2/tests/database/mock_data/calendar_mock_data.rs @@ -51,7 +51,7 @@ pub fn make_test_calendar() -> DatabaseData { match field_type { FieldType::RichText => row_builder.insert_text_cell("A"), FieldType::DateTime => { - row_builder.insert_date_cell("1678090778", None, None, &field_type) + row_builder.insert_date_cell(1678090778, None, None, &field_type) }, _ => "".to_owned(), }; @@ -62,7 +62,7 @@ pub fn make_test_calendar() -> DatabaseData { match field_type { FieldType::RichText => row_builder.insert_text_cell("B"), FieldType::DateTime => { - row_builder.insert_date_cell("1677917978", None, None, &field_type) + row_builder.insert_date_cell(1677917978, None, None, &field_type) }, _ => "".to_owned(), }; @@ -73,7 +73,7 @@ pub fn make_test_calendar() -> DatabaseData { match field_type { FieldType::RichText => row_builder.insert_text_cell("C"), FieldType::DateTime => { - row_builder.insert_date_cell("1679213978", None, None, &field_type) + row_builder.insert_date_cell(1679213978, None, None, &field_type) }, _ => "".to_owned(), }; @@ -84,7 +84,7 @@ pub fn make_test_calendar() -> DatabaseData { match field_type { FieldType::RichText => row_builder.insert_text_cell("D"), FieldType::DateTime => { - row_builder.insert_date_cell("1678695578", None, None, &field_type) + row_builder.insert_date_cell(1678695578, None, None, &field_type) }, _ => "".to_owned(), }; @@ -95,7 +95,7 @@ pub fn make_test_calendar() -> DatabaseData { match field_type { FieldType::RichText => row_builder.insert_text_cell("E"), FieldType::DateTime => { - row_builder.insert_date_cell("1678695578", None, None, &field_type) + row_builder.insert_date_cell(1678695578, None, None, &field_type) }, _ => "".to_owned(), }; diff --git a/frontend/rust-lib/flowy-database2/tests/database/mock_data/grid_mock_data.rs b/frontend/rust-lib/flowy-database2/tests/database/mock_data/grid_mock_data.rs index 5852496811..d4878a4d8f 100644 --- a/frontend/rust-lib/flowy-database2/tests/database/mock_data/grid_mock_data.rs +++ b/frontend/rust-lib/flowy-database2/tests/database/mock_data/grid_mock_data.rs @@ -130,7 +130,7 @@ pub fn make_test_grid() -> DatabaseData { FieldType::RichText => row_builder.insert_text_cell("A"), FieldType::Number => row_builder.insert_number_cell("1"), FieldType::DateTime | FieldType::LastEditedTime | FieldType::CreatedTime => { - row_builder.insert_date_cell("1647251762", None, None, &field_type) + row_builder.insert_date_cell(1647251762, None, None, &field_type) }, FieldType::MultiSelect => row_builder .insert_multi_select_cell(|mut options| vec![options.remove(0), options.remove(0)]), @@ -151,7 +151,7 @@ pub fn make_test_grid() -> DatabaseData { FieldType::RichText => row_builder.insert_text_cell(""), FieldType::Number => row_builder.insert_number_cell("2"), FieldType::DateTime | FieldType::LastEditedTime | FieldType::CreatedTime => { - row_builder.insert_date_cell("1647251762", None, None, &field_type) + row_builder.insert_date_cell(1647251762, None, None, &field_type) }, FieldType::MultiSelect => row_builder .insert_multi_select_cell(|mut options| vec![options.remove(0), options.remove(1)]), @@ -166,7 +166,7 @@ pub fn make_test_grid() -> DatabaseData { FieldType::RichText => row_builder.insert_text_cell("C"), FieldType::Number => row_builder.insert_number_cell("3"), FieldType::DateTime | FieldType::LastEditedTime | FieldType::CreatedTime => { - row_builder.insert_date_cell("1647251762", None, None, &field_type) + row_builder.insert_date_cell(1647251762, None, None, &field_type) }, FieldType::SingleSelect => { row_builder.insert_single_select_cell(|mut options| options.remove(0)) @@ -185,7 +185,7 @@ pub fn make_test_grid() -> DatabaseData { FieldType::RichText => row_builder.insert_text_cell("DA"), FieldType::Number => row_builder.insert_number_cell("14"), FieldType::DateTime | FieldType::LastEditedTime | FieldType::CreatedTime => { - row_builder.insert_date_cell("1668704685", None, None, &field_type) + row_builder.insert_date_cell(1668704685, None, None, &field_type) }, FieldType::SingleSelect => { row_builder.insert_single_select_cell(|mut options| options.remove(0)) @@ -201,7 +201,7 @@ pub fn make_test_grid() -> DatabaseData { FieldType::RichText => row_builder.insert_text_cell("AE"), FieldType::Number => row_builder.insert_number_cell(""), FieldType::DateTime | FieldType::LastEditedTime | FieldType::CreatedTime => { - row_builder.insert_date_cell("1668359085", None, None, &field_type) + row_builder.insert_date_cell(1668359085, None, None, &field_type) }, FieldType::SingleSelect => { row_builder.insert_single_select_cell(|mut options| options.remove(1)) @@ -219,7 +219,7 @@ pub fn make_test_grid() -> DatabaseData { FieldType::RichText => row_builder.insert_text_cell("AE"), FieldType::Number => row_builder.insert_number_cell("5"), FieldType::DateTime | FieldType::LastEditedTime | FieldType::CreatedTime => { - row_builder.insert_date_cell("1671938394", None, None, &field_type) + row_builder.insert_date_cell(1671938394, None, None, &field_type) }, FieldType::SingleSelect => { row_builder.insert_single_select_cell(|mut options| options.remove(1)) diff --git a/frontend/rust-lib/flowy-test/tests/database/local_test/test.rs b/frontend/rust-lib/flowy-test/tests/database/local_test/test.rs index 2e43ce7f8b..8d953198b5 100644 --- a/frontend/rust-lib/flowy-test/tests/database/local_test/test.rs +++ b/frontend/rust-lib/flowy-test/tests/database/local_test/test.rs @@ -524,11 +524,10 @@ async fn update_date_cell_event_test() { // Insert data into the date cell of the first row. let timestamp = 1686300557; - let timestamp_str = 1686300557.to_string(); let error = test .update_date_cell(DateChangesetPB { cell_id: cell_path, - date: Some(timestamp_str.clone()), + date: Some(timestamp.clone()), time: None, include_time: None, clear_flag: None, @@ -566,7 +565,7 @@ async fn update_date_cell_event_with_empty_time_str_test() { let error = test .update_date_cell(DateChangesetPB { cell_id: cell_path, - date: Some("".to_string()), + date: None, ..Default::default() }) .await; @@ -885,7 +884,6 @@ async fn create_calendar_event_test() { let row = test.create_row(&calendar_view.id, None, None).await; // Insert data into the date cell of the first row. - let timestamp_str = timestamp().to_string(); let error = test .update_date_cell(DateChangesetPB { cell_id: CellIdPB { @@ -893,7 +891,7 @@ async fn create_calendar_event_test() { field_id: date_field.id.clone(), row_id: row.id, }, - date: Some(timestamp_str.clone()), + date: Some(timestamp()), time: None, include_time: None, clear_flag: None,