Rename all OPDS-prefixed models to generic names (Server, Feed, Entry, Link, StreamLink), expand the ServerSoftware interface to cover all server interactions, and implement a full Kavita REST API client that replaces the OPDS delegation. - Rename OPDS* models to generic names across ~60 files - Add database migrations 13 (opds_id → entry_id) and 14 (unify credentials) - Create OPDSServerSoftware wrapping existing OPDS services - Create KavitaApiClient for direct Kavita REST API calls - Create KavitaFeedMapper to convert Kavita JSON to Feed/Entry models - Rewrite KavitaServerSoftware to use native API (no OPDS delegation) - Unify server credentials (remove softwareUsername/softwarePassword) - Simplify add/edit server UI to single auth section - Add test connection button to server add/edit screens - Add progress indicator to PublicationCard using local and server data - Eliminate softwareType branching in reader screens - Add EntryProgress and fetchEntryProgress to ServerSoftware interface - Fix Entry.acquisitionLink crash on empty links - Add 59 new tests covering models, services, and providers
25 lines
594 B
Dart
25 lines
594 B
Dart
import 'package:freezed_annotation/freezed_annotation.dart';
|
|
|
|
part 'link.freezed.dart';
|
|
part 'link.g.dart';
|
|
|
|
/// Represents a link in an OPDS feed
|
|
@freezed
|
|
class Link with _$Link {
|
|
const factory Link({
|
|
/// Link relation type (e.g., 'self', 'start', 'subsection', 'http://opds-spec.org/acquisition')
|
|
required String rel,
|
|
|
|
/// Link URL
|
|
required String href,
|
|
|
|
/// MIME type of the linked resource
|
|
String? type,
|
|
|
|
/// Link title
|
|
String? title,
|
|
}) = _Link;
|
|
|
|
/// Create Link from JSON
|
|
factory Link.fromJson(Map<String, dynamic> json) => _$LinkFromJson(json);
|
|
}
|