mirror of
https://github.com/immich-app/immich.git
synced 2025-10-28 01:02:33 -04:00
* feat: improved update messaging on app bar server info * chore: message improvements * chore: failed to fetch version error message * feat: open latest release when tapping "Update" on server out of date message * fix: text alignment states * chore: code review updates * Apply suggestion from @alextran1502 Co-authored-by: Alex <alex.tran1502@gmail.com> * Apply suggestion from @alextran1502 Co-authored-by: Alex <alex.tran1502@gmail.com> * chore: lots of rework of the version checking code to be cleaner Added a semver utility class to simplify comparisons, broke the update notification logic into own widget, reworked view construction and colors. * fix: show warnign without having to tap on app bar icon * chore: colors --------- Co-authored-by: Alex <alex.tran1502@gmail.com>
84 lines
2.7 KiB
Dart
84 lines
2.7 KiB
Dart
import 'package:easy_localization/easy_localization.dart';
|
|
import 'package:immich_mobile/models/server_info/server_config.model.dart';
|
|
import 'package:immich_mobile/models/server_info/server_disk_info.model.dart';
|
|
import 'package:immich_mobile/models/server_info/server_features.model.dart';
|
|
import 'package:immich_mobile/models/server_info/server_version.model.dart';
|
|
|
|
enum VersionStatus {
|
|
upToDate,
|
|
clientOutOfDate,
|
|
serverOutOfDate,
|
|
error;
|
|
|
|
String get message => switch (this) {
|
|
VersionStatus.upToDate => "",
|
|
VersionStatus.clientOutOfDate => "app_update_available".tr(),
|
|
VersionStatus.serverOutOfDate => "server_update_available".tr(),
|
|
VersionStatus.error => "unable_to_check_version".tr(),
|
|
};
|
|
}
|
|
|
|
class ServerInfo {
|
|
final ServerVersion serverVersion;
|
|
final ServerVersion latestVersion;
|
|
final ServerFeatures serverFeatures;
|
|
final ServerConfig serverConfig;
|
|
final ServerDiskInfo serverDiskInfo;
|
|
final VersionStatus versionStatus;
|
|
|
|
const ServerInfo({
|
|
required this.serverVersion,
|
|
required this.latestVersion,
|
|
required this.serverFeatures,
|
|
required this.serverConfig,
|
|
required this.serverDiskInfo,
|
|
required this.versionStatus,
|
|
});
|
|
|
|
ServerInfo copyWith({
|
|
ServerVersion? serverVersion,
|
|
ServerVersion? latestVersion,
|
|
ServerFeatures? serverFeatures,
|
|
ServerConfig? serverConfig,
|
|
ServerDiskInfo? serverDiskInfo,
|
|
VersionStatus? versionStatus,
|
|
}) {
|
|
return ServerInfo(
|
|
serverVersion: serverVersion ?? this.serverVersion,
|
|
latestVersion: latestVersion ?? this.latestVersion,
|
|
serverFeatures: serverFeatures ?? this.serverFeatures,
|
|
serverConfig: serverConfig ?? this.serverConfig,
|
|
serverDiskInfo: serverDiskInfo ?? this.serverDiskInfo,
|
|
versionStatus: versionStatus ?? this.versionStatus,
|
|
);
|
|
}
|
|
|
|
@override
|
|
String toString() {
|
|
return 'ServerInfo(serverVersion: $serverVersion, latestVersion: $latestVersion, serverFeatures: $serverFeatures, serverConfig: $serverConfig, serverDiskInfo: $serverDiskInfo, versionStatus: $versionStatus)';
|
|
}
|
|
|
|
@override
|
|
bool operator ==(Object other) {
|
|
if (identical(this, other)) return true;
|
|
|
|
return other is ServerInfo &&
|
|
other.serverVersion == serverVersion &&
|
|
other.latestVersion == latestVersion &&
|
|
other.serverFeatures == serverFeatures &&
|
|
other.serverConfig == serverConfig &&
|
|
other.serverDiskInfo == serverDiskInfo &&
|
|
other.versionStatus == versionStatus;
|
|
}
|
|
|
|
@override
|
|
int get hashCode {
|
|
return serverVersion.hashCode ^
|
|
latestVersion.hashCode ^
|
|
serverFeatures.hashCode ^
|
|
serverConfig.hashCode ^
|
|
serverDiskInfo.hashCode ^
|
|
versionStatus.hashCode;
|
|
}
|
|
}
|