Add NWC paste button

Changelog-Added: Added Wallet Connect paste button
Closes: #1235
This commit is contained in:
Suhail Saqan 2023-06-02 17:37:50 -05:00 committed by William Casarin
parent dde48132c9
commit b3b335f917
1 changed files with 49 additions and 10 deletions

View File

@ -45,26 +45,65 @@ enum WalletScanResult: Equatable {
case scanning
}
struct NWCPaste: View {
@Binding var result: WalletScanResult
@Environment(\.colorScheme) var colorScheme
init(result: Binding<WalletScanResult>) {
self._result = result
}
var body: some View {
Button(action: {
if let pasted_nwc = UIPasteboard.general.string {
guard let url = WalletConnectURL(str: pasted_nwc) else {
self.result = .failed
return
}
self.result = .success(url)
}
}) {
HStack {
Image(systemName: "doc.on.clipboard")
Text("Paste")
}
.frame(minWidth: 300, maxWidth: .infinity, minHeight: 50, maxHeight: 50, alignment: .center)
.foregroundColor(colorScheme == .light ? DamusColors.black : DamusColors.white)
.overlay {
RoundedRectangle(cornerRadius: 24)
.stroke(colorScheme == .light ? DamusColors.black : DamusColors.white, lineWidth: 2)
}
.padding(EdgeInsets(top: 10, leading: 50, bottom: 25, trailing: 50))
}
}
}
struct WalletScannerView: View {
@Binding var result: WalletScanResult
@Environment(\.dismiss) var dismiss
var body: some View {
CodeScannerView(codeTypes: [.qr]) { res in
switch res {
case .success(let success):
guard let url = WalletConnectURL(str: success.string) else {
VStack {
CodeScannerView(codeTypes: [.qr]) { res in
switch res {
case .success(let success):
guard let url = WalletConnectURL(str: success.string) else {
result = .failed
return
}
result = .success(url)
case .failure:
result = .failed
return
}
result = .success(url)
case .failure:
result = .failed
dismiss()
}
dismiss()
NWCPaste(result: $result)
.padding(.vertical)
}
}
}