31 lines
859 B
Dart
31 lines
859 B
Dart
import 'package:easy_localization/easy_localization.dart';
|
|
import 'package:freezed_annotation/freezed_annotation.dart';
|
|
import 'package:island/models/post.dart';
|
|
import 'package:island/services/text.dart';
|
|
|
|
part 'post_category.freezed.dart';
|
|
part 'post_category.g.dart';
|
|
|
|
@freezed
|
|
sealed class SnPostCategory with _$SnPostCategory {
|
|
const SnPostCategory._();
|
|
|
|
const factory SnPostCategory({
|
|
required String id,
|
|
required String slug,
|
|
String? name,
|
|
@Default([]) List<SnPost> posts,
|
|
}) = _SnPostCategory;
|
|
|
|
factory SnPostCategory.fromJson(Map<String, dynamic> json) =>
|
|
_$SnPostCategoryFromJson(json);
|
|
|
|
String get categoryDisplayTitle {
|
|
final capitalizedSlug = slug.capitalizeEachWord();
|
|
if ('postCategory$capitalizedSlug'.trExists()) {
|
|
return 'postCategory$capitalizedSlug'.tr();
|
|
}
|
|
return name ?? slug;
|
|
}
|
|
}
|