diff --git a/bitchat/ViewModels/ChatViewModel.swift b/bitchat/ViewModels/ChatViewModel.swift index 32339741..77fee2fb 100644 --- a/bitchat/ViewModels/ChatViewModel.swift +++ b/bitchat/ViewModels/ChatViewModel.swift @@ -1331,6 +1331,15 @@ final class ChatViewModel: ObservableObject, BitchatDelegate, TransportEventDele // posts are signed with our identity key and persist for days. BoardStore.shared.wipe() + // Drop any share-extension handoff staged in the app group. The normal + // panic path clears this through AppChromeModel.onPanicWipe, but the + // crash-recovery replay calls this method directly and would otherwise + // let a staged envelope survive the wipe. Clearing here is idempotent + // (it only removes the app-group key), so the double-clear is harmless. + if let sharedDefaults = UserDefaults(suiteName: BitchatApp.groupID) { + SharedContentStore(defaults: sharedDefaults).discardAll() + } + // Identity manager has cleared persisted identity data above // Clear autocomplete state diff --git a/bitchatShareExtension/Localization/Localizable.xcstrings b/bitchatShareExtension/Localization/Localizable.xcstrings index 36fb811c..23c8fab2 100644 --- a/bitchatShareExtension/Localization/Localizable.xcstrings +++ b/bitchatShareExtension/Localization/Localizable.xcstrings @@ -202,207 +202,6 @@ } } }, - "share.status.failed_to_encode" : { - "extractionState" : "stale", - "localizations" : { - "ar" : { - "stringUnit" : { - "state" : "translated", - "value" : "تعذر ترميز الرابط", - "comment" : "Shown when the share payload cannot be encoded" - } - }, - "bn" : { - "stringUnit" : { - "state" : "needs_review", - "value" : "লিঙ্ক এনকোড করা যায়নি" - } - }, - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "link konnte nicht codiert werden", - "comment" : "Shown when the share payload cannot be encoded" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "failed to encode link", - "comment" : "Shown when the share payload cannot be encoded" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "no se pudo codificar el enlace", - "comment" : "Shown when the share payload cannot be encoded" - } - }, - "fa" : { - "stringUnit" : { - "state" : "translated", - "value" : "کدگذاری پیوند ناموفق بود" - } - }, - "fil" : { - "stringUnit" : { - "state" : "needs_review", - "value" : "hindi ma-encode ang link" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "échec de l'encodage du lien", - "comment" : "Shown when the share payload cannot be encoded" - } - }, - "he" : { - "stringUnit" : { - "state" : "translated", - "value" : "לא ניתן לקודד את הקישור", - "comment" : "Shown when the share payload cannot be encoded" - } - }, - "hi" : { - "stringUnit" : { - "state" : "needs_review", - "value" : "लिंक एन्कोड नहीं हो सका" - } - }, - "id" : { - "stringUnit" : { - "state" : "translated", - "value" : "gagal mengodekan tautan", - "comment" : "Shown when the share payload cannot be encoded" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "impossibile codificare il link", - "comment" : "Shown when the share payload cannot be encoded" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "リンクのエンコードに失敗しました", - "comment" : "Shown when the share payload cannot be encoded" - } - }, - "ko" : { - "stringUnit" : { - "state" : "translated", - "value" : "링크를 인코딩하는 데 실패했습니다", - "comment" : "Shown when the share payload cannot be encoded" - } - }, - "ms" : { - "stringUnit" : { - "state" : "needs_review", - "value" : "gagal mengekod pautan" - } - }, - "ne" : { - "stringUnit" : { - "state" : "translated", - "value" : "लिङ्क सङ्केत गर्न सकेन", - "comment" : "Shown when the share payload cannot be encoded" - } - }, - "nl" : { - "stringUnit" : { - "state" : "needs_review", - "value" : "link coderen mislukt" - } - }, - "pl" : { - "stringUnit" : { - "state" : "needs_review", - "value" : "nie udało się zakodować linku" - } - }, - "pt" : { - "stringUnit" : { - "state" : "needs_review", - "value" : "falha ao codificar a ligação" - } - }, - "pt-BR" : { - "stringUnit" : { - "state" : "translated", - "value" : "falha ao codificar link", - "comment" : "Shown when the share payload cannot be encoded" - } - }, - "ru" : { - "stringUnit" : { - "state" : "translated", - "value" : "не удалось закодировать ссылку", - "comment" : "Shown when the share payload cannot be encoded" - } - }, - "sv" : { - "stringUnit" : { - "state" : "needs_review", - "value" : "kunde inte koda länken" - } - }, - "ta" : { - "stringUnit" : { - "state" : "needs_review", - "value" : "இணைப்பை என்கோட் செய்ய முடியவில்லை" - } - }, - "th" : { - "stringUnit" : { - "state" : "needs_review", - "value" : "เข้ารหัสลิงก์ไม่สำเร็จ" - } - }, - "tr" : { - "stringUnit" : { - "state" : "translated", - "value" : "bağlantı kodlanamadı", - "comment" : "Shown when the share payload cannot be encoded" - } - }, - "uk" : { - "stringUnit" : { - "state" : "translated", - "value" : "не вдалося закодувати посилання", - "comment" : "Shown when the share payload cannot be encoded" - } - }, - "ur" : { - "stringUnit" : { - "state" : "needs_review", - "value" : "لنک انکوڈ نہیں ہو سکا" - } - }, - "vi" : { - "stringUnit" : { - "state" : "needs_review", - "value" : "không thể mã hóa liên kết" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "无法编码链接", - "comment" : "Shown when the share payload cannot be encoded" - } - }, - "zh-Hant" : { - "stringUnit" : { - "state" : "needs_review", - "value" : "無法編碼連結" - } - } - } - }, "share.status.no_shareable_content" : { "extractionState" : "manual", "localizations" : { @@ -805,408 +604,6 @@ } } }, - "share.status.shared_link" : { - "extractionState" : "stale", - "localizations" : { - "ar" : { - "stringUnit" : { - "state" : "translated", - "value" : "✓ تم إرسال الرابط إلى bitchat", - "comment" : "Confirmation after successfully sharing a link" - } - }, - "bn" : { - "stringUnit" : { - "state" : "needs_review", - "value" : "✓ bitchat-এ লিঙ্ক শেয়ার করা হয়েছে" - } - }, - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "✓ link zu bitchat geteilt", - "comment" : "Confirmation after successfully sharing a link" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "✓ shared link to bitchat", - "comment" : "Confirmation after successfully sharing a link" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "✓ enlace compartido con bitchat", - "comment" : "Confirmation after successfully sharing a link" - } - }, - "fa" : { - "stringUnit" : { - "state" : "translated", - "value" : "✓ پیوند در bitchat به اشتراک گذاشته شد" - } - }, - "fil" : { - "stringUnit" : { - "state" : "needs_review", - "value" : "✓ naibahagi ang link sa bitchat" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "✓ lien partagé vers bitchat", - "comment" : "Confirmation after successfully sharing a link" - } - }, - "he" : { - "stringUnit" : { - "state" : "translated", - "value" : "✓ הקישור נשלח אל bitchat", - "comment" : "Confirmation after successfully sharing a link" - } - }, - "hi" : { - "stringUnit" : { - "state" : "needs_review", - "value" : "✓ bitchat पर लिंक शेयर किया गया" - } - }, - "id" : { - "stringUnit" : { - "state" : "translated", - "value" : "✓ tautan dikirim ke bitchat", - "comment" : "Confirmation after successfully sharing a link" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "✓ link inviato a bitchat", - "comment" : "Confirmation after successfully sharing a link" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "✓ bitchatにリンクを共有", - "comment" : "Confirmation after successfully sharing a link" - } - }, - "ko" : { - "stringUnit" : { - "state" : "translated", - "value" : "✓ bitchat으로 링크를 공유했습니다", - "comment" : "Confirmation after successfully sharing a link" - } - }, - "ms" : { - "stringUnit" : { - "state" : "needs_review", - "value" : "✓ pautan dikongsi ke bitchat" - } - }, - "ne" : { - "stringUnit" : { - "state" : "translated", - "value" : "✓ bitchat मा लिङ्क पठाइयो", - "comment" : "Confirmation after successfully sharing a link" - } - }, - "nl" : { - "stringUnit" : { - "state" : "needs_review", - "value" : "✓ link gedeeld met bitchat" - } - }, - "pl" : { - "stringUnit" : { - "state" : "needs_review", - "value" : "✓ udostępniono link w bitchat" - } - }, - "pt" : { - "stringUnit" : { - "state" : "needs_review", - "value" : "✓ ligação enviada para o bitchat" - } - }, - "pt-BR" : { - "stringUnit" : { - "state" : "translated", - "value" : "✓ link enviado para bitchat", - "comment" : "Confirmation after successfully sharing a link" - } - }, - "ru" : { - "stringUnit" : { - "state" : "translated", - "value" : "✓ ссылка отправлена в bitchat", - "comment" : "Confirmation after successfully sharing a link" - } - }, - "sv" : { - "stringUnit" : { - "state" : "needs_review", - "value" : "✓ länk delad till bitchat" - } - }, - "ta" : { - "stringUnit" : { - "state" : "needs_review", - "value" : "✓ bitchat-க்கு இணைப்பு பகிரப்பட்டது" - } - }, - "th" : { - "stringUnit" : { - "state" : "needs_review", - "value" : "✓ แชร์ลิงก์ไปยัง bitchat แล้ว" - } - }, - "tr" : { - "stringUnit" : { - "state" : "translated", - "value" : "✓ bitchat'e bağlantı paylaşıldı", - "comment" : "Confirmation after successfully sharing a link" - } - }, - "uk" : { - "stringUnit" : { - "state" : "translated", - "value" : "✓ посилання надіслано в bitchat", - "comment" : "Confirmation after successfully sharing a link" - } - }, - "ur" : { - "stringUnit" : { - "state" : "needs_review", - "value" : "✓ bitchat پر لنک شیئر کر دیا گیا" - } - }, - "vi" : { - "stringUnit" : { - "state" : "needs_review", - "value" : "✓ đã chia sẻ liên kết tới bitchat" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "✓ 已将链接分享至 bitchat", - "comment" : "Confirmation after successfully sharing a link" - } - }, - "zh-Hant" : { - "stringUnit" : { - "state" : "needs_review", - "value" : "✓ 已將連結分享至 bitchat" - } - } - } - }, - "share.status.shared_text" : { - "extractionState" : "stale", - "localizations" : { - "ar" : { - "stringUnit" : { - "state" : "translated", - "value" : "✓ تم إرسال النص إلى bitchat", - "comment" : "Confirmation after successfully sharing text" - } - }, - "bn" : { - "stringUnit" : { - "state" : "needs_review", - "value" : "✓ bitchat-এ টেক্সট শেয়ার করা হয়েছে" - } - }, - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "✓ text zu bitchat geteilt", - "comment" : "Confirmation after successfully sharing text" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "✓ shared text to bitchat", - "comment" : "Confirmation after successfully sharing text" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "✓ texto compartido con bitchat", - "comment" : "Confirmation after successfully sharing text" - } - }, - "fa" : { - "stringUnit" : { - "state" : "translated", - "value" : "✓ متن در bitchat به اشتراک گذاشته شد" - } - }, - "fil" : { - "stringUnit" : { - "state" : "needs_review", - "value" : "✓ naibahagi ang teksto sa bitchat" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "✓ texte partagé vers bitchat", - "comment" : "Confirmation after successfully sharing text" - } - }, - "he" : { - "stringUnit" : { - "state" : "translated", - "value" : "✓ הטקסט נשלח אל bitchat", - "comment" : "Confirmation after successfully sharing text" - } - }, - "hi" : { - "stringUnit" : { - "state" : "needs_review", - "value" : "✓ bitchat पर टेक्स्ट शेयर किया गया" - } - }, - "id" : { - "stringUnit" : { - "state" : "translated", - "value" : "✓ teks dikirim ke bitchat", - "comment" : "Confirmation after successfully sharing text" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "✓ testo inviato a bitchat", - "comment" : "Confirmation after successfully sharing text" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "✓ bitchatにテキストを共有", - "comment" : "Confirmation after successfully sharing text" - } - }, - "ko" : { - "stringUnit" : { - "state" : "translated", - "value" : "✓ bitchat으로 텍스트를 공유했습니다", - "comment" : "Confirmation after successfully sharing text" - } - }, - "ms" : { - "stringUnit" : { - "state" : "needs_review", - "value" : "✓ teks dikongsi ke bitchat" - } - }, - "ne" : { - "stringUnit" : { - "state" : "translated", - "value" : "✓ bitchat मा पाठ पठाइयो", - "comment" : "Confirmation after successfully sharing text" - } - }, - "nl" : { - "stringUnit" : { - "state" : "needs_review", - "value" : "✓ tekst gedeeld met bitchat" - } - }, - "pl" : { - "stringUnit" : { - "state" : "needs_review", - "value" : "✓ udostępniono tekst w bitchat" - } - }, - "pt" : { - "stringUnit" : { - "state" : "needs_review", - "value" : "✓ texto enviado para o bitchat" - } - }, - "pt-BR" : { - "stringUnit" : { - "state" : "translated", - "value" : "✓ texto enviado para bitchat", - "comment" : "Confirmation after successfully sharing text" - } - }, - "ru" : { - "stringUnit" : { - "state" : "translated", - "value" : "✓ текст отправлен в bitchat", - "comment" : "Confirmation after successfully sharing text" - } - }, - "sv" : { - "stringUnit" : { - "state" : "needs_review", - "value" : "✓ text delad till bitchat" - } - }, - "ta" : { - "stringUnit" : { - "state" : "needs_review", - "value" : "✓ bitchat-க்கு உரை பகிரப்பட்டது" - } - }, - "th" : { - "stringUnit" : { - "state" : "needs_review", - "value" : "✓ แชร์ข้อความไปยัง bitchat แล้ว" - } - }, - "tr" : { - "stringUnit" : { - "state" : "translated", - "value" : "✓ bitchat'e metin paylaşıldı", - "comment" : "Confirmation after successfully sharing text" - } - }, - "uk" : { - "stringUnit" : { - "state" : "translated", - "value" : "✓ текст надіслано в bitchat", - "comment" : "Confirmation after successfully sharing text" - } - }, - "ur" : { - "stringUnit" : { - "state" : "needs_review", - "value" : "✓ bitchat پر متن شیئر کر دیا گیا" - } - }, - "vi" : { - "stringUnit" : { - "state" : "needs_review", - "value" : "✓ đã chia sẻ văn bản tới bitchat" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "✓ 已将文本分享至 bitchat", - "comment" : "Confirmation after successfully sharing text" - } - }, - "zh-Hant" : { - "stringUnit" : { - "state" : "needs_review", - "value" : "✓ 已將文字分享至 bitchat" - } - } - } - }, "share.status.failed_to_save" : { "comment" : "Shown when content cannot be staged for the main app", "extractionState" : "manual",