Commit graph

118 commits

Author SHA1 Message Date
kingbri
6456b34210 Ferrite: Bump version
Signed-off-by: kingbri <bdashore3@proton.me>
2023-01-07 18:47:27 -05:00
kingbri
f960efc1ed Update README
Signed-off-by: kingbri <bdashore3@proton.me>
2023-01-07 18:47:27 -05:00
kingbri
39c4a10a72 Ferrite: format
Signed-off-by: kingbri <bdashore3@proton.me>
2023-01-07 18:47:27 -05:00
kingbri
e8f62e3cdc Library: Add searching and cleanup
Add a searchbar to filter through various library entries so it's
easier to find items.

Also add fixes for < iOS 16 devices and fix up searchbar constraints.

Signed-off-by: kingbri <bdashore3@proton.me>
2023-01-07 18:47:05 -05:00
kingbri
2258036f7b Debrid: Add support for AllDebrid cloud and cleanup
This commit adds support for viewing a user's AllDebrid magnet list.
AllDebrid does not save unlocked links, but they do save which magnets
a user has queried.

Also clean up various functions in DebridManager.

Signed-off-by: kingbri <bdashore3@proton.me>
2023-01-06 16:12:08 -05:00
kingbri
90ed4f8353 Debrid: Unify errors
Error handling can be tedious with debrid because network errors
to ignore are present (such as -999). Create a function to properly
display the errors to the user and log them via print statments.

Signed-off-by: kingbri <bdashore3@proton.me>
2023-01-05 21:10:28 -05:00
kingbri
025d3797dc Premiumize: Perform a transfer if a link is present
This is required for PM's cloud since transfers will also add the
files to a user's cloud rather than just fetching the DDL link.

Signed-off-by: kingbri <bdashore3@proton.me>
2023-01-04 14:33:38 -05:00
kingbri
5a4e98f10d Ferrite: Switch to a Magnet struct
Magnets are expressed in two different ways: a hash and a link. Both
of these mean the same thing with a magnet link giving more information
if required.

However, there was a disconnect if a hash was present or a link was
present and required many steps to check which was available. Unify
magnets by creating a parent structure that attempts to extract
the hash or create a link in the event that either parameter isn't
provided.

Replace everything except bookmarks (to prevent CoreData complaints
and unnecessary abstraction) to use the new Magnet system.

Signed-off-by: kingbri <bdashore3@proton.me>
2023-01-04 12:49:20 -05:00
kingbri
9f54397b77 Library: Add support for Premiumize cloud
Add the ability to view a user's Premiumize files in Ferrite. Files
can be deleted from a user's account directly in Ferrite's list.

Signed-off-by: kingbri <bdashore3@proton.me>
2023-01-03 14:22:20 -05:00
kingbri
9b7bc55a25 Library: Add support for RealDebrid cloud
RealDebrid saves a user's unrestricted links and "torrents" (magnet
links in this case). Add the ability to see and queue a user's RD
library in Ferrite itself.

This required a further abstraction of the debrid manager to allow
for more types other than search results to be passed to various
functions.

Deleting an item from RD's cloud list deletes the item from RD as well.

NOTE: This does not track download progress, but it does show if a
magnet is currently being downloaded or not.

Signed-off-by: kingbri <bdashore3@proton.me>
2023-01-02 15:13:32 -05:00
kingbri
b0850d43d7 Search: Fix inline navigation title
Transitioning the navigation title to inline while editing search
broke for older OS versions. Make a more bulletproof solution to
inline the navigation title when the user commits a search as that's
a definitive event to listen to.

Signed-off-by: kingbri <bdashore3@proton.me>
2022-12-31 12:35:28 -05:00
kingbri
15ad8c5581 Bookmarks: Fix context menu removal
NotificationCenter posts to other instances of the same button
caused the existing bookmark reference to be nullified for every other
button.

Add a comparison between object IDs to make sure the correct instances
are being nullified.

Signed-off-by: kingbri <bdashore3@proton.me>
2022-12-31 12:33:51 -05:00
kingbri
47ef72bf13 MagnetChoiceView: Fix titles
Titles weren't cleared on sheet dismiss which caused conflicts between
batches and single files. Fix this.

Signed-off-by: kingbri <bdashore3@proton.me>
2022-12-14 16:33:18 -05:00
kingbri
04e4503c86 Premiumize: Split cache check requests by 100
Premiumize has a dynamic upper limit of 107-110 (from testing)
hashes per request. To play it safe, cache requests are split by
100 and executed in parallel as 2 (or more) requests.

Signed-off-by: kingbri <bdashore3@proton.me>
2022-12-09 14:15:39 -05:00
kingbri
55226e5628 Build: Add scripts for commit and nightly information
This automatically embeds the commit hash and if the build is an
actions nightly or not which will help with debugging crashes.

Signed-off-by: kingbri <bdashore3@proton.me>
2022-12-06 12:37:15 -05:00
kingbri
32e5e21d3c DebridManager: Fix magnet links not loading
I mistakenly added an and condition which caused all debrid services
to fail unless the user is using Premiumize.

Signed-off-by: kingbri <bdashore3@proton.me>
2022-12-06 10:35:18 -05:00
kingbri
17867db40c Debrid: Add Premiumize support and cleanup
Premiumize is another debrid provider. Add support in addition
to other debrid services.

Add a unified Magnet type that encloses both the link and hash
when needed for certain services.

A universal ASAuthenticationSession has been added to make implicit
authentication easier for services that support it.

Clean up declarations of certain variables that were mismanaged
during the debrid decentralization process.

Signed-off-by: kingbri <bdashore3@proton.me>
2022-12-05 18:10:10 -05:00
kingbri
2322d3af67 Debrid: Decentralize and add AllDebrid support
AllDebrid is another debrid provider. Add support to Ferrite in
addition to RealDebrid.

The overall debrid login backend has changed to accomodate for a more
agnostic app structure where more services can be added as needed.

Also add some cosmetic changes to search so filters can be added while
searching for a phrase.

Signed-off-by: kingbri <bdashore3@proton.me>
2022-11-27 18:18:09 -05:00
kingbri
06d4f8e84e RealDebrid, Github: Reorganize models
Prep for more debrid services

Signed-off-by: kingbri <bdashore3@proton.me>
2022-11-25 14:49:24 -05:00
kingbri
a1cd62d3b9 Ferrite: Bump version
Signed-off-by: kingbri <bdashore3@proton.me>
2022-11-19 17:03:09 -05:00
kingbri
9d7f85cc62 Info: Fix backup restoration
This is a bug that causes production Ferrite to freak out whenever
a backup is tapped in Files.

Signed-off-by: kingbri <bdashore3@proton.me>
2022-11-19 16:42:36 -05:00
kingbri
3f588e249d Ferrite: Bump version
Signed-off-by: kingbri <bdashore3@proton.me>
2022-11-19 12:42:05 -05:00
kingbri
f27578be7a Settings: Fix debrid button state
Make the button published for iOS 14.3 support

Signed-off-by: kingbri <bdashore3@proton.me>
2022-11-19 12:40:27 -05:00
kingbri
102b59ab0a Scraping: Add source specific errors
State what source errored when one occurs.

Signed-off-by: kingbri <bdashore3@proton.me>
2022-11-19 12:13:29 -05:00
kingbri
e063b91f3f Ferrite: Format and cleanup
Also add swipe to delete support in source lists

Signed-off-by: kingbri <bdashore3@proton.me>
2022-11-19 11:58:02 -05:00
kingbri
a774564212 Ferrite: Improve overall UI
- 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>
2022-11-18 17:10:42 -05:00
kingbri
e3e8924547 Ferrite: Add backups and massive cleanup
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>
2022-11-06 20:54:45 -05:00
kingbri
a89e832d1c Ferrite: Concurrency, cleanup, and format
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>
2022-10-05 10:48:02 -04:00
kingbri
b85752c92c RealDebrid: Improve fetch and recache times
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>
2022-10-05 10:47:59 -04:00
kingbri
4d3a16f77e Library: Add history functionality
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>
2022-09-16 12:33:21 -04:00
kingbri
2f870b9410 Ferrite: Add bookmarks
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>
2022-09-16 12:33:18 -04:00
Skitty
5d97c7511f Sources: Fix source searching (#8)
- Make searching case insensitive
- Fix catalog title not hiding when searching an installed source name
- Cancelling a search doesn't add an installed source to the catalog
- Add dynamic predicate changing for iOS 14 and up instead of restricting
to iOS 15
- Migrate updated source fetching to the source model
- Change how filtering works to adapt with the dynamic predicate
changes

Signed-off-by: kingbri <bdashore3@proton.me>
Co-authored-by: kingbri <bdashore3@proton.me>
2022-09-07 09:51:06 -04:00
kingbri
8306ca1f9b Ferrite: Clean up UI changes
- Migrate the empty view to a common view which vertically centers
itself to the screen's bounds

- Don't initialize underlying state variables in init as this is
discouraged behavior. Instead, hook the source list editor to an ID
that refreshes when an existing source list URL has been set

Signed-off-by: kingbri <bdashore3@proton.me>
2022-09-07 09:51:01 -04:00
kingbri
a9d2604fb3 Sources: Fix searchbar behavior
Cancelling the search now actually cancels the search.

Signed-off-by: kingbri <bdashore3@proton.me>
2022-09-05 18:31:44 -04:00
kingbri
52409099d7 Ferrite: Properly inline lists
The inset grouped list style has a top inset that adds extra space
between the navigation bar title and the list rows. Use introspect
to remove this space on UITableView and UICollectionView (for iOS 16).

Sections completely ignore the introspect changes, so add a section
header which removes the list row insets.

Signed-off-by: kingbri <bdashore3@proton.me>
2022-09-05 18:31:44 -04:00
Skitty
9a3573a222 Use ProgressView instead of ActivityIndicator 2022-09-05 18:31:44 -04:00
Skitty
d4f2dba279 Slightly increase cell height 2022-09-05 18:31:44 -04:00
Skitty
d1eb67cc16 Fix about header top inset 2022-09-05 18:31:44 -04:00
Skitty
aa344b8ea8 Fix infinite loading indicator with versions 2022-09-05 18:31:44 -04:00
Skitty
aad24d4b1d Title Case for settings pages 2022-09-05 18:31:44 -04:00
Skitty
ff1fef85b0 Fix link actions view done button color 2022-09-05 18:31:44 -04:00
Skitty
4e149814a3 Add sources page searching
- Fix table top inset
2022-09-05 18:31:44 -04:00
Skitty
f7e1b87c73 Various UI tweaks
- Make about header scrollable
- Add no sources text
- Add no source lists text
- Make edit source list start with current url
- Add loading indicator for versions
2022-09-05 18:31:44 -04:00
kingbri
3540e0bcd3 Ferrite: Bump version
Signed-off-by: kingbri <bdashore3@proton.me>
2022-08-31 22:54:32 -04:00
kingbri
40c55e689a RssParser: Properly parse items in scraper
Signed-off-by: kingbri <bdashore3@proton.me>
2022-08-31 22:52:30 -04:00
kingbri
400242690b Ferrite: Format and cleanup
Signed-off-by: kingbri <bdashore3@proton.me>
2022-08-31 18:47:02 -04:00
kingbri
664c57b751 Ferrite: Add updater
Updates are sent via an alert on starting the app. This can be
disabled in the settings menu.

A full version struct has been completed for flexible comparisons.

Version history can also be viewed in settings in case a user wants
to download an earlier version of the app.

Updates track Github releases.

Signed-off-by: kingbri <bdashore3@gmail.com>
2022-08-31 18:47:02 -04:00
kingbri
1bf64a8934 Actions: Change for next branch
Signed-off-by: kingbri <bdashore3@gmail.com>
2022-08-31 18:47:02 -04:00
kingbri
4deb853e01 README: Add nightly instructions
Signed-off-by: kingbri <bdashore3@gmail.com>
2022-08-31 18:47:02 -04:00
kingbri
1761f8dfb4 Debrid: Add loading indicator and fix iOS <14.5 issues
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>
2022-08-31 18:47:02 -04:00