mirror of
https://github.com/Ferrite-iOS/Ferrite.git
synced 2026-03-11 17:45:40 +00:00
Settings: Add debrid info views
Add some extra info for debrid services so they look similar to the Kodi view. Signed-off-by: kingbri <bdashore3@proton.me>
This commit is contained in:
parent
b8799be896
commit
d504369e98
5 changed files with 89 additions and 47 deletions
|
|
@ -59,6 +59,7 @@
|
|||
0C6771F629B3B602005D38D2 /* SettingsKodiView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C6771F529B3B602005D38D2 /* SettingsKodiView.swift */; };
|
||||
0C6771FA29B3D1AE005D38D2 /* KodiModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C6771F929B3D1AE005D38D2 /* KodiModels.swift */; };
|
||||
0C6771FC29B3E0DB005D38D2 /* HybridSecureField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C6771FB29B3E0DB005D38D2 /* HybridSecureField.swift */; };
|
||||
0C6771FE29B521F1005D38D2 /* SettingsDebridInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C6771FD29B521F1005D38D2 /* SettingsDebridInfoView.swift */; };
|
||||
0C68135028BC1A2D00FAD890 /* GithubWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C68134F28BC1A2D00FAD890 /* GithubWrapper.swift */; };
|
||||
0C68135228BC1A7C00FAD890 /* GithubModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C68135128BC1A7C00FAD890 /* GithubModels.swift */; };
|
||||
0C6C7C9B2931521B002DF910 /* AllDebridWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C6C7C9A2931521B002DF910 /* AllDebridWrapper.swift */; };
|
||||
|
|
@ -186,6 +187,7 @@
|
|||
0C6771F529B3B602005D38D2 /* SettingsKodiView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsKodiView.swift; sourceTree = "<group>"; };
|
||||
0C6771F929B3D1AE005D38D2 /* KodiModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KodiModels.swift; sourceTree = "<group>"; };
|
||||
0C6771FB29B3E0DB005D38D2 /* HybridSecureField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HybridSecureField.swift; sourceTree = "<group>"; };
|
||||
0C6771FD29B521F1005D38D2 /* SettingsDebridInfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsDebridInfoView.swift; sourceTree = "<group>"; };
|
||||
0C68134F28BC1A2D00FAD890 /* GithubWrapper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GithubWrapper.swift; sourceTree = "<group>"; };
|
||||
0C68135128BC1A7C00FAD890 /* GithubModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GithubModels.swift; sourceTree = "<group>"; };
|
||||
0C6C7C9A2931521B002DF910 /* AllDebridWrapper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AllDebridWrapper.swift; sourceTree = "<group>"; };
|
||||
|
|
@ -447,6 +449,7 @@
|
|||
0C95D8D728A55B03005E22B3 /* DefaultActionPickerView.swift */,
|
||||
0C10848A28BD9A38008F0BA6 /* SettingsAppVersionView.swift */,
|
||||
0C6771F529B3B602005D38D2 /* SettingsKodiView.swift */,
|
||||
0C6771FD29B521F1005D38D2 /* SettingsDebridInfoView.swift */,
|
||||
);
|
||||
path = Settings;
|
||||
sourceTree = "<group>";
|
||||
|
|
@ -779,6 +782,7 @@
|
|||
0C750744289B003E004B3906 /* SourceRssParser+CoreDataClass.swift in Sources */,
|
||||
0C794B69289DACC800DD1CC8 /* InstalledPluginButtonView.swift in Sources */,
|
||||
0C79DC082899AF3C003F1C5A /* SourceSeedLeech+CoreDataProperties.swift in Sources */,
|
||||
0C6771FE29B521F1005D38D2 /* SettingsDebridInfoView.swift in Sources */,
|
||||
0CD4CAC628C980EB0046E1DC /* HistoryActionsView.swift in Sources */,
|
||||
0C422E7E293542EA00486D65 /* PremiumizeWrapper.swift in Sources */,
|
||||
0CA148DD288903F000DE2211 /* ScrapingViewModel.swift in Sources */,
|
||||
|
|
|
|||
|
|
@ -33,6 +33,17 @@ public enum DebridType: Int, Codable, Hashable, CaseIterable {
|
|||
return abbreviated ? "PM" : "Premiumize"
|
||||
}
|
||||
}
|
||||
|
||||
func website() -> String {
|
||||
switch self {
|
||||
case .realDebrid:
|
||||
return "https://real-debrid.com"
|
||||
case .allDebrid:
|
||||
return "https://alldebrid.com"
|
||||
case .premiumize:
|
||||
return "https://premiumize.me"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Wrapper struct for magnet links to contain both the link and hash for easy access
|
||||
|
|
|
|||
|
|
@ -323,6 +323,17 @@ public class DebridManager: ObservableObject {
|
|||
}
|
||||
}
|
||||
|
||||
public func getAuthProcessingBool(debridType: DebridType) -> Bool {
|
||||
switch debridType {
|
||||
case .realDebrid:
|
||||
return realDebridAuthProcessing
|
||||
case .allDebrid:
|
||||
return allDebridAuthProcessing
|
||||
case .premiumize:
|
||||
return premiumizeAuthProcessing
|
||||
}
|
||||
}
|
||||
|
||||
// Callback to finish debrid auth since functions can be split
|
||||
func completeDebridAuth(_ debridType: DebridType, success: Bool = true) {
|
||||
if enabledDebrids.count == 1, success {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,52 @@
|
|||
//
|
||||
// DebridInfoView.swift
|
||||
// Ferrite
|
||||
//
|
||||
// Created by Brian Dashore on 3/5/23.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct SettingsDebridInfoView: View {
|
||||
@EnvironmentObject var debridManager: DebridManager
|
||||
|
||||
let debridType: DebridType
|
||||
|
||||
var body: some View {
|
||||
NavView {
|
||||
List {
|
||||
Section(header: InlineHeader("Description")) {
|
||||
VStack(alignment: .leading, spacing: 10) {
|
||||
Text("\(debridType.toString()) is a debrid service that is used for unrestricting downloads and media playback. You must pay to access the service.")
|
||||
|
||||
Link("Website", destination: URL(string: debridType.website()) ?? URL(string: "https://kingbri.dev/ferrite")!)
|
||||
}
|
||||
}
|
||||
|
||||
Section(
|
||||
header: InlineHeader("Login status"),
|
||||
footer: Text("A WebView will show up to prompt you for credentials")
|
||||
) {
|
||||
Button {
|
||||
Task {
|
||||
if debridManager.enabledDebrids.contains(debridType) {
|
||||
await debridManager.logoutDebrid(debridType: debridType)
|
||||
} else if !debridManager.getAuthProcessingBool(debridType: debridType) {
|
||||
await debridManager.authenticateDebrid(debridType: debridType)
|
||||
}
|
||||
}
|
||||
} label: {
|
||||
Text(
|
||||
debridManager.enabledDebrids.contains(debridType)
|
||||
? "Logout"
|
||||
: (debridManager.getAuthProcessingBool(debridType: debridType) ? "Processing" : "Login")
|
||||
)
|
||||
.foregroundColor(debridManager.enabledDebrids.contains(debridType) ? .red : .blue)
|
||||
}
|
||||
}
|
||||
}
|
||||
.navigationTitle(debridType.toString())
|
||||
.navigationBarTitleDisplayMode(.inline)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -32,55 +32,19 @@ struct SettingsView: View {
|
|||
NavView {
|
||||
Form {
|
||||
Section(header: InlineHeader("Debrid services")) {
|
||||
HStack {
|
||||
Text("RealDebrid")
|
||||
Spacer()
|
||||
Button {
|
||||
Task {
|
||||
if debridManager.enabledDebrids.contains(.realDebrid) {
|
||||
await debridManager.logoutDebrid(debridType: .realDebrid)
|
||||
} else if !debridManager.realDebridAuthProcessing {
|
||||
await debridManager.authenticateDebrid(debridType: .realDebrid)
|
||||
ForEach(DebridType.allCases, id: \.self) { debridType in
|
||||
NavigationLink(
|
||||
destination: SettingsDebridInfoView(
|
||||
debridType: debridType
|
||||
), label: {
|
||||
HStack {
|
||||
Text(debridType.toString())
|
||||
Spacer()
|
||||
Text(debridManager.enabledDebrids.contains(debridType) ? "Enabled" : "Disabled")
|
||||
.foregroundColor(.secondary)
|
||||
}
|
||||
}
|
||||
} label: {
|
||||
Text(debridManager.enabledDebrids.contains(.realDebrid) ? "Logout" : (debridManager.realDebridAuthProcessing ? "Processing" : "Login"))
|
||||
.foregroundColor(debridManager.enabledDebrids.contains(.realDebrid) ? .red : .blue)
|
||||
}
|
||||
}
|
||||
|
||||
HStack {
|
||||
Text("AllDebrid")
|
||||
Spacer()
|
||||
Button {
|
||||
Task {
|
||||
if debridManager.enabledDebrids.contains(.allDebrid) {
|
||||
await debridManager.logoutDebrid(debridType: .allDebrid)
|
||||
} else if !debridManager.allDebridAuthProcessing {
|
||||
await debridManager.authenticateDebrid(debridType: .allDebrid)
|
||||
}
|
||||
}
|
||||
} label: {
|
||||
Text(debridManager.enabledDebrids.contains(.allDebrid) ? "Logout" : (debridManager.allDebridAuthProcessing ? "Processing" : "Login"))
|
||||
.foregroundColor(debridManager.enabledDebrids.contains(.allDebrid) ? .red : .blue)
|
||||
}
|
||||
}
|
||||
|
||||
HStack {
|
||||
Text("Premiumize")
|
||||
Spacer()
|
||||
Button {
|
||||
Task {
|
||||
if debridManager.enabledDebrids.contains(.premiumize) {
|
||||
await debridManager.logoutDebrid(debridType: .premiumize)
|
||||
} else if !debridManager.premiumizeAuthProcessing {
|
||||
await debridManager.authenticateDebrid(debridType: .premiumize)
|
||||
}
|
||||
}
|
||||
} label: {
|
||||
Text(debridManager.enabledDebrids.contains(.premiumize) ? "Logout" : (debridManager.premiumizeAuthProcessing ? "Processing" : "Login"))
|
||||
.foregroundColor(debridManager.enabledDebrids.contains(.premiumize) ? .red : .blue)
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue