Files
plezy/lib/services/trackers/simkl/simkl_session.dart
T
2026-04-24 08:29:49 +02:00

35 lines
1.1 KiB
Dart

import 'dart:convert';
/// Immutable Simkl OAuth session.
///
/// Simkl access tokens don't expire (per their docs), so there's no
/// refresh_token — just the bearer and a display name for the settings UI.
class SimklSession {
final String accessToken;
final String? username;
final int createdAt;
const SimklSession({required this.accessToken, required this.createdAt, this.username});
SimklSession copyWith({String? accessToken, String? username, int? createdAt}) => SimklSession(
accessToken: accessToken ?? this.accessToken,
username: username ?? this.username,
createdAt: createdAt ?? this.createdAt,
);
Map<String, dynamic> toJson() => {
'access_token': accessToken,
'username': username,
'created_at': createdAt,
};
factory SimklSession.fromJson(Map<String, dynamic> json) => SimklSession(
accessToken: json['access_token'] as String,
username: json['username'] as String?,
createdAt: (json['created_at'] as num).toInt(),
);
String encode() => json.encode(toJson());
static SimklSession decode(String raw) => SimklSession.fromJson(json.decode(raw) as Map<String, dynamic>);
}