import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:selfprivacy/ui/components/brand_icons/brand_icons.dart'; enum LoadingStatus { uninitialized, refreshing, success, error, } enum InitializingSteps { setHetznerKey, setCloudFlareKey, setDomainName, setRootUser, createServer, checkCloudFlareDns, startServer, checkSystemDnsAndDkimSet, } enum Period { hour, day, month } enum ServiceTypes { mail, messenger, passwordManager, video, cloud, socialNetwork, git, vpn, } extension ServiceTypesExt on ServiceTypes { String get title { switch (this) { case ServiceTypes.mail: return 'services.mail.title'.tr(); case ServiceTypes.messenger: return 'services.messenger.title'.tr(); case ServiceTypes.passwordManager: return 'services.password_manager.title'.tr(); case ServiceTypes.video: return 'services.video.title'.tr(); case ServiceTypes.cloud: return 'services.cloud.title'.tr(); case ServiceTypes.socialNetwork: return 'services.social_network.title'.tr(); case ServiceTypes.git: return 'services.git.title'.tr(); case ServiceTypes.vpn: return 'services.vpn.title'.tr(); } } String get subtitle { switch (this) { case ServiceTypes.mail: return 'services.mail.subtitle'.tr(); case ServiceTypes.messenger: return 'services.messenger.subtitle'.tr(); case ServiceTypes.passwordManager: return 'services.password_manager.subtitle'.tr(); case ServiceTypes.video: return 'services.video.subtitle'.tr(); case ServiceTypes.cloud: return 'services.cloud.subtitle'.tr(); case ServiceTypes.socialNetwork: return 'services.social_network.subtitle'.tr(); case ServiceTypes.git: return 'services.git.subtitle'.tr(); case ServiceTypes.vpn: return 'services.vpn.subtitle'.tr(); } } String get loginInfo { switch (this) { case ServiceTypes.mail: return 'services.mail.login_info'.tr(); case ServiceTypes.messenger: return 'services.messenger.login_info'.tr(); case ServiceTypes.passwordManager: return 'services.password_manager.login_info'.tr(); case ServiceTypes.video: return 'services.video.login_info'.tr(); case ServiceTypes.cloud: return 'services.cloud.login_info'.tr(); case ServiceTypes.socialNetwork: return 'services.social_network.login_info'.tr(); case ServiceTypes.git: return 'services.git.login_info'.tr(); case ServiceTypes.vpn: return ''; } } String get subdomain { switch (this) { case ServiceTypes.passwordManager: return 'password'; case ServiceTypes.video: return 'meet'; case ServiceTypes.cloud: return 'cloud'; case ServiceTypes.socialNetwork: return 'social'; case ServiceTypes.git: return 'git'; case ServiceTypes.vpn: case ServiceTypes.messenger: default: return ''; } } IconData get icon { switch (this) { case ServiceTypes.mail: return BrandIcons.envelope; case ServiceTypes.messenger: return BrandIcons.messanger; case ServiceTypes.passwordManager: return BrandIcons.key; case ServiceTypes.video: return BrandIcons.webcam; case ServiceTypes.cloud: return BrandIcons.upload; case ServiceTypes.socialNetwork: return BrandIcons.social; case ServiceTypes.git: return BrandIcons.git; case ServiceTypes.vpn: return Icons.vpn_lock_outlined; } } String get txt => toString().split('.')[1]; }