import 'package:freezed_annotation/freezed_annotation.dart'; part 'server.freezed.dart'; part 'server.g.dart'; @freezed abstract class EmbyServer with _$EmbyServer { const factory EmbyServer({ required String id, required String name, required String baseUrl, required String createdAt, required String updatedAt, @JsonKey(includeIfNull: false) String? lastConnectedAt, @JsonKey( fromJson: _stringOrEmpty, toJson: _emptyStringToNull, includeIfNull: false, ) @Default('') String iconUrl, @Default(false) bool paused, }) = _EmbyServer; factory EmbyServer.fromJson(Map json) => _$EmbyServerFromJson(json); } @freezed abstract class EmbyServerSaveReq with _$EmbyServerSaveReq { const factory EmbyServerSaveReq({ @JsonKey(includeIfNull: false) String? id, required String name, required String baseUrl, @JsonKey( fromJson: _stringOrEmpty, toJson: _emptyStringToNull, includeIfNull: false, ) @Default('') String iconUrl, }) = _EmbyServerSaveReq; factory EmbyServerSaveReq.fromJson(Map json) => _$EmbyServerSaveReqFromJson(json); } @freezed abstract class EmbyServerProbeReq with _$EmbyServerProbeReq { const factory EmbyServerProbeReq({required String baseUrl}) = _EmbyServerProbeReq; factory EmbyServerProbeReq.fromJson(Map json) => _$EmbyServerProbeReqFromJson(json); } @freezed abstract class ProbePublicInfoRes with _$ProbePublicInfoRes { const factory ProbePublicInfoRes({ required String serverName, required String version, required String productName, }) = _ProbePublicInfoRes; factory ProbePublicInfoRes.fromJson(Map json) => _$ProbePublicInfoResFromJson(json); } String _stringOrEmpty(Object? value) => value?.toString() ?? ''; String? _emptyStringToNull(String value) => value.isEmpty ? null : value;