TF-2638 Change logic of storing value for VacationPresentation
This commit is contained in:
committed by
Dat H. Pham
parent
1160338147
commit
c118affbcf
+18
-16
@@ -1,4 +1,6 @@
|
|||||||
|
|
||||||
|
import 'package:core/core.dart';
|
||||||
|
import 'package:dartz/dartz.dart';
|
||||||
import 'package:equatable/equatable.dart';
|
import 'package:equatable/equatable.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/utc_date.dart';
|
import 'package:jmap_dart_client/jmap/core/utc_date.dart';
|
||||||
@@ -6,7 +8,7 @@ import 'package:jmap_dart_client/jmap/mail/vacation/vacation_response.dart';
|
|||||||
import 'package:tmail_ui_user/features/manage_account/presentation/extensions/datetime_extension.dart';
|
import 'package:tmail_ui_user/features/manage_account/presentation/extensions/datetime_extension.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/presentation/model/vacation/vacation_responder_status.dart';
|
import 'package:tmail_ui_user/features/manage_account/presentation/model/vacation/vacation_responder_status.dart';
|
||||||
|
|
||||||
class VacationPresentation with EquatableMixin {
|
class VacationPresentation with EquatableMixin, OptionParamMixin {
|
||||||
final VacationResponderStatus status;
|
final VacationResponderStatus status;
|
||||||
final DateTime? startDate;
|
final DateTime? startDate;
|
||||||
final TimeOfDay? startTime;
|
final TimeOfDay? startTime;
|
||||||
@@ -33,26 +35,26 @@ class VacationPresentation with EquatableMixin {
|
|||||||
return VacationPresentation();
|
return VacationPresentation();
|
||||||
}
|
}
|
||||||
|
|
||||||
VacationPresentation copyWidth({
|
VacationPresentation copyWith({
|
||||||
VacationResponderStatus? status,
|
VacationResponderStatus? status,
|
||||||
DateTime? startDate,
|
Option<DateTime>? startDateOption,
|
||||||
TimeOfDay? startTime,
|
Option<TimeOfDay>? startTimeOption,
|
||||||
DateTime? endDate,
|
Option<DateTime>? endDateOption,
|
||||||
TimeOfDay? endTime,
|
Option<TimeOfDay>? endTimeOption,
|
||||||
String? messagePlainText,
|
Option<String>? messagePlainTextOption,
|
||||||
String? messageHtmlText,
|
Option<String>? messageHtmlTextOption,
|
||||||
String? subject,
|
Option<String>? subjectOption,
|
||||||
bool? vacationStopEnabled,
|
bool? vacationStopEnabled,
|
||||||
}) {
|
}) {
|
||||||
return VacationPresentation(
|
return VacationPresentation(
|
||||||
status: status ?? this.status,
|
status: status ?? this.status,
|
||||||
startDate: startDate ?? this.startDate,
|
startDate: getOptionParam(startDateOption, startDate),
|
||||||
startTime: startTime ?? this.startTime,
|
startTime: getOptionParam(startTimeOption, startTime),
|
||||||
endDate: endDate ?? this.endDate,
|
endDate: getOptionParam(endDateOption, endDate),
|
||||||
endTime: endTime ?? this.endTime,
|
endTime: getOptionParam(endTimeOption, endTime),
|
||||||
messagePlainText: messagePlainText ?? this.messagePlainText,
|
messagePlainText: getOptionParam(messagePlainTextOption, messagePlainText),
|
||||||
messageHtmlText: messageHtmlText ?? this.messageHtmlText,
|
messageHtmlText: getOptionParam(messageHtmlTextOption, messageHtmlText),
|
||||||
subject: subject ?? this.subject,
|
subject: getOptionParam(subjectOption, subject),
|
||||||
vacationStopEnabled: vacationStopEnabled ?? this.vacationStopEnabled
|
vacationStopEnabled: vacationStopEnabled ?? this.vacationStopEnabled
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import 'package:core/core.dart';
|
import 'package:core/core.dart';
|
||||||
|
import 'package:dartz/dartz.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:jmap_dart_client/jmap/mail/vacation/vacation_response.dart';
|
import 'package:jmap_dart_client/jmap/mail/vacation/vacation_response.dart';
|
||||||
@@ -129,24 +130,25 @@ class VacationController extends BaseController {
|
|||||||
|
|
||||||
void updateVacationPresentation({
|
void updateVacationPresentation({
|
||||||
VacationResponderStatus? newStatus,
|
VacationResponderStatus? newStatus,
|
||||||
DateTime? startDate,
|
Option<DateTime>? startDateOption,
|
||||||
TimeOfDay? startTime,
|
Option<TimeOfDay>? startTimeOption,
|
||||||
DateTime? endDate,
|
Option<DateTime>? endDateOption,
|
||||||
TimeOfDay? endTime,
|
Option<TimeOfDay>? endTimeOption,
|
||||||
bool? vacationStopEnabled,
|
bool? vacationStopEnabled,
|
||||||
String? messagePlainText,
|
Option<String>? messagePlainTextOption,
|
||||||
String? messageHtmlText,
|
Option<String>? messageHtmlTextOption,
|
||||||
}) {
|
}) {
|
||||||
final currentVacation = vacationPresentation.value;
|
final currentVacation = vacationPresentation.value;
|
||||||
final newVacation = currentVacation.copyWidth(
|
final stopEnabled = vacationStopEnabled ?? currentVacation.vacationStopEnabled;
|
||||||
|
final newVacation = currentVacation.copyWith(
|
||||||
status: newStatus,
|
status: newStatus,
|
||||||
startDate: startDate,
|
startDateOption: startDateOption,
|
||||||
startTime: startTime,
|
startTimeOption: startTimeOption,
|
||||||
endDate: endDate,
|
endDateOption: stopEnabled ? endDateOption : const None(),
|
||||||
endTime: endTime,
|
endTimeOption: stopEnabled ? endTimeOption : const None(),
|
||||||
vacationStopEnabled: vacationStopEnabled,
|
vacationStopEnabled: vacationStopEnabled,
|
||||||
messagePlainText: messagePlainText,
|
messagePlainTextOption: messagePlainTextOption,
|
||||||
messageHtmlText: messageHtmlText
|
messageHtmlTextOption: messageHtmlTextOption
|
||||||
);
|
);
|
||||||
log('VacationController::updateVacationPresentation():newVacation: $newVacation');
|
log('VacationController::updateVacationPresentation():newVacation: $newVacation');
|
||||||
vacationPresentation.value = newVacation;
|
vacationPresentation.value = newVacation;
|
||||||
@@ -187,9 +189,9 @@ class VacationController extends BaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (dateType == DateType.start) {
|
if (dateType == DateType.start) {
|
||||||
updateVacationPresentation(startDate: datePicked);
|
updateVacationPresentation(startDateOption: Some(datePicked));
|
||||||
} else {
|
} else {
|
||||||
updateVacationPresentation(endDate: datePicked);
|
updateVacationPresentation(endDateOption: Some(datePicked));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -221,9 +223,9 @@ class VacationController extends BaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (dateType == DateType.start) {
|
if (dateType == DateType.start) {
|
||||||
updateVacationPresentation(startTime: timePicked);
|
updateVacationPresentation(startTimeOption: Some(timePicked));
|
||||||
} else {
|
} else {
|
||||||
updateVacationPresentation(endTime: timePicked);
|
updateVacationPresentation(endTimeOption: Some(timePicked));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -281,9 +283,9 @@ class VacationController extends BaseController {
|
|||||||
|
|
||||||
final subjectVacation = subjectTextController.text;
|
final subjectVacation = subjectTextController.text;
|
||||||
|
|
||||||
final newVacationPresentation = vacationPresentation.value.copyWidth(
|
final newVacationPresentation = vacationPresentation.value.copyWith(
|
||||||
messageHtmlText: messageHtmlText,
|
messageHtmlTextOption: Some(messageHtmlText),
|
||||||
subject: subjectVacation
|
subjectOption: Some(subjectVacation)
|
||||||
);
|
);
|
||||||
log('VacationController::saveVacation(): newVacationPresentation: $newVacationPresentation');
|
log('VacationController::saveVacation(): newVacationPresentation: $newVacationPresentation');
|
||||||
final newVacationResponse = newVacationPresentation.toVacationResponse();
|
final newVacationResponse = newVacationPresentation.toVacationResponse();
|
||||||
|
|||||||
Reference in New Issue
Block a user