Surface/lib/models/activity.dart
LittleSheep a2053aa772 🐛 Fixes and optimzation on post
♻️ Replace freezed abstract classes with sealed
2025-05-24 22:38:07 +08:00

66 lines
1.8 KiB
Dart

import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:island/models/user.dart';
part 'activity.freezed.dart';
part 'activity.g.dart';
@freezed
sealed class SnActivity with _$SnActivity {
const factory SnActivity({
required String id,
required String type,
required String resourceIdentifier,
required int visibility,
required String accountId,
required SnAccount account,
required dynamic data,
required DateTime createdAt,
required DateTime updatedAt,
required dynamic deletedAt,
}) = _SnActivity;
factory SnActivity.fromJson(Map<String, dynamic> json) =>
_$SnActivityFromJson(json);
}
@freezed
sealed class SnCheckInResult with _$SnCheckInResult {
const factory SnCheckInResult({
required String id,
required int level,
required List<SnFortuneTip> tips,
required String accountId,
required SnAccount? account,
required DateTime createdAt,
required DateTime updatedAt,
required DateTime? deletedAt,
}) = _SnCheckInResult;
factory SnCheckInResult.fromJson(Map<String, dynamic> json) =>
_$SnCheckInResultFromJson(json);
}
@freezed
sealed class SnFortuneTip with _$SnFortuneTip {
const factory SnFortuneTip({
required bool isPositive,
required String title,
required String content,
}) = _SnFortuneTip;
factory SnFortuneTip.fromJson(Map<String, dynamic> json) =>
_$SnFortuneTipFromJson(json);
}
@freezed
sealed class SnEventCalendarEntry with _$SnEventCalendarEntry {
const factory SnEventCalendarEntry({
required DateTime date,
required SnCheckInResult? checkInResult,
required List<dynamic> statuses,
}) = _SnEventCalendarEntry;
factory SnEventCalendarEntry.fromJson(Map<String, dynamic> json) =>
_$SnEventCalendarEntryFromJson(json);
}