Files
2023-05-19 13:22:32 +02:00

125 lines
3.7 KiB
Dart

import 'package:butterfly/api/file_system/file_system_remote.dart';
import 'package:butterfly/cubits/settings.dart';
import 'package:butterfly/services/sync.dart';
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:phosphor_flutter/phosphor_flutter.dart';
extension FileSyncStatusVisualizer on FileSyncStatus? {
String getLocalizedName(BuildContext context) {
switch (this) {
case FileSyncStatus.localLatest:
return AppLocalizations.of(context).localLatest;
case FileSyncStatus.remoteLatest:
return AppLocalizations.of(context).connectionLatest;
case FileSyncStatus.synced:
return AppLocalizations.of(context).synced;
case FileSyncStatus.conflict:
return AppLocalizations.of(context).conflict;
case FileSyncStatus.offline:
return AppLocalizations.of(context).offline;
default:
return AppLocalizations.of(context).loading;
}
}
PhosphorIconData getIcon() {
switch (this) {
case FileSyncStatus.localLatest:
return PhosphorIconsLight.upload;
case FileSyncStatus.remoteLatest:
return PhosphorIconsLight.download;
case FileSyncStatus.synced:
return PhosphorIconsLight.check;
case FileSyncStatus.conflict:
return PhosphorIconsLight.warning;
case FileSyncStatus.offline:
return PhosphorIconsLight.wifiSlash;
default:
return PhosphorIconsLight.arrowClockwise;
}
}
Color getColor(ColorScheme colorScheme) {
switch (this) {
case FileSyncStatus.synced:
return colorScheme.primary;
case FileSyncStatus.localLatest:
return colorScheme.secondary;
case FileSyncStatus.remoteLatest:
return colorScheme.tertiary;
case FileSyncStatus.conflict:
return colorScheme.error;
case FileSyncStatus.offline:
return colorScheme.onSurface;
default:
return colorScheme.onSurface;
}
}
}
extension SyncStatusVisualizer on SyncStatus? {
String getLocalizedName(BuildContext context) {
switch (this) {
case SyncStatus.syncing:
return AppLocalizations.of(context).syncing;
case SyncStatus.synced:
return AppLocalizations.of(context).synced;
case SyncStatus.error:
return AppLocalizations.of(context).error;
default:
return AppLocalizations.of(context).loading;
}
}
PhosphorIconData getIcon() {
switch (this) {
case SyncStatus.syncing:
return PhosphorIconsLight.arrowClockwise;
case SyncStatus.synced:
return PhosphorIconsLight.check;
case SyncStatus.error:
return PhosphorIconsLight.warning;
default:
return PhosphorIconsLight.arrowClockwise;
}
}
Color getColor(ColorScheme colorScheme) {
switch (this) {
case SyncStatus.syncing:
return colorScheme.onSurface;
case SyncStatus.synced:
return colorScheme.primary;
case SyncStatus.error:
return colorScheme.error;
default:
return colorScheme.onSurface;
}
}
}
extension SyncModeVisualizer on SyncMode {
String getLocalizedName(BuildContext context) {
switch (this) {
case SyncMode.always:
return AppLocalizations.of(context).always;
case SyncMode.noMobile:
return AppLocalizations.of(context).noMobile;
case SyncMode.manual:
return AppLocalizations.of(context).manual;
}
}
PhosphorIconData getIcon() {
switch (this) {
case SyncMode.always:
return PhosphorIconsLight.wifiHigh;
case SyncMode.noMobile:
return PhosphorIconsLight.wifiSlash;
case SyncMode.manual:
return PhosphorIconsLight.arrowClockwise;
}
}
}