mirror of
https://github.com/passepartoutvpn/passepartout-apple.git
synced 2025-02-16 12:52:11 +00:00
Link TODOs to issues
This commit is contained in:
parent
bef1d36aa4
commit
f602655568
@ -30,6 +30,7 @@ import PassepartoutKit
|
|||||||
import UtilsLibrary
|
import UtilsLibrary
|
||||||
|
|
||||||
extension AppData {
|
extension AppData {
|
||||||
|
// TODO: #656, make non-static
|
||||||
public static func cdProfileRepository(
|
public static func cdProfileRepository(
|
||||||
registry: Registry,
|
registry: Registry,
|
||||||
coder: ProfileCoder,
|
coder: ProfileCoder,
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
import Foundation
|
import Foundation
|
||||||
import PassepartoutKit
|
import PassepartoutKit
|
||||||
|
|
||||||
|
// TODO: #656, make non-static
|
||||||
public struct AppUI {
|
public struct AppUI {
|
||||||
private init() {
|
private init() {
|
||||||
}
|
}
|
||||||
|
@ -94,7 +94,7 @@ extension ProfileEditor {
|
|||||||
ModuleType
|
ModuleType
|
||||||
.allCases
|
.allCases
|
||||||
.filter {
|
.filter {
|
||||||
// TODO: hide manual OpenVPN/WireGuard until editable
|
// TODO: #657, hide manual OpenVPN/WireGuard until editable
|
||||||
$0 != .openVPN && $0 != .wireGuard
|
$0 != .openVPN && $0 != .wireGuard
|
||||||
}
|
}
|
||||||
.filter {
|
.filter {
|
||||||
|
@ -28,6 +28,8 @@ import Foundation
|
|||||||
import PassepartoutKit
|
import PassepartoutKit
|
||||||
|
|
||||||
extension Issue {
|
extension Issue {
|
||||||
|
|
||||||
|
// TODO: #656, make non-static
|
||||||
static func with(versionString: String, purchasedProducts: Set<AppProduct>, tunnel: Tunnel) async -> Self {
|
static func with(versionString: String, purchasedProducts: Set<AppProduct>, tunnel: Tunnel) async -> Self {
|
||||||
let appLog = CommonLibrary.currentLog(parameters: Constants.shared.log)
|
let appLog = CommonLibrary.currentLog(parameters: Constants.shared.log)
|
||||||
.joined(separator: "\n")
|
.joined(separator: "\n")
|
||||||
|
@ -81,7 +81,7 @@ struct Issue: Identifiable {
|
|||||||
.replacingOccurrences(of: "$appLine", with: appLine ?? "unknown")
|
.replacingOccurrences(of: "$appLine", with: appLine ?? "unknown")
|
||||||
.replacingOccurrences(of: "$osLine", with: osLine)
|
.replacingOccurrences(of: "$osLine", with: osLine)
|
||||||
.replacingOccurrences(of: "$deviceLine", with: deviceLine ?? "unknown")
|
.replacingOccurrences(of: "$deviceLine", with: deviceLine ?? "unknown")
|
||||||
// TODO: replace with provider later
|
// TODO: #614, replace with provider later
|
||||||
.replacingOccurrences(of: "$providerName", with: "none")
|
.replacingOccurrences(of: "$providerName", with: "none")
|
||||||
.replacingOccurrences(of: "$providerLastUpdate", with: "unknown")
|
.replacingOccurrences(of: "$providerLastUpdate", with: "unknown")
|
||||||
.replacingOccurrences(of: "$purchasedProducts", with: purchasedProducts.map(\.rawValue).description)
|
.replacingOccurrences(of: "$purchasedProducts", with: purchasedProducts.map(\.rawValue).description)
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
|
|
||||||
import SwiftUI
|
import SwiftUI
|
||||||
|
|
||||||
// TODO: donations
|
// TODO: #585, donations
|
||||||
|
|
||||||
struct DonateView: View {
|
struct DonateView: View {
|
||||||
var body: some View {
|
var body: some View {
|
||||||
|
@ -32,7 +32,7 @@ extension AboutView {
|
|||||||
var listView: some View {
|
var listView: some View {
|
||||||
List {
|
List {
|
||||||
Section {
|
Section {
|
||||||
// TODO: donations
|
// TODO: #585, donations
|
||||||
// donateLink
|
// donateLink
|
||||||
linksLink
|
linksLink
|
||||||
creditsLink
|
creditsLink
|
||||||
|
@ -32,7 +32,7 @@ extension AboutView {
|
|||||||
var listView: some View {
|
var listView: some View {
|
||||||
List(selection: $navigationRoute) {
|
List(selection: $navigationRoute) {
|
||||||
Section {
|
Section {
|
||||||
// TODO: donations
|
// TODO: #585, donations
|
||||||
// donateLink
|
// donateLink
|
||||||
linksLink
|
linksLink
|
||||||
creditsLink
|
creditsLink
|
||||||
|
@ -29,18 +29,22 @@ import SwiftUI
|
|||||||
import UtilsLibrary
|
import UtilsLibrary
|
||||||
|
|
||||||
extension DebugLogView {
|
extension DebugLogView {
|
||||||
|
|
||||||
|
// TODO: #656, make non-static
|
||||||
static func withApp(parameters: Constants.Log) -> DebugLogView {
|
static func withApp(parameters: Constants.Log) -> DebugLogView {
|
||||||
DebugLogView {
|
DebugLogView {
|
||||||
CommonLibrary.currentLog(parameters: parameters)
|
CommonLibrary.currentLog(parameters: parameters)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: #656, make non-static
|
||||||
static func withTunnel(_ tunnel: Tunnel, parameters: Constants.Log) -> DebugLogView {
|
static func withTunnel(_ tunnel: Tunnel, parameters: Constants.Log) -> DebugLogView {
|
||||||
DebugLogView {
|
DebugLogView {
|
||||||
await tunnel.currentLog(parameters: parameters)
|
await tunnel.currentLog(parameters: parameters)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: #656, make non-static
|
||||||
static func withURL(_ url: URL) -> DebugLogView {
|
static func withURL(_ url: URL) -> DebugLogView {
|
||||||
DebugLogView {
|
DebugLogView {
|
||||||
do {
|
do {
|
||||||
@ -99,7 +103,7 @@ private extension DebugLogView {
|
|||||||
.disabled(currentLines.isEmpty)
|
.disabled(currentLines.isEmpty)
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: share as temporary URL (could enable email)
|
// TODO: #658, share as temporary URL (could enable email)
|
||||||
// var shareButton: some View {
|
// var shareButton: some View {
|
||||||
// ShareLink(item: content)
|
// ShareLink(item: content)
|
||||||
// }
|
// }
|
||||||
|
@ -321,7 +321,7 @@ private extension OpenVPNView {
|
|||||||
|
|
||||||
private extension OpenVPNView {
|
private extension OpenVPNView {
|
||||||
func importConfiguration(from url: URL) {
|
func importConfiguration(from url: URL) {
|
||||||
// TODO: import draft from external URL
|
// TODO: #657, import draft from external URL
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -137,7 +137,7 @@ private extension WireGuardView {
|
|||||||
|
|
||||||
private extension WireGuardView {
|
private extension WireGuardView {
|
||||||
func importConfiguration(from url: URL) {
|
func importConfiguration(from url: URL) {
|
||||||
// TODO: import draft from external URL
|
// TODO: #657, import draft from external URL
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,11 +35,11 @@ struct PaywallView: View {
|
|||||||
|
|
||||||
let feature: AppFeature
|
let feature: AppFeature
|
||||||
|
|
||||||
// TODO: #424, implement payments
|
// TODO: #585, implement payments
|
||||||
var body: some View {
|
var body: some View {
|
||||||
Text(String(describing: feature))
|
Text(String(describing: feature))
|
||||||
.toolbar(content: toolbarContent)
|
.toolbar(content: toolbarContent)
|
||||||
.navigationTitle("Purchase")
|
.navigationTitle(Strings.Global.purchase)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -348,7 +348,7 @@ struct ThemeCopiableText: View {
|
|||||||
} label: {
|
} label: {
|
||||||
ThemeImage(.copy)
|
ThemeImage(.copy)
|
||||||
}
|
}
|
||||||
// TODO: #584 menu, necessary to avoid cell selection
|
// TODO: #584, necessary to avoid cell selection
|
||||||
.buttonStyle(.borderless)
|
.buttonStyle(.borderless)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -123,7 +123,7 @@ private extension InstalledProfileView {
|
|||||||
ThemeImage(.tunnelToggle)
|
ThemeImage(.tunnelToggle)
|
||||||
.scaleEffect(1.5, anchor: .trailing)
|
.scaleEffect(1.5, anchor: .trailing)
|
||||||
}
|
}
|
||||||
// TODO: #584 menu, necessary to avoid cell selection
|
// TODO: #584, necessary to avoid cell selection
|
||||||
.buttonStyle(.plain)
|
.buttonStyle(.plain)
|
||||||
.opacity(installedOpacity)
|
.opacity(installedOpacity)
|
||||||
}
|
}
|
||||||
|
@ -37,7 +37,7 @@ struct ProfileInfoButton: View {
|
|||||||
} label: {
|
} label: {
|
||||||
ThemeImage(.info)
|
ThemeImage(.info)
|
||||||
}
|
}
|
||||||
// TODO: #584 menu, necessary to avoid cell selection
|
// TODO: #584, necessary to avoid cell selection
|
||||||
.buttonStyle(.borderless)
|
.buttonStyle(.borderless)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
import Foundation
|
import Foundation
|
||||||
import PassepartoutKit
|
import PassepartoutKit
|
||||||
|
|
||||||
|
// TODO: #656, make non-static
|
||||||
public struct CommonLibrary {
|
public struct CommonLibrary {
|
||||||
private init() {
|
private init() {
|
||||||
}
|
}
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
import Foundation
|
import Foundation
|
||||||
import PassepartoutKit
|
import PassepartoutKit
|
||||||
|
|
||||||
|
// TODO: #656, make non-static
|
||||||
extension BundleConfiguration {
|
extension BundleConfiguration {
|
||||||
public enum BundleKey: String {
|
public enum BundleKey: String {
|
||||||
case appStoreId
|
case appStoreId
|
||||||
|
@ -41,7 +41,7 @@ public struct LongContentView: View {
|
|||||||
Image(systemName: copySystemImage ?? "doc.on.doc")
|
Image(systemName: copySystemImage ?? "doc.on.doc")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// TODO: layout, add padding an inset, let content extend beyond safe areas
|
// TODO: #659, add padding as inset, let content extend beyond safe areas
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user