110 lines
4.5 KiB
Swift
110 lines
4.5 KiB
Swift
//
|
|
// MagnetChoiceView.swift
|
|
// Ferrite
|
|
//
|
|
// Created by Brian Dashore on 7/20/22.
|
|
//
|
|
|
|
import ActivityView
|
|
import SwiftUI
|
|
|
|
struct MagnetChoiceView: View {
|
|
@Environment(\.dismiss) var dismiss
|
|
|
|
@EnvironmentObject var scrapingModel: ScrapingViewModel
|
|
@EnvironmentObject var debridManager: DebridManager
|
|
@EnvironmentObject var navModel: NavigationViewModel
|
|
|
|
@AppStorage("RealDebrid.Enabled") var realDebridEnabled = false
|
|
|
|
@State private var showActivityView = false
|
|
@State private var showLinkCopyAlert = false
|
|
@State private var showMagnetCopyAlert = false
|
|
@State private var activityItem: ActivityItem?
|
|
|
|
var body: some View {
|
|
NavView {
|
|
Form {
|
|
if realDebridEnabled, debridManager.matchSearchResult(result: scrapingModel.selectedSearchResult) != .none {
|
|
Section("Real Debrid options") {
|
|
ListRowButtonView("Play on Outplayer", systemImage: "arrow.up.forward.app.fill") {
|
|
navModel.runDebridAction(action: .outplayer, urlString: debridManager.realDebridDownloadUrl)
|
|
}
|
|
|
|
ListRowButtonView("Play on VLC", systemImage: "arrow.up.forward.app.fill") {
|
|
navModel.runDebridAction(action: .vlc, urlString: debridManager.realDebridDownloadUrl)
|
|
}
|
|
|
|
ListRowButtonView("Play on Infuse", systemImage: "arrow.up.forward.app.fill") {
|
|
navModel.runDebridAction(action: .infuse, urlString: debridManager.realDebridDownloadUrl)
|
|
}
|
|
|
|
ListRowButtonView("Copy download URL", systemImage: "doc.on.doc.fill") {
|
|
UIPasteboard.general.string = debridManager.realDebridDownloadUrl
|
|
showLinkCopyAlert.toggle()
|
|
}
|
|
.alert(isPresented: $showLinkCopyAlert) {
|
|
Alert(
|
|
title: Text("Copied"),
|
|
message: Text("Download link copied successfully"),
|
|
dismissButton: .cancel(Text("OK"))
|
|
)
|
|
}
|
|
|
|
ListRowButtonView("Share download URL", systemImage: "square.and.arrow.up.fill") {
|
|
guard let url = URL(string: debridManager.realDebridDownloadUrl) else {
|
|
return
|
|
}
|
|
|
|
activityItem = ActivityItem(items: url)
|
|
}
|
|
}
|
|
}
|
|
|
|
Section("Magnet options") {
|
|
ListRowButtonView("Copy magnet", systemImage: "doc.on.doc.fill") {
|
|
UIPasteboard.general.string = scrapingModel.selectedSearchResult?.magnetLink
|
|
showMagnetCopyAlert.toggle()
|
|
}
|
|
.alert(isPresented: $showMagnetCopyAlert) {
|
|
Alert(
|
|
title: Text("Copied"),
|
|
message: Text("Magnet link copied successfully"),
|
|
dismissButton: .cancel(Text("OK"))
|
|
)
|
|
}
|
|
|
|
ListRowButtonView("Share magnet", systemImage: "square.and.arrow.up.fill") {
|
|
if let result = scrapingModel.selectedSearchResult, let url = URL(string: result.magnetLink) {
|
|
activityItem = ActivityItem(items: url)
|
|
}
|
|
}
|
|
|
|
ListRowButtonView("Open in WebTor", systemImage: "arrow.up.forward.app.fill") {
|
|
if let result = scrapingModel.selectedSearchResult {
|
|
navModel.runMagnetAction(action: .webtor, searchResult: result)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
.activitySheet($activityItem)
|
|
.navigationTitle("Link actions")
|
|
.navigationBarTitleDisplayMode(.inline)
|
|
.toolbar {
|
|
ToolbarItem(placement: .navigationBarTrailing) {
|
|
Button("Done") {
|
|
debridManager.realDebridDownloadUrl = ""
|
|
|
|
dismiss()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
struct MagnetChoiceView_Previews: PreviewProvider {
|
|
static var previews: some View {
|
|
MagnetChoiceView()
|
|
}
|
|
}
|