65 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
| import 'dart:convert';
 | |
| 
 | |
| import 'package:freezed_annotation/freezed_annotation.dart';
 | |
| import 'package:island/models/embed.dart';
 | |
| 
 | |
| part 'webfeed.freezed.dart';
 | |
| part 'webfeed.g.dart';
 | |
| 
 | |
| @freezed
 | |
| sealed class SnWebFeedConfig with _$SnWebFeedConfig {
 | |
|   const factory SnWebFeedConfig({@Default(false) bool scrapPage}) =
 | |
|       _SnWebFeedConfig;
 | |
| 
 | |
|   factory SnWebFeedConfig.fromJson(Map<String, dynamic> json) =>
 | |
|       _$SnWebFeedConfigFromJson(json);
 | |
| }
 | |
| 
 | |
| @freezed
 | |
| sealed class SnWebFeed with _$SnWebFeed {
 | |
|   const factory SnWebFeed({
 | |
|     required String id,
 | |
|     required String url,
 | |
|     required String title,
 | |
|     String? description,
 | |
|     SnScrappedLink? preview,
 | |
|     @Default(SnWebFeedConfig()) SnWebFeedConfig config,
 | |
|     required String publisherId,
 | |
|     @Default([]) List<SnWebArticle> articles,
 | |
|     required DateTime createdAt,
 | |
|     required DateTime updatedAt,
 | |
|     DateTime? deletedAt,
 | |
|   }) = _SnWebFeed;
 | |
| 
 | |
|   factory SnWebFeed.fromJson(Map<String, dynamic> json) =>
 | |
|       _$SnWebFeedFromJson(json);
 | |
| 
 | |
|   factory SnWebFeed.fromJsonString(String jsonString) =>
 | |
|       SnWebFeed.fromJson(jsonDecode(jsonString) as Map<String, dynamic>);
 | |
| }
 | |
| 
 | |
| @freezed
 | |
| sealed class SnWebArticle with _$SnWebArticle {
 | |
|   const factory SnWebArticle({
 | |
|     required String id,
 | |
|     required String title,
 | |
|     required String url,
 | |
|     String? author,
 | |
|     Map<String, dynamic>? meta,
 | |
|     SnScrappedLink? preview,
 | |
|     SnWebFeed? feed,
 | |
|     String? content,
 | |
|     DateTime? publishedAt,
 | |
|     required String feedId,
 | |
|     required DateTime createdAt,
 | |
|     required DateTime updatedAt,
 | |
|     DateTime? deletedAt,
 | |
|   }) = _SnWebArticle;
 | |
| 
 | |
|   factory SnWebArticle.fromJson(Map<String, dynamic> json) =>
 | |
|       _$SnWebArticleFromJson(json);
 | |
| 
 | |
|   factory SnWebArticle.fromJsonString(String jsonString) =>
 | |
|       SnWebArticle.fromJson(jsonDecode(jsonString) as Map<String, dynamic>);
 | |
| }
 |