worldhopper/lib/config/constants.dart
Felipe M. 58a562abe8
feat: refactor server software abstraction with Kavita REST API integration
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
2026-04-06 17:46:48 +02:00

35 lines
1.2 KiB
Dart

/// Application-wide constants
class AppConstants {
AppConstants._();
// App info
static const String appName = 'Worldhopper';
// Database
static const String databaseName = 'worldhopper.db';
static const int databaseVersion = 14;
// Cache settings
static const int imageCacheMaxAgeDays = 7;
static const int imageCacheMaxCount = 200;
// OPDS-PSE namespace
static const String opdsPseNamespace = 'http://vaemendis.net/opds-pse/ns';
static const String opdsPseStreamRel = 'http://vaemendis.net/opds-pse/stream';
// Atom namespaces
static const String atomNamespace = 'http://www.w3.org/2005/Atom';
static const String dctermsNamespace = 'http://purl.org/dc/terms/';
// Route names
static const String routeServerList = '/';
static const String routeLibrary = '/library';
static const String routeSettings = '/settings';
static const String routeAddServer = '/add-server';
static const String routeEditServer = '/edit-server';
static const String routeBrowse = '/browse';
static const String routePublicationDetail = '/publication';
static const String routeReader = '/reader';
static const String routeEpubReader = '/epub-reader';
static const String routeDownloadedSeriesDetail = '/downloaded-series';
}