32 lines
1.1 KiB
Dart
32 lines
1.1 KiB
Dart
import 'package:freezed_annotation/freezed_annotation.dart';
|
|
|
|
part 'profile_connection.freezed.dart';
|
|
|
|
/// A binding between a [Profile] and a [Connection], carrying the
|
|
/// per-profile user-level token used when the profile is active.
|
|
///
|
|
/// For Plex: [userToken] is a Plex Home-user token from
|
|
/// `/home/users/{uuid}/switch`; [userIdentifier] is the Home user UUID.
|
|
/// A `null` [userToken] is the lazy-fetch sentinel — the
|
|
/// `ActiveProfileBinder` performs the switch on first activation and
|
|
/// caches the resulting token back into this row.
|
|
///
|
|
/// For Jellyfin: [userToken] mirrors the Connection's accessToken (one
|
|
/// user per connection); [userIdentifier] is the Jellyfin user id.
|
|
@freezed
|
|
sealed class ProfileConnection with _$ProfileConnection {
|
|
const ProfileConnection._();
|
|
|
|
const factory ProfileConnection({
|
|
required String profileId,
|
|
required String connectionId,
|
|
String? userToken,
|
|
required String userIdentifier,
|
|
@Default(false) bool isDefault,
|
|
DateTime? tokenAcquiredAt,
|
|
DateTime? lastUsedAt,
|
|
}) = _ProfileConnection;
|
|
|
|
bool get hasToken => userToken != null && userToken!.isNotEmpty;
|
|
}
|