Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v0.7.1 #36

Merged
merged 59 commits into from
Jun 19, 2024
Merged

v0.7.1 #36

merged 59 commits into from
Jun 19, 2024

Conversation

bdashore3
Copy link
Member

Freeze v0.7.1 as a stable release

Debrid services can change their APIs at any time which negatively
impacts user experiences on Ferrite.

Add the following:
- Ability for a user to add a manually generated API key only showing the
last 4 characters for security purposes.
- Make ephemeral auth sessions toggle-able. ASWebAuthenticationView does
not automatically clear on toggle change.
- Add the savedLinks endpoint for AllDebrid so users can access their
downloads and magnets.
- Add a links section to AD's cloud view.

Signed-off-by: kingbri <[email protected]>
PM has a different method to handle API keys compared to other services
which takes the value as an authorization header.

Signed-off-by: kingbri <[email protected]>
Some sources can be unique and require some extra parsing. Add the
ability to extract a magnet link instead of assuming that every
source provides a properly formatted one.

Signed-off-by: kingbri <[email protected]>
iOS 17 fixes the issues that NavigationStack had with iOS 16. This
means that futureproofing is fixed.

Signed-off-by: kingbri <[email protected]>
Unifying the debrid services under a protocol will help slim down
on excess redundant code and allow for easy addition of new services
in the future.

Signed-off-by: kingbri <[email protected]>
Unify IA into a passable client side structure and add a common
download method to the DebridSource protocol.

Signed-off-by: kingbri <[email protected]>
Cloud downloads and torrents are now unified under their own
protocol and models. Downloads and torrents are separated.

Signed-off-by: kingbri <[email protected]>
Reorder everything and mark off where different functions are located.

Signed-off-by: kingbri <[email protected]>
Also add the requirement to the protocol.

Signed-off-by: kingbri <[email protected]>
Gives an ID of where the struct came from.

Signed-off-by: kingbri <[email protected]>
Signed-off-by: kingbri <[email protected]>
These aren't required since IA is a unified type. Only keep batch
IA for RealDebrid since it helps clear up confusion when gathering
InstantAvailability results.

Signed-off-by: kingbri <[email protected]>
This fixes cloud magnet fetching and also doesn't duplicate magnets
inside the cloud service. Unrestricted links don't get duplicated,
so no need to check against those.

Signed-off-by: kingbri <[email protected]>
The torrent ID is no longer stored in the DebridManager.

Signed-off-by: kingbri <[email protected]>
Add convenience vars which makes the API classes the source of truth
for any interaction.

Signed-off-by: kingbri <[email protected]>
Mark as an ObservableObject so the UI can see parameters that are
being updated in the class.

Signed-off-by: kingbri <[email protected]>
Protocols can't be used in ObservedObjects. Observable in iOS 17
and up solves this, but Ferrite targets iOS 16 and up, so add a
type-erased StateObject which supports protocols.

Signed-off-by: kingbri <[email protected]>
Storing an ID reference is redundant. Store a class reference
instead.

Signed-off-by: kingbri <[email protected]>
Use the common protocol to handle these.

Signed-off-by: kingbri <[email protected]>
Removes the redundant error types.

Signed-off-by: kingbri <[email protected]>
Change the returned error to one that's unique to caching. Also
make deleteTorrents optional to delete the first torrent if necessary
since that's always being cached.

Signed-off-by: kingbri <[email protected]>
Logout is now handled in the debrid class itself.

Signed-off-by: kingbri <[email protected]>
No longer needed due to the common type.

Signed-off-by: kingbri <[email protected]>
PreferredService is now the debrid ID.

Signed-off-by: kingbri <[email protected]>
the IA vars are no longer needed since that's unified.

Signed-off-by: kingbri <[email protected]>
Cloud torrents and downloads are unified with the new protocol.

Signed-off-by: kingbri <[email protected]>
Unify authentication to the new protocol. Also remove logout on
invalid requests. This became annoying and didn't update the UI
properly.

Signed-off-by: kingbri <[email protected]>
Signed-off-by: kingbri <[email protected]>
Point the user to settings logs rather than giving no extra information.
It would be a good idea to give the type of error in the future.

Signed-off-by: kingbri <[email protected]>
This parameter should be optional and errors if it isn't.

Signed-off-by: kingbri <[email protected]>
Hook to the published variable to push updates.

Signed-off-by: kingbri <[email protected]>
Bump actions and macos build versions.

Signed-off-by: kingbri <[email protected]>
Adds HTTP method, headers, and a body string. Also use a common
function to substitute params rather to allow for maintanence of a
common dictionary.

Signed-off-by: kingbri <[email protected]>
Stopgap for index-based sources. For example, the keyword "John"
will be converted to "j" for sources that use "/j/John".

Signed-off-by: kingbri <[email protected]>
This will be removed in the future anyway.

Signed-off-by: kingbri <[email protected]>
Public should not be used in an app since it declares public to
additional modules. However, an app is one module. Some structs/
classes need to be left public to conform to CoreData's generation.

Signed-off-by: kingbri <[email protected]>
Helps when auto-filling stubs for new classes.

Signed-off-by: kingbri <[email protected]>
Indicates to the user that an API must be used to log into the debrid
service.

Signed-off-by: kingbri <[email protected]>
Some debrid services aren't "rich", which means that they don't
broadcast whether an instantly available torrent is a batch or a
single file. This results in all torrents either having the green
badge or red badge based on what hash is given.

However, batches need to intercept the download itself which requires
the download function to be split into download and unrestrict. In
between, there's room for the batch sheet to act.

Signed-off-by: kingbri <[email protected]>
TorBox is a service that handles magnet links under both a free
and paid plan. Integrate support into Ferrite. Will add rich services
once the instantAvailability endpoint returns a file list.

Signed-off-by: kingbri <[email protected]>
Was an experiment for later commits.

Signed-off-by: kingbri <[email protected]>
Signed-off-by: kingbri <[email protected]>
The task can be set to nil after completion, and the unrestrict
flag should also be set to nil when the batch sheet is dismissed.

Signed-off-by: kingbri <[email protected]>
OffCloud is a debrid provider that allows for caching and playing
media. Does not have rich debrid support.

Also add a handler if functionality isn't implemented in the service.

Signed-off-by: kingbri <[email protected]>
- AllDebrid: Don't throw an empty error if cloud downloads/torrents
is empty
- Fix history not saving with the proper URLs
- Fix the HTMLParser looking at the incorrect term for seedLeech

Signed-off-by: kingbri <[email protected]>
Allow for overriding of the default description in the settings UI.

Signed-off-by: kingbri <[email protected]>
Signed-off-by: kingbri <[email protected]>
TorBox can now show if there's a batch before loading a file.

Cloud downloads should check the server in case there's a different
method to fetch a download link.

Signed-off-by: kingbri <[email protected]>
Signed-off-by: kingbri <[email protected]>
If a debrid is authorized, a Published variable needs to be notified
since SwiftUI can't read computed properties on the fly (they are
getters). Therefore, it's better to maintain a single source of truth
of which services are logged in.

Signed-off-by: kingbri <[email protected]>
Doesn't make sense to use more descriptive IDs when the struct
describes what the model is already.

Signed-off-by: kingbri <[email protected]>
Populate cloud lists when the app is launched to begin maintainence
of a synced list. In addition, fix the errors when OffCloud tried
fetching links for a single file. The explore endpoint only works
when the file is a batch which is unknown until it's actually called.

Signed-off-by: kingbri <[email protected]>
Different services can send different statuses for if a file is
cached or not. Therefore, make this scoped to the debrid service
rather than expecting everything to state "downloaded".

Also it feels pretty blank if the disclosure groups are gone when
a cloud array is empty, so remove those checks.

Signed-off-by: kingbri <[email protected]>
v0.7.1

Signed-off-by: kingbri <[email protected]>
@bdashore3 bdashore3 merged commit f598137 into default Jun 19, 2024
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant