Files
plezy/lib/profiles/profile_connection.dart
T

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;
}