48 lines
1.1 KiB
Swift
48 lines
1.1 KiB
Swift
|
import SwiftUI
|
||
|
|
||
|
struct SettingsKeyItemLink: View {
|
||
|
|
||
|
let type: KeyManagement.KeyType
|
||
|
|
||
|
let footnote: String
|
||
|
|
||
|
@EnvironmentObject
|
||
|
private var keys: KeyManagement
|
||
|
|
||
|
@State
|
||
|
private var keyText = "..."
|
||
|
|
||
|
var body: some View {
|
||
|
NavigationLink {
|
||
|
SettingsKeyInputView(
|
||
|
type: type,
|
||
|
footnote: footnote)
|
||
|
.environmentObject(keys)
|
||
|
} label: {
|
||
|
SettingsListTextItem(
|
||
|
title: type.displayName,
|
||
|
value: keyText)
|
||
|
.onAppear(perform: updateKeyText)
|
||
|
}
|
||
|
.buttonStyle(PlainButtonStyle())
|
||
|
}
|
||
|
|
||
|
private func updateKeyText() {
|
||
|
Task {
|
||
|
let key = keys.get(type)?.displayString ?? "Not set"
|
||
|
DispatchQueue.main.async {
|
||
|
keyText = key
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
struct SettingsKeyItemLink_Previews: PreviewProvider {
|
||
|
static var previews: some View {
|
||
|
SettingsKeyItemLink(
|
||
|
type: .deviceKey,
|
||
|
footnote: "Some text describing the purpose of the key.")
|
||
|
.environmentObject(KeyManagement())
|
||
|
}
|
||
|
}
|