To declutter a RealDebrid user's library, check if the file and
unrestricted link exist and serve those existing links. Otherwise
perform a download like normal.
Sometimes RealDebrid deletes cached items, but still keeps them on
instant availability. Add a way to tell the user that the item
is downloading along with an option to cancel it.
Also remove unnecessary published variables from viewmodels
Signed-off-by: kingbri <bdashore3@proton.me>
Action history is logged and displayed to the user's library.
These are triggered whenever the magnet choice sheet is displayed.
Also redo alerts and action sheets to avoid deprecation notices
for >iOS 14. These will be removed when iOS 14 support is dropped.
There was also a problem with sheet presentation not working after
a sheet was dismissed. Disable the appropriate view when a sheet
is being presented.
Signed-off-by: kingbri <bdashore3@proton.me>
Bookmarks are added through search results and can be accessed through
the library. These can be moved and deleted within the list.
Add a RealDebrid instant availability cache for bookmark IA status
to not overwhelm the API. Instant availability results are fresh on
every search results since the cache is cleared.
Also don't require a source API object to be present for the API parser
button in source settings. If a JSON parser exists for a source, allow
the option to be presented.
Signed-off-by: kingbri <bdashore3@proton.me>
When a search result is selected, there is usually a delay due to
the debrid dance of API routes for grabbing a download link to stream.
Add a loading indicator and prevent any other tasks from loading
unless the user cancels it.
iOS 14.5 was a huge update which added many QoL SwiftUI changes that
are consistent to modern iOS versions.
However, Ferrite supports iOS versions less than 14.5, mainly 14.3.
More fixes had to be added to make sure UI is consistent across
all OS versions.
Signed-off-by: kingbri <bdashore3@gmail.com>
Adds support for website APIs both complex and simple. This commit
only supports GET requests to APIs. POST request support can be added
on request.
Client IDs and secrets are also supported. They can be added via
source settings or automatically set by a website endpoint.
Also fetch sources for scraping using the backgroundContext and remove
some functions from using the main actor.
Signed-off-by: kingbri <bdashore3@gmail.com>
If a user searched after cancelling the search the first time,
the first search would still continue.
Assign the search task to navigation view and automatically cancel
it and dismiss the searchbar when the user switches to a different
tab.
Also add a ProgressView to show which source is being parsed.
Signed-off-by: kingbri <bdashore3@gmail.com>
Sources can now be updated based on the repo ID. To preserve repo IDs
across single URL links, the source lists can be edited and the ID
is transferred over.
Signed-off-by: kingbri <bdashore3@gmail.com>
RSS parsing has been added as a method to parse source since they're
easier on the website's end to parse.
Source settings have been added. The only current setting is the fetch
mode which selects which parser/scraper to use. By default, if an RSS
parser is found, it's selected.
A source now has info shown regarding versioning and authorship. A source
list's repository name and author string are now required.
Signed-off-by: kingbri <bdashore3@gmail.com>
These sources will be converted to be more flexible with JavaScript
in the future.
The source catalog is populated by adding a source list in settings
then installing a source from the catalog.
Sources can be enabled or disabled when using Ferrite.
Signed-off-by: kingbri <bdashore3@gmail.com>
2022-08-04 21:33:59 -04:00
Renamed from Ferrite/Models/NavigationViewModel.swift (Browse further)