diff --git a/NearbyShare/NearbyConnection.swift b/NearbyShare/NearbyConnection.swift index 56222e3..7da9617 100644 --- a/NearbyShare/NearbyConnection.swift +++ b/NearbyShare/NearbyConnection.swift @@ -52,6 +52,7 @@ class NearbyConnection { func start() { connection.stateUpdateHandler = { state in + if !self.connectionClosed { if case .ready = state { self.connectionReady() @@ -91,6 +92,10 @@ class NearbyConnection { } } + if err == .posix(.ENETDOWN) { + self.lastError = NearbyError.protocolError("Error.NetworkDown") + } + self.handleConnectionClosure() } } @@ -133,6 +138,7 @@ class NearbyConnection { } if isComplete { log("Connection closed by peer during receiveFrameAsync") + self.lastError = NearbyError.protocolError("Error.ClosedByPeer".localized()) self.handleConnectionClosure() return } @@ -162,6 +168,7 @@ class NearbyConnection { } if isComplete { log("Connection closed by peer during receiveFrameAsync") + self.lastError = NearbyError.protocolError("Error.ClosedByPeer".localized()) self.handleConnectionClosure() return } diff --git a/QuickDrop.xcodeproj/project.pbxproj b/QuickDrop.xcodeproj/project.pbxproj index 3a0d53d..1560cfa 100644 --- a/QuickDrop.xcodeproj/project.pbxproj +++ b/QuickDrop.xcodeproj/project.pbxproj @@ -53,6 +53,7 @@ EB96ED8D2D7F7EA3004B3FF1 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 69DA9A1329E0BF5200A442DA /* Assets.xcassets */; }; EB96ED8F2D7F8105004B3FF1 /* Localized.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB96ED8E2D7F8103004B3FF1 /* Localized.swift */; }; EB96ED902D7F8114004B3FF1 /* Localized.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB96ED8E2D7F8103004B3FF1 /* Localized.swift */; }; + EBC05C592E32C22200EECC18 /* Localized.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB96ED8E2D7F8103004B3FF1 /* Localized.swift */; }; EBCC27F92D80C9F90079C478 /* Zip.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBCC27F82D80C9F70079C478 /* Zip.swift */; }; EBD2A2172D2860C100BCB8E2 /* WelcomeScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBD2A2162D2860BE00BCB8E2 /* WelcomeScreen.swift */; }; /* End PBXBuildFile section */ @@ -587,6 +588,7 @@ buildActionMask = 2147483647; files = ( 69DCF48D2AB70E8C00CBE2CC /* offline_wire_formats.pb.swift in Sources */, + EBC05C592E32C22200EECC18 /* Localized.swift in Sources */, EB2F9BFB2DA04B69004010A2 /* Helpers.swift in Sources */, 69DCF48F2AB70E8C00CBE2CC /* securemessage.pb.swift in Sources */, 69DCF4912AB70E9700CBE2CC /* NearbyConnection.swift in Sources */, diff --git a/QuickDrop/AppDelegate.swift b/QuickDrop/AppDelegate.swift index a17e8d8..228443c 100644 --- a/QuickDrop/AppDelegate.swift +++ b/QuickDrop/AppDelegate.swift @@ -476,8 +476,8 @@ class AppDelegate: NSObject, NSApplicationDelegate, UNUserNotificationCenterDele description = NSLocalizedString("Error.Protocol", value: "Communication error", comment: "") + "(\(errorMessage))" case .ukey2: description = NSLocalizedString("Error.Crypto", value: "Encryption error", comment: "") + "(\(ne.localizedDescription))" - case .canceled(reason: _): - break // can't happen for incoming transfers + case .canceled(reason: let reason): + description = "Error.Protocol".localized() + " (\(reason))" } } else { description = error.localizedDescription diff --git a/QuickDrop/Base.lproj/Localizable.strings b/QuickDrop/Base.lproj/Localizable.strings index 9a07b2d..3cfda3d 100644 --- a/QuickDrop/Base.lproj/Localizable.strings +++ b/QuickDrop/Base.lproj/Localizable.strings @@ -24,6 +24,10 @@ /* No comment provided by engineer. */ "Error.Protocol" = "Communication error"; +"Error.ClosedByPeer" = "The connection was closed. If this happens repeatedly, please restart your phone."; + +"Error.NetworkDown" = "The Wi-Fi connection was interrupted. Please check your Wi-Fi connection and try again."; + /* No comment provided by engineer. */ "NFiles" = "%d files"; diff --git a/QuickDrop/ar.lproj/Localizable.strings b/QuickDrop/ar.lproj/Localizable.strings index 48f1729..065ff8b 100644 --- a/QuickDrop/ar.lproj/Localizable.strings +++ b/QuickDrop/ar.lproj/Localizable.strings @@ -24,6 +24,10 @@ /* No comment provided by engineer. */ "Error.Protocol" = "خطأ في الاتصال"; +"Error.ClosedByPeer" = "تم إغلاق الاتصال. إذا تكرر هذا الأمر، يرجى إعادة تشغيل هاتفك."; + +"Error.NetworkDown" = "تم قطع اتصال Wi‑Fi. يرجى التحقق من اتصال Wi‑Fi الخاص بك والمحاولة مرة أخرى."; + /* No comment provided by engineer. */ "NFiles" = "%d ملفات"; diff --git a/QuickDrop/de.lproj/Localizable.strings b/QuickDrop/de.lproj/Localizable.strings index 3ff64fd..687476c 100644 --- a/QuickDrop/de.lproj/Localizable.strings +++ b/QuickDrop/de.lproj/Localizable.strings @@ -24,6 +24,10 @@ /* No comment provided by engineer. */ "Error.Protocol" = "Fehler bei der Datenübertragung"; +"Error.ClosedByPeer" = "Die Verbindung wurde geschlossen. Wenn das wiederholt passiert, starte bitte dein Handy neu."; + +"Error.NetworkDown" = "Die WLAN‑Verbindung wurde unterbrochen. Bitte überprüfe deine WLAN‑Verbindung und versuche es erneut."; + /* No comment provided by engineer. */ "NFiles" = "%d Dateien"; diff --git a/QuickDrop/es.lproj/Localizable.strings b/QuickDrop/es.lproj/Localizable.strings index b55f8bc..802cb5b 100644 --- a/QuickDrop/es.lproj/Localizable.strings +++ b/QuickDrop/es.lproj/Localizable.strings @@ -24,6 +24,10 @@ /* No comment provided by engineer. */ "Error.Protocol" = "Error de comunicación"; +"Error.ClosedByPeer" = "La conexión se cerró. Si esto ocurre repetidamente, reinicia tu teléfono."; + +"Error.NetworkDown" = "La conexión Wi‑Fi se interrumpió. Por favor, verifica tu conexión Wi‑Fi e inténtalo de nuevo."; + /* No comment provided by engineer. */ //"NFiles" = "%d archivos"; diff --git a/QuickDrop/fr.lproj/Localizable.strings b/QuickDrop/fr.lproj/Localizable.strings index d1f6208..10dcd94 100644 --- a/QuickDrop/fr.lproj/Localizable.strings +++ b/QuickDrop/fr.lproj/Localizable.strings @@ -24,6 +24,10 @@ /* No comment provided by engineer. */ "Error.Protocol" = "Erreur de communication"; +"Error.ClosedByPeer" = "La connexion a été fermée. Si cela se produit à plusieurs reprises, redémarrez votre téléphone."; + +"Error.NetworkDown" = "La connexion Wi‑Fi a été interrompue. Veuillez vérifier votre connexion Wi‑Fi et réessayer."; + /* No comment provided by engineer. */ "NFiles" = "%d fichiers"; diff --git a/QuickDrop/hu.lproj/Localizable.strings b/QuickDrop/hu.lproj/Localizable.strings index 8b484c2..7e4b6bf 100644 --- a/QuickDrop/hu.lproj/Localizable.strings +++ b/QuickDrop/hu.lproj/Localizable.strings @@ -24,6 +24,10 @@ /* No comment provided by engineer. */ "Error.Protocol" = "Kommunikációs hiba"; +"Error.ClosedByPeer" = "A kapcsolat megszakadt. Ha ez többször előfordul, indítsd újra a telefonodat."; + +"Error.NetworkDown" = "Megszakadt a Wi‑Fi kapcsolat. Kérlek, ellenőrizd a Wi‑Fi kapcsolatodat, majd próbáld újra."; + /* No comment provided by engineer. */ "NFiles" = "%d fájl"; diff --git a/QuickDrop/it.lproj/Localizable.strings b/QuickDrop/it.lproj/Localizable.strings index 05b6f6f..91cc21e 100644 --- a/QuickDrop/it.lproj/Localizable.strings +++ b/QuickDrop/it.lproj/Localizable.strings @@ -24,6 +24,10 @@ /* No comment provided by engineer. */ "Error.Protocol" = "Errore di comunicazione"; +"Error.ClosedByPeer" = "La connessione è stata chiusa. Se ciò accade ripetutamente, riavvia il telefono."; + +"Error.NetworkDown" = "La connessione Wi‑Fi è stata interrotta. Controlla la tua connessione Wi‑Fi e riprova."; + /* No comment provided by engineer. */ "NFiles" = "%d files"; diff --git a/QuickDrop/ja.lproj/Localizable.strings b/QuickDrop/ja.lproj/Localizable.strings index f6f1bea..8ee7015 100644 --- a/QuickDrop/ja.lproj/Localizable.strings +++ b/QuickDrop/ja.lproj/Localizable.strings @@ -24,6 +24,10 @@ /* No comment provided by engineer. */ "Error.Protocol" = "通信エラー"; +"Error.ClosedByPeer" = "接続が切断されました。これが繰り返し発生する場合は、スマートフォンを再起動してください。"; + +"Error.NetworkDown" = "Wi‑Fi 接続が中断されました。Wi‑Fi 接続を確認してから、もう一度お試しください。"; + /* No comment provided by engineer. */ "NFiles" = "%dつのファイル"; diff --git a/QuickDrop/ko.lproj/Localizable.strings b/QuickDrop/ko.lproj/Localizable.strings index 5cfa986..aa25263 100644 --- a/QuickDrop/ko.lproj/Localizable.strings +++ b/QuickDrop/ko.lproj/Localizable.strings @@ -24,6 +24,10 @@ /* No comment provided by engineer. */ "Error.Protocol" = "통신 오류"; +"Error.ClosedByPeer" = "연결이 종료되었습니다. 이러한 문제가 반복되면 휴대전화를 재시작하세요."; + +"Error.NetworkDown" = "Wi‑Fi 연결이 끊어졌습니다. Wi‑Fi 연결 상태를 확인하고 다시 시도하세요."; + /* No comment provided by engineer. */ "NFiles" = "%d개의 파일"; diff --git a/QuickDrop/nl.lproj/Localizable.strings b/QuickDrop/nl.lproj/Localizable.strings index b953608..96f15c6 100644 --- a/QuickDrop/nl.lproj/Localizable.strings +++ b/QuickDrop/nl.lproj/Localizable.strings @@ -24,6 +24,10 @@ /* No comment provided by engineer. */ "Error.Protocol" = "Communicatiefout"; +"Error.ClosedByPeer" = "De verbinding is verbroken. Als dit herhaaldelijk gebeurt, start dan je telefoon opnieuw op."; + +"Error.NetworkDown" = "De Wi‑Fi‑verbinding is onderbroken. Controleer je Wi‑Fi‑verbinding en probeer het opnieuw."; + /* No comment provided by engineer. */ "NFiles" = "%d bestanden"; diff --git a/QuickDrop/pt-BR.lproj/Localizable.strings b/QuickDrop/pt-BR.lproj/Localizable.strings index ad9defb..e208b5b 100644 --- a/QuickDrop/pt-BR.lproj/Localizable.strings +++ b/QuickDrop/pt-BR.lproj/Localizable.strings @@ -24,6 +24,10 @@ /* No comment provided by engineer. */ "Error.Protocol" = "Erro de comunicação"; +"Error.ClosedByPeer" = "A conexão foi encerrada. Se isso acontecer repetidamente, reinicie o seu celular."; + +"Error.NetworkDown" = "A ligação Wi‑Fi foi interrompida. Verifica a tua ligação Wi‑Fi e tenta novamente."; + /* No comment provided by engineer. */ "NFiles" = "%d arquivos"; diff --git a/QuickDrop/pt-PT.lproj/Localizable.strings b/QuickDrop/pt-PT.lproj/Localizable.strings index c578aec..5cc596b 100644 --- a/QuickDrop/pt-PT.lproj/Localizable.strings +++ b/QuickDrop/pt-PT.lproj/Localizable.strings @@ -24,6 +24,10 @@ /* No comment provided by engineer. */ "Error.Protocol" = "Erro de comunicação"; +"Error.ClosedByPeer" = "A ligação foi encerrada. Se isto acontecer repetidamente, reinicia o teu telemóvel."; + +"Error.NetworkDown" = "A ligação Wi‑Fi foi interrompida. Verifica a tua ligação Wi‑Fi e tenta novamente."; + /* No comment provided by engineer. */ "NFiles" = "%d ficheiros"; diff --git a/QuickDrop/ro.lproj/Localizable.strings b/QuickDrop/ro.lproj/Localizable.strings index d2c7ab0..1a10dfb 100644 --- a/QuickDrop/ro.lproj/Localizable.strings +++ b/QuickDrop/ro.lproj/Localizable.strings @@ -24,6 +24,10 @@ /* No comment provided by engineer. */ "Error.Protocol" = "Eroare de comunicare"; +"Error.ClosedByPeer" = "Conexiunea a fost închisă. Dacă se întâmplă în mod repetat, repornește telefonul."; + +"Error.NetworkDown" = "Conexiunea Wi‑Fi a fost întreruptă. Verifică conexiunea Wi‑Fi și încearcă din nou."; + /* No comment provided by engineer. */ "NFiles" = "%d fișiere"; diff --git a/QuickDrop/ru.lproj/Localizable.strings b/QuickDrop/ru.lproj/Localizable.strings index 7bbe7ee..1b9155d 100644 --- a/QuickDrop/ru.lproj/Localizable.strings +++ b/QuickDrop/ru.lproj/Localizable.strings @@ -24,6 +24,10 @@ /* No comment provided by engineer. */ "Error.Protocol" = "Ошибка протокола"; +"Error.ClosedByPeer" = "Соединение было закрыто. Если это происходит неоднократно, перезагрузите телефон."; + +"Error.NetworkDown" = "Соединение по Wi‑Fi было прервано. Пожалуйста, проверьте соединение Wi‑Fi и попробуйте снова."; + /* No comment provided by engineer. */ /*"NFiles" = "%d файлов";*/ diff --git a/QuickDrop/th.lproj/Localizable.strings b/QuickDrop/th.lproj/Localizable.strings index e4132ff..8b22a2a 100644 --- a/QuickDrop/th.lproj/Localizable.strings +++ b/QuickDrop/th.lproj/Localizable.strings @@ -24,6 +24,10 @@ /* No comment provided by engineer. */ "Error.Protocol" = "การสื่อสารผิดพลาด"; +"Error.ClosedByPeer" = "การเชื่อมต่อถูกปิด หากเกิดขึ้นซ้ำหลายครั้ง โปรดรีสตาร์ทโทรศัพท์ของคุณ"; + +"Error.NetworkDown" = "การเชื่อมต่อ Wi‑Fi ถูกขัดจังหวะ โปรดตรวจสอบการเชื่อมต่อ Wi‑Fi ของคุณแล้วลองอีกครั้ง"; + /* No comment provided by engineer. */ "NFiles" = "%d ไฟล์"; diff --git a/QuickDrop/uk.lproj/Localizable.strings b/QuickDrop/uk.lproj/Localizable.strings index 13627e6..0f2b20c 100644 --- a/QuickDrop/uk.lproj/Localizable.strings +++ b/QuickDrop/uk.lproj/Localizable.strings @@ -24,6 +24,10 @@ /* No comment provided by engineer. */ "Error.Protocol" = "Помилка протоколу"; +"Error.ClosedByPeer" = "З'єднання було закрито. Якщо це трапляється постійно, перезавантажте телефон."; + +"Error.NetworkDown" = "З’єднання Wi‑Fi було перервано. Будь ласка, перевірте своє Wi‑Fi з’єднання та спробуйте ще раз."; + /* No comment provided by engineer. */ "NFiles" = "%d files"; diff --git a/QuickDrop/zh-Hans.lproj/Localizable.strings b/QuickDrop/zh-Hans.lproj/Localizable.strings index 391ca32..9931e77 100644 --- a/QuickDrop/zh-Hans.lproj/Localizable.strings +++ b/QuickDrop/zh-Hans.lproj/Localizable.strings @@ -24,6 +24,10 @@ /* No comment provided by engineer. */ "Error.Protocol" = "通信出错"; +"Error.ClosedByPeer" = "连接已关闭。如果这种情况反复发生,请重启手机。"; + +"Error.NetworkDown" = "Wi‑Fi 连接中断。请检查您的 Wi‑Fi 连接并重试。"; + /* No comment provided by engineer. */ "NFiles" = "%d files";