TF-3589 Calendar event attendance status
This commit is contained in:
@@ -1,12 +0,0 @@
|
||||
import 'package:jmap_dart_client/jmap/core/id.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/patch_object.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/model/event_action.dart';
|
||||
|
||||
extension EmailIdExtension on EmailId {
|
||||
Map<Id, PatchObject> generateMapUpdateObjectEventAttendanceStatus(EventActionType eventActionType) {
|
||||
return {
|
||||
id: eventActionType.generateEventAttendanceStatusActionPath()
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,6 @@
|
||||
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/patch_object.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/email/keyword_identifier.dart';
|
||||
import 'package:model/extensions/keyword_identifier_extension.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
|
||||
enum EventActionType {
|
||||
@@ -25,31 +22,6 @@ enum EventActionType {
|
||||
}
|
||||
}
|
||||
|
||||
PatchObject generateEventAttendanceStatusActionPath() {
|
||||
switch(this) {
|
||||
case EventActionType.yes:
|
||||
return PatchObject({
|
||||
KeyWordIdentifierExtension.acceptedEventAttendance.generatePath(): true,
|
||||
KeyWordIdentifierExtension.tentativelyAcceptedEventAttendance.generatePath(): null,
|
||||
KeyWordIdentifierExtension.rejectedEventAttendance.generatePath(): null,
|
||||
});
|
||||
case EventActionType.maybe:
|
||||
return PatchObject({
|
||||
KeyWordIdentifierExtension.acceptedEventAttendance.generatePath(): null,
|
||||
KeyWordIdentifierExtension.tentativelyAcceptedEventAttendance.generatePath(): true,
|
||||
KeyWordIdentifierExtension.rejectedEventAttendance.generatePath(): null,
|
||||
});
|
||||
case EventActionType.no:
|
||||
return PatchObject({
|
||||
KeyWordIdentifierExtension.acceptedEventAttendance.generatePath(): null,
|
||||
KeyWordIdentifierExtension.tentativelyAcceptedEventAttendance.generatePath(): null,
|
||||
KeyWordIdentifierExtension.rejectedEventAttendance.generatePath(): true,
|
||||
});
|
||||
case EventActionType.mailToAttendees:
|
||||
return PatchObject({});
|
||||
}
|
||||
}
|
||||
|
||||
String getToastMessageSuccess(BuildContext context) {
|
||||
switch(this) {
|
||||
case EventActionType.yes:
|
||||
@@ -62,31 +34,6 @@ enum EventActionType {
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
||||
Map<KeyWordIdentifier, bool> getMapKeywords() {
|
||||
switch(this) {
|
||||
case EventActionType.yes:
|
||||
return {
|
||||
KeyWordIdentifierExtension.acceptedEventAttendance: true,
|
||||
KeyWordIdentifierExtension.tentativelyAcceptedEventAttendance: false,
|
||||
KeyWordIdentifierExtension.rejectedEventAttendance: false,
|
||||
};
|
||||
case EventActionType.maybe:
|
||||
return {
|
||||
KeyWordIdentifierExtension.acceptedEventAttendance: false,
|
||||
KeyWordIdentifierExtension.tentativelyAcceptedEventAttendance: true,
|
||||
KeyWordIdentifierExtension.rejectedEventAttendance: false,
|
||||
};
|
||||
case EventActionType.no:
|
||||
return {
|
||||
KeyWordIdentifierExtension.acceptedEventAttendance: false,
|
||||
KeyWordIdentifierExtension.tentativelyAcceptedEventAttendance: false,
|
||||
KeyWordIdentifierExtension.rejectedEventAttendance: true,
|
||||
};
|
||||
case EventActionType.mailToAttendees:
|
||||
return {};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class EventAction with EquatableMixin {
|
||||
|
||||
@@ -25,7 +25,6 @@ import 'package:model/email/read_actions.dart';
|
||||
import 'package:tmail_ui_user/features/composer/domain/model/email_request.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/model/detailed_email.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/model/email_print.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/model/event_action.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/model/move_to_mailbox_request.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/model/preview_email_eml_request.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/model/restore_deleted_message_request.dart';
|
||||
@@ -177,12 +176,6 @@ abstract class EmailRepository {
|
||||
|
||||
Future<void> printEmail(EmailPrint emailPrint);
|
||||
|
||||
Future<void> storeEventAttendanceStatus(
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
EmailId emailId,
|
||||
EventActionType eventActionType);
|
||||
|
||||
Future<List<Email>> parseEmailByBlobIds(AccountId accountId, Set<Id> blobIds);
|
||||
|
||||
Future<String> generatePreviewEmailEMLContent(PreviewEmailEMLRequest previewEmailEMLRequest);
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
import 'package:core/presentation/state/failure.dart';
|
||||
import 'package:core/presentation/state/success.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/model/event_action.dart';
|
||||
|
||||
class StoreEventAttendanceStatusLoading extends LoadingState {}
|
||||
|
||||
class StoreEventAttendanceStatusSuccess extends UIState {
|
||||
|
||||
final EventActionType eventActionType;
|
||||
|
||||
StoreEventAttendanceStatusSuccess(this.eventActionType);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [eventActionType];
|
||||
}
|
||||
|
||||
class StoreEventAttendanceStatusFailure extends FeatureFailure {
|
||||
|
||||
StoreEventAttendanceStatusFailure({dynamic exception}) : super(exception: exception);
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
import 'package:core/presentation/state/failure.dart';
|
||||
import 'package:core/presentation/state/success.dart';
|
||||
import 'package:dartz/dartz.dart';
|
||||
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/session/session.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/model/event_action.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/repository/email_repository.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/state/store_event_attendance_status_state.dart';
|
||||
|
||||
class StoreEventAttendanceStatusInteractor {
|
||||
final EmailRepository _emailRepository;
|
||||
|
||||
StoreEventAttendanceStatusInteractor(this._emailRepository);
|
||||
|
||||
Stream<Either<Failure, Success>> execute(
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
EmailId emailId,
|
||||
EventActionType eventActionType
|
||||
) async* {
|
||||
try {
|
||||
yield Right(StoreEventAttendanceStatusLoading());
|
||||
|
||||
await _emailRepository.storeEventAttendanceStatus(
|
||||
session,
|
||||
accountId,
|
||||
emailId,
|
||||
eventActionType);
|
||||
|
||||
yield Right(StoreEventAttendanceStatusSuccess(eventActionType));
|
||||
} catch (e) {
|
||||
yield Left(StoreEventAttendanceStatusFailure(exception: e));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user