fluffychat/lib/pangea/space_analytics/space_analytics_download_enum.dart

92 lines
2.4 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import 'package:flutter/material.dart';
import 'package:material_symbols_icons/symbols.dart';
import 'package:fluffychat/l10n/l10n.dart';
/// The status of requests for space analytics access.
enum RequestStatus {
/// language analytics room is not in their profile
unavailable,
/// pending response
requested,
/// there is a room in their data but it hasnt been requested
unrequested,
/// the user is in the analytics room, and doesnt need to request
available;
static RequestStatus? fromString(String value) {
switch (value) {
case 'available':
return RequestStatus.available;
case 'unrequested':
return RequestStatus.unrequested;
case 'requested':
return RequestStatus.requested;
case 'unavailable':
return RequestStatus.unavailable;
default:
return null;
}
}
IconData? get icon {
switch (this) {
case RequestStatus.available:
return Icons.check_circle;
case RequestStatus.unrequested:
return Symbols.approval_delegation;
case RequestStatus.requested:
return Icons.mark_email_read_outlined;
case RequestStatus.unavailable:
return null;
}
}
String label(BuildContext context) {
final l10n = L10n.of(context);
switch (this) {
case RequestStatus.available:
return l10n.available;
case RequestStatus.unrequested:
return l10n.request;
case RequestStatus.requested:
return l10n.pending;
case RequestStatus.unavailable:
return l10n.noDataFound;
}
}
Color backgroundColor(BuildContext context) {
final theme = Theme.of(context);
switch (this) {
case RequestStatus.available:
case RequestStatus.unrequested:
return theme.colorScheme.primaryContainer;
case RequestStatus.unavailable:
case RequestStatus.requested:
return theme.disabledColor;
}
}
bool get showButton => this != RequestStatus.available;
bool get enabled => this == RequestStatus.unrequested;
double get opacity => this == RequestStatus.unavailable ? 0.7 : 1.0;
}
/// The status of the download process for space analytics data.
enum DownloadStatus {
/// The user is not in the analytics room, so the data cannot be downloaded.
unavailable,
/// The data is being downloaded.
loading,
/// The data has been downloaded successfully.
complete;
}