Files
workavia-mail-front/lib/features/email/domain/model/event_action.dart
T
2024-06-11 13:59:12 +07:00

78 lines
2.7 KiB
Dart

import 'package:equatable/equatable.dart';
import 'package:flutter/cupertino.dart';
import 'package:jmap_dart_client/jmap/core/patch_object.dart';
import 'package:model/extensions/keyword_identifier_extension.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
enum EventActionType {
yes,
maybe,
no,
mailToAttendees;
String getLabelButton(BuildContext context) {
switch(this) {
case EventActionType.yes:
return AppLocalizations.of(context).yes;
case EventActionType.maybe:
return AppLocalizations.of(context).maybe;
case EventActionType.no:
return AppLocalizations.of(context).no;
case EventActionType.mailToAttendees:
return AppLocalizations.of(context).mailToAttendees;
}
}
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:
return AppLocalizations.of(context).youWillAttendThisMeeting;
case EventActionType.maybe:
return AppLocalizations.of(context).youMayAttendThisMeeting;
case EventActionType.no:
return AppLocalizations.of(context).youWillNotAttendThisMeeting;
case EventActionType.mailToAttendees:
return '';
}
}
}
class EventAction with EquatableMixin {
final EventActionType actionType;
final String link;
EventAction(this.actionType, this.link);
factory EventAction.mailToAttendees() {
return EventAction(EventActionType.mailToAttendees, '');
}
@override
List<Object?> get props => [actionType, link];
}