- Make history buttons have 2 lines of text to give more context.
If a batch is given, the full episode name is shown
- Add a "now playing" section to player choices to show what the user
will play in the event of a misclick
- Make the maximum line limit in search results 4 lines to prevent
long title results from taking up the entire cell
- Fix light theme appearance with library since the picker and list
weren't aligned right
Signed-off-by: kingbri <bdashore3@proton.me>
Backups in Ferrite archive a user's bookmarks, history, source lists,
and source names. Sources are not archived due to the size of the backup
increasing exponentially.
These files use the .feb format to avoid JSON conflicts when opening
the file in Ferrite. The backup file can be renamed to JSON for editing
at any time.
Add the Backport namespace to be used for ported features rather
than making a file for every iOS 14 adaptation.
Move history and bookmark creation to the PersistenceController rather
than individual functions.
Signed-off-by: kingbri <bdashore3@proton.me>
Use strict concurrency checking in Xcode 14 to find misuses with
Swift concurrency.
Cleanup files and rearrange them along with fixing comment headers.
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>
Add a ListRowButtonView which runs a function and include a label.
Use this to style magnet choice buttons.
Signed-off-by: kingbri <bdashore3@gmail.com>
WebTor is a website to view magnet links on the web for free. It
has an API to include magnets, so why not?
Suggested by BlackSwordsman in Discord.
Signed-off-by: kingbri <bdashore3@gmail.com>
Batch torrents are torrents that have multiple files bundled within
one torrent file.
RealDebrid does support these, but it is difficult to get them to work.
The main flow requires setting a specific combination in RealDebrid
to allow for link generation. However, this is not intuitive to users
and is bad API design on RealDebrid's part.
Ferrite's implementation presents users with all the possible files
from batches (duplicates deleted) and selects the user-chosen file
to download. That way, only the user chosen file is presented to
play on an external video player.
This still needs work for optimization purposes, but this commit
does produce a working build.
Signed-off-by: kingbri <bdashore3@gmail.com>