PIN check for pairing

This commit is contained in:
Leon Böttger authored and Leon Böttger committed 2026-03-15 15:57:56 +01:00
1 parent 606082d76d
commit 82f40d780f
2 files changed
+512 -50

No files matched your search

+504 -38
View File
@@ -234,6 +234,472 @@
}
}
},
"No" : {
"extractionState" : "manual",
"localizations" : {
"ar" : {
"stringUnit" : {
"state" : "translated",
"value" : "لا"
}
},
"ca" : {
"stringUnit" : {
"state" : "translated",
"value" : "No"
}
},
"cs" : {
"stringUnit" : {
"state" : "translated",
"value" : "Ne"
}
},
"da" : {
"stringUnit" : {
"state" : "translated",
"value" : "Nej"
}
},
"de" : {
"stringUnit" : {
"state" : "translated",
"value" : "Nein"
}
},
"el" : {
"stringUnit" : {
"state" : "translated",
"value" : "Όχι"
}
},
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "No"
}
},
"en-AU" : {
"stringUnit" : {
"state" : "translated",
"value" : "No"
}
},
"en-CA" : {
"stringUnit" : {
"state" : "translated",
"value" : "No"
}
},
"en-GB" : {
"stringUnit" : {
"state" : "translated",
"value" : "No"
}
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "No"
}
},
"es-419" : {
"stringUnit" : {
"state" : "translated",
"value" : "No"
}
},
"fi" : {
"stringUnit" : {
"state" : "translated",
"value" : "Ei"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Non"
}
},
"fr-CA" : {
"stringUnit" : {
"state" : "translated",
"value" : "Non"
}
},
"he" : {
"stringUnit" : {
"state" : "translated",
"value" : "לא"
}
},
"hi" : {
"stringUnit" : {
"state" : "translated",
"value" : "नहीं"
}
},
"hr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Ne"
}
},
"hu" : {
"stringUnit" : {
"state" : "translated",
"value" : "Nem"
}
},
"id" : {
"stringUnit" : {
"state" : "translated",
"value" : "Tidak"
}
},
"it" : {
"stringUnit" : {
"state" : "translated",
"value" : "No"
}
},
"ja" : {
"stringUnit" : {
"state" : "translated",
"value" : "いいえ"
}
},
"ko" : {
"stringUnit" : {
"state" : "translated",
"value" : "아니요"
}
},
"ms" : {
"stringUnit" : {
"state" : "translated",
"value" : "Tidak"
}
},
"nb" : {
"stringUnit" : {
"state" : "translated",
"value" : "Nei"
}
},
"nl" : {
"stringUnit" : {
"state" : "translated",
"value" : "Nee"
}
},
"pl" : {
"stringUnit" : {
"state" : "translated",
"value" : "Nie"
}
},
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "Não"
}
},
"pt-PT" : {
"stringUnit" : {
"state" : "translated",
"value" : "Não"
}
},
"ro" : {
"stringUnit" : {
"state" : "translated",
"value" : "Nu"
}
},
"ru" : {
"stringUnit" : {
"state" : "translated",
"value" : "Нет"
}
},
"sv" : {
"stringUnit" : {
"state" : "translated",
"value" : "Nej"
}
},
"th" : {
"stringUnit" : {
"state" : "translated",
"value" : "ไม่"
}
},
"tr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Hayır"
}
},
"uk" : {
"stringUnit" : {
"state" : "translated",
"value" : "Ні"
}
},
"vi" : {
"stringUnit" : {
"state" : "translated",
"value" : "Không"
}
},
"zh-Hans" : {
"stringUnit" : {
"state" : "translated",
"value" : "否"
}
},
"zh-Hant" : {
"stringUnit" : {
"state" : "translated",
"value" : "否"
}
}
}
},
"Yes" : {
"extractionState" : "manual",
"localizations" : {
"ar" : {
"stringUnit" : {
"state" : "translated",
"value" : "نعم"
}
},
"ca" : {
"stringUnit" : {
"state" : "translated",
"value" : "Sí"
}
},
"cs" : {
"stringUnit" : {
"state" : "translated",
"value" : "Ano"
}
},
"da" : {
"stringUnit" : {
"state" : "translated",
"value" : "Ja"
}
},
"de" : {
"stringUnit" : {
"state" : "translated",
"value" : "Ja"
}
},
"el" : {
"stringUnit" : {
"state" : "translated",
"value" : "Ναι"
}
},
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Yes"
}
},
"en-AU" : {
"stringUnit" : {
"state" : "translated",
"value" : "Yes"
}
},
"en-CA" : {
"stringUnit" : {
"state" : "translated",
"value" : "Yes"
}
},
"en-GB" : {
"stringUnit" : {
"state" : "translated",
"value" : "Yes"
}
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Sí"
}
},
"es-419" : {
"stringUnit" : {
"state" : "translated",
"value" : "Sí"
}
},
"fi" : {
"stringUnit" : {
"state" : "translated",
"value" : "Kyllä"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Oui"
}
},
"fr-CA" : {
"stringUnit" : {
"state" : "translated",
"value" : "Oui"
}
},
"he" : {
"stringUnit" : {
"state" : "translated",
"value" : "כן"
}
},
"hi" : {
"stringUnit" : {
"state" : "translated",
"value" : "हाँ"
}
},
"hr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Da"
}
},
"hu" : {
"stringUnit" : {
"state" : "translated",
"value" : "Igen"
}
},
"id" : {
"stringUnit" : {
"state" : "translated",
"value" : "Ya"
}
},
"it" : {
"stringUnit" : {
"state" : "translated",
"value" : "Sì"
}
},
"ja" : {
"stringUnit" : {
"state" : "translated",
"value" : "はい"
}
},
"ko" : {
"stringUnit" : {
"state" : "translated",
"value" : "예"
}
},
"ms" : {
"stringUnit" : {
"state" : "translated",
"value" : "Ya"
}
},
"nb" : {
"stringUnit" : {
"state" : "translated",
"value" : "Ja"
}
},
"nl" : {
"stringUnit" : {
"state" : "translated",
"value" : "Ja"
}
},
"pl" : {
"stringUnit" : {
"state" : "translated",
"value" : "Tak"
}
},
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "Sim"
}
},
"pt-PT" : {
"stringUnit" : {
"state" : "translated",
"value" : "Sim"
}
},
"ro" : {
"stringUnit" : {
"state" : "translated",
"value" : "Da"
}
},
"ru" : {
"stringUnit" : {
"state" : "translated",
"value" : "Да"
}
},
"sv" : {
"stringUnit" : {
"state" : "translated",
"value" : "Ja"
}
},
"th" : {
"stringUnit" : {
"state" : "translated",
"value" : "ใช่"
}
},
"tr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Evet"
}
},
"uk" : {
"stringUnit" : {
"state" : "translated",
"value" : "Так"
}
},
"vi" : {
"stringUnit" : {
"state" : "translated",
"value" : "Có"
}
},
"zh-Hans" : {
"stringUnit" : {
"state" : "translated",
"value" : "是"
}
},
"zh-Hant" : {
"stringUnit" : {
"state" : "translated",
"value" : "是"
}
}
}
},
"AcceptOnce" : {
"extractionState" : "manual",
"localizations" : {
@@ -22595,229 +23061,229 @@
"ar" : {
"stringUnit" : {
"state" : "translated",
"value" : "أدخل %@ على هاتفك."
"value" : "اضغط على قبول إذا تطابق رمز PIN."
}
},
"ca" : {
"stringUnit" : {
"state" : "translated",
"value" : "Introdueix %@ al teu telèfon."
"value" : "Fes clic a Accepta si el PIN coincideix."
}
},
"cs" : {
"stringUnit" : {
"state" : "translated",
"value" : "Zadej %@ do telefonu."
"value" : "Klikněte na Přijmout, pokud se PIN shoduje."
}
},
"da" : {
"stringUnit" : {
"state" : "translated",
"value" : "Indtast %@ på din telefon."
"value" : "Klik på Acceptér, hvis PIN-koden matcher."
}
},
"de" : {
"stringUnit" : {
"state" : "translated",
"value" : "Gib %@ auf deinem Handy ein."
"value" : "Klicke auf Annehmen, wenn die PIN übereinstimmt."
}
},
"el" : {
"stringUnit" : {
"state" : "translated",
"value" : "Εισαγάγετε %@ στο τηλέφωνό σας."
"value" : "Πατήστε Αποδοχή αν το PIN ταιριάζει."
}
},
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Enter %@ on your phone."
"value" : "Click Accept if the PIN matches."
}
},
"en-AU" : {
"stringUnit" : {
"state" : "translated",
"value" : "Enter %@ on your phone."
"value" : "Click Accept if the PIN matches."
}
},
"en-CA" : {
"stringUnit" : {
"state" : "translated",
"value" : "Enter %@ on your phone."
"value" : "Click Accept if the PIN matches."
}
},
"en-GB" : {
"stringUnit" : {
"state" : "translated",
"value" : "Enter %@ on your phone."
"value" : "Click Accept if the PIN matches."
}
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Introduce %@ en tu teléfono."
"value" : "Haz clic en Aceptar si el PIN coincide."
}
},
"es-419" : {
"stringUnit" : {
"state" : "translated",
"value" : "Ingresa %@ en tu teléfono."
"value" : "Toca Aceptar si el PIN coincide."
}
},
"fi" : {
"stringUnit" : {
"state" : "translated",
"value" : "Syötä %@ puhelimeesi."
"value" : "Klikkaa Hyväksy, jos PIN täsmää."
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Entrez %@ sur votre téléphone."
"value" : "Cliquez sur Accepter si le PIN correspond."
}
},
"fr-CA" : {
"stringUnit" : {
"state" : "translated",
"value" : "Entrez %@ sur votre téléphone."
"value" : "Cliquez sur Accepter si le PIN correspond."
}
},
"he" : {
"stringUnit" : {
"state" : "translated",
"value" : "הזן %@ בטלפון שלך."
"value" : "לחץ על קבל אם ה-PIN תואם."
}
},
"hi" : {
"stringUnit" : {
"state" : "translated",
"value" : "अपने फ़ोन में %@ दर्ज करें।"
"value" : "यदि PIN मेल खाता है तो स्वीकार करें पर क्लिक करें।"
}
},
"hr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Unesi %@ na telefon."
"value" : "Kliknite Prihvati ako se PIN podudara."
}
},
"hu" : {
"stringUnit" : {
"state" : "translated",
"value" : "Add meg %@-et a telefonodon."
"value" : "Kattintson az Elfogadás gombra, ha a PIN egyezik."
}
},
"id" : {
"stringUnit" : {
"state" : "translated",
"value" : "Masukkan %@ di ponsel Anda."
"value" : "Klik Terima jika PIN cocok."
}
},
"it" : {
"stringUnit" : {
"state" : "translated",
"value" : "Inserisci %@ sul telefono."
"value" : "Fai clic su Accetta se il PIN corrisponde."
}
},
"ja" : {
"stringUnit" : {
"state" : "translated",
"value" : "電話に%@を入力してください。"
"value" : "PINが一致する場合は「許可」をクリックしてください。"
}
},
"ko" : {
"stringUnit" : {
"state" : "translated",
"value" : "휴대전화에 %@ 입력."
"value" : "PIN이 일치하면 허용을 클릭하세요."
}
},
"ms" : {
"stringUnit" : {
"state" : "translated",
"value" : "Masukkan %@ pada telefon anda."
"value" : "Klik Terima jika PIN sepadan."
}
},
"nb" : {
"stringUnit" : {
"state" : "translated",
"value" : "Skriv inn %@ på telefonen."
"value" : "Klikk Godta hvis PIN-koden stemmer."
}
},
"nl" : {
"stringUnit" : {
"state" : "translated",
"value" : "Voer %@ in op je telefoon."
"value" : "Klik op Accepteren als de PIN overeenkomt."
}
},
"pl" : {
"stringUnit" : {
"state" : "translated",
"value" : "Wpisz %@ na telefonie."
"value" : "Kliknij Akceptuj, jeśli PIN się zgadza."
}
},
"pt-BR" : {
"stringUnit" : {
"state" : "translated",
"value" : "Digite %@ no seu telefone."
"value" : "Clique em Aceitar se o PIN corresponder."
}
},
"pt-PT" : {
"stringUnit" : {
"state" : "translated",
"value" : "Introduz %@ no teu telemóvel."
"value" : "Clique em Aceitar se o PIN corresponder."
}
},
"ro" : {
"stringUnit" : {
"state" : "translated",
"value" : "Introduceți %@ pe telefon."
"value" : "Faceți clic pe Acceptă dacă PIN-ul se potrivește."
}
},
"ru" : {
"stringUnit" : {
"state" : "translated",
"value" : "Введите %@ на телефоне."
"value" : "Нажмите «Принять», если PIN совпадает."
}
},
"sv" : {
"stringUnit" : {
"state" : "translated",
"value" : "Skriv in %@ på din telefon."
"value" : "Klicka på Acceptera om PIN-koden stämmer."
}
},
"th" : {
"stringUnit" : {
"state" : "translated",
"value" : "กรอก %@ บนโทรศัพท์ของคุณ"
"value" : "แตะ ยอมรับ หาก PIN ตรงกัน"
}
},
"tr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Telefona %@ girin."
"value" : "PIN eşleşiyorsa Kabul'e tıklayın."
}
},
"uk" : {
"stringUnit" : {
"state" : "translated",
"value" : "Введіть %@ на телефоні."
"value" : "Натисніть «Прийняти», якщо PIN збігається."
}
},
"vi" : {
"stringUnit" : {
"state" : "translated",
"value" : "Nhập %@ trên điện thoại."
"value" : "Nhấn Chấp nhận nếu PIN khớp."
}
},
"zh-Hans" : {
"stringUnit" : {
"state" : "translated",
"value" : "在手机上输入%@。"
"value" : "如果 PIN 匹配,请点击接受。"
}
},
"zh-Hant" : {
"stringUnit" : {
"state" : "translated",
"value" : "在手機上輸入%@。"
"value" : "如果 PIN 符合,請點選接受。"
}
}
}
+8 -12
View File
@@ -94,25 +94,21 @@ class ReceiveModel: ObservableObject, InboundAppDelegate {
self.activeDeviceName = resolvedSenderName
let pinCode = transfer.pinCode ?? "----"
let pinHeader = "PinCode".localized(with: pinCode)
let compareMessage = "NotificationSyncToastPinSubtitle".localized()
self.consentState = ConsentToastState(
transferID: transferID,
pinCodeMessage: resolvedSenderName,
message: "NotificationSyncToastEnableSubtitle".localized(),
pinCodeMessage: pinHeader,
message: compareMessage,
notificationSyncStage: .consent,
allowsTrust: false,
acceptAction: { [weak self] _ in
guard let self else { return }
withAnimation {
self.consentState = nil
}
primaryButtonAction(false)
self.consentState = ConsentToastState(
transferID: transferID,
pinCodeMessage: resolvedSenderName,
message: "NotificationSyncToastPinSubtitle".localized(with: pinCode),
notificationSyncStage: .pin,
allowsTrust: false,
acceptAction: { _ in },
declineAction: {}
)
self.showQuickDropToast(for: transferID)
self.hideQuickDropToast(style: .fade)
},
declineAction: { [weak self] in
guard let self else { return }