From 90dab190f3f6afd14e708253bb91fcda79fb38fa Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Mon, 12 Sep 2016 14:24:21 -0400 Subject: [PATCH 1/8] Update SSK to send useragent upon provisioning We do this to coordinate a theme choice on the desktop // FREEBIE --- Podfile | 3 ++- Podfile.lock | 8 ++++---- Signal/Signal-Info.plist | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/Podfile b/Podfile index 9928bc2de..a5357a9cc 100644 --- a/Podfile +++ b/Podfile @@ -3,7 +3,8 @@ source 'https://github.com/CocoaPods/Specs.git' target 'Signal' do pod 'SocketRocket', :git => 'https://github.com/facebook/SocketRocket.git' - pod 'SignalServiceKit', :git => 'https://github.com/WhisperSystems/SignalServiceKit.git', branch: 'dt' + pod 'SignalServiceKit', git: 'https://github.com/WhisperSystems/SignalServiceKit.git', branch: 'desktop-integration' + #pod 'SignalServiceKit', path: '../SignalServiceKit' pod 'OpenSSL', '~> 1.0.208' pod 'PastelogKit', '~> 1.3' pod 'FFCircularProgressView', '~> 0.5' diff --git a/Podfile.lock b/Podfile.lock index d2d881cac..497660988 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -119,19 +119,19 @@ DEPENDENCIES: - OpenSSL (~> 1.0.208) - PastelogKit (~> 1.3) - SCWaveformView (~> 1.0) - - SignalServiceKit (from `https://github.com/WhisperSystems/SignalServiceKit.git`, branch `dt`) + - SignalServiceKit (from `https://github.com/WhisperSystems/SignalServiceKit.git`, branch `desktop-integration`) - SocketRocket (from `https://github.com/facebook/SocketRocket.git`) EXTERNAL SOURCES: SignalServiceKit: - :branch: dt + :branch: desktop-integration :git: https://github.com/WhisperSystems/SignalServiceKit.git SocketRocket: :git: https://github.com/facebook/SocketRocket.git CHECKOUT OPTIONS: SignalServiceKit: - :commit: 0933b921289ded4bb0761ce4176a2004aeab4dd5 + :commit: eb96f846a4bb95e57da4ea946f6629b74fc9b423 :git: https://github.com/WhisperSystems/SignalServiceKit.git SocketRocket: :commit: 8096fef47d582bff8ae3758c9ae7af1d55ea53d6 @@ -162,6 +162,6 @@ SPEC CHECKSUMS: UnionFind: c33be5adb12983981d6e827ea94fc7f9e370f52d YapDatabase: b1e43555a34a5298e23a045be96817a5ef0da58f -PODFILE CHECKSUM: bcac03a0ce180ba50c3467068062f8e55e11e778 +PODFILE CHECKSUM: 430c423130f22d8319fc2a420b55a4a3c7b39c9a COCOAPODS: 1.0.1 diff --git a/Signal/Signal-Info.plist b/Signal/Signal-Info.plist index d7c26624b..4a7bd7fed 100644 --- a/Signal/Signal-Info.plist +++ b/Signal/Signal-Info.plist @@ -38,7 +38,7 @@ CFBundleVersion - 2.5.0.7 + 2.5.0.8 ITSAppUsesNonExemptEncryption LOGS_EMAIL From 0a640227484d5c51adb2bea82f8f727dd114383e Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Mon, 12 Sep 2016 16:45:43 -0400 Subject: [PATCH 2/8] Must specify team for XCode 8 build // FREEBIE --- Signal.xcodeproj/project.pbxproj | 3 +++ Signal/Signal-Info.plist | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Signal.xcodeproj/project.pbxproj b/Signal.xcodeproj/project.pbxproj index 213e8e61e..fecf47dd2 100644 --- a/Signal.xcodeproj/project.pbxproj +++ b/Signal.xcodeproj/project.pbxproj @@ -2367,6 +2367,7 @@ ORGANIZATIONNAME = "Open Whisper Systems"; TargetAttributes = { D221A088169C9E5E00537ABF = { + DevelopmentTeam = U68MSDN6DR; SystemCapabilities = { com.apple.DataProtection = { enabled = 1; @@ -3211,6 +3212,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = U68MSDN6DR; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "\"$(SRCROOT)\"", @@ -3264,6 +3266,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = U68MSDN6DR; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "\"$(SRCROOT)\"", diff --git a/Signal/Signal-Info.plist b/Signal/Signal-Info.plist index 4a7bd7fed..0ed8f9f1d 100644 --- a/Signal/Signal-Info.plist +++ b/Signal/Signal-Info.plist @@ -38,7 +38,7 @@ CFBundleVersion - 2.5.0.8 + 2.5.0.9 ITSAppUsesNonExemptEncryption LOGS_EMAIL From d8be0b5d225d9c0ce27713b81a5145ec29c2bd57 Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Mon, 12 Sep 2016 16:54:26 -0400 Subject: [PATCH 3/8] New translations // FREEBIE --- Signal/Signal-Info.plist | 2 +- .../translations/ar.lproj/Localizable.strings | Bin 35828 -> 35826 bytes .../az_AZ.lproj/Localizable.strings | Bin 36140 -> 36138 bytes .../translations/bg.lproj/Localizable.strings | Bin 38092 -> 38326 bytes Signal/translations/bin/genstrings-for-file | 27 ++++++++++++++++++ .../translations/bs.lproj/Localizable.strings | Bin 37290 -> 37288 bytes .../translations/ca.lproj/Localizable.strings | Bin 37750 -> 37748 bytes .../translations/cs.lproj/Localizable.strings | Bin 35884 -> 35882 bytes .../translations/da.lproj/Localizable.strings | Bin 37076 -> 37074 bytes .../translations/de.lproj/Localizable.strings | Bin 39688 -> 40054 bytes .../el_GR.lproj/Localizable.strings | Bin 39068 -> 39066 bytes .../translations/es.lproj/Localizable.strings | Bin 38372 -> 38642 bytes .../translations/fa.lproj/Localizable.strings | Bin 38776 -> 38822 bytes .../translations/fi.lproj/Localizable.strings | Bin 38432 -> 38640 bytes .../fil.lproj/Localizable.strings | Bin 36184 -> 36182 bytes .../translations/fr.lproj/Localizable.strings | Bin 38726 -> 38724 bytes .../translations/gl.lproj/Localizable.strings | Bin 37650 -> 37648 bytes .../translations/he.lproj/Localizable.strings | Bin 33298 -> 33296 bytes .../translations/hr.lproj/Localizable.strings | Bin 36234 -> 36232 bytes .../translations/hu.lproj/Localizable.strings | Bin 38348 -> 38346 bytes .../translations/id.lproj/Localizable.strings | Bin 37498 -> 37534 bytes .../it_IT.lproj/Localizable.strings | Bin 38236 -> 38524 bytes .../ja_JP.lproj/Localizable.strings | Bin 28708 -> 28214 bytes .../ko_KR.lproj/Localizable.strings | Bin 30940 -> 30938 bytes .../translations/lv.lproj/Localizable.strings | Bin 37828 -> 37826 bytes .../translations/mk.lproj/Localizable.strings | Bin 38236 -> 38386 bytes .../nb_NO.lproj/Localizable.strings | Bin 36480 -> 36716 bytes .../translations/nl.lproj/Localizable.strings | Bin 37894 -> 37892 bytes .../translations/pl.lproj/Localizable.strings | Bin 37578 -> 37576 bytes .../pt_BR.lproj/Localizable.strings | Bin 38068 -> 38066 bytes .../pt_PT.lproj/Localizable.strings | Bin 36940 -> 36938 bytes .../translations/ro.lproj/Localizable.strings | Bin 38316 -> 38618 bytes .../translations/ru.lproj/Localizable.strings | Bin 38020 -> 38208 bytes .../translations/sl.lproj/Localizable.strings | Bin 37342 -> 37608 bytes .../translations/sn.lproj/Localizable.strings | Bin 38496 -> 38494 bytes .../translations/sq.lproj/Localizable.strings | Bin 37696 -> 37820 bytes .../sv_SE.lproj/Localizable.strings | Bin 36748 -> 36868 bytes .../th_TH.lproj/Localizable.strings | Bin 35966 -> 35964 bytes .../tr_TR.lproj/Localizable.strings | Bin 36564 -> 36562 bytes .../zh_CN.lproj/Localizable.strings | Bin 26980 -> 26978 bytes 40 files changed, 28 insertions(+), 1 deletion(-) create mode 100755 Signal/translations/bin/genstrings-for-file diff --git a/Signal/Signal-Info.plist b/Signal/Signal-Info.plist index 0ed8f9f1d..cb6bafccb 100644 --- a/Signal/Signal-Info.plist +++ b/Signal/Signal-Info.plist @@ -38,7 +38,7 @@ CFBundleVersion - 2.5.0.9 + 2.5.0.10 ITSAppUsesNonExemptEncryption LOGS_EMAIL diff --git a/Signal/translations/ar.lproj/Localizable.strings b/Signal/translations/ar.lproj/Localizable.strings index 9224878ac6bf1b8c9d7249e62d03bd715aab26a4..3b38e586e074c9ec99c58b8443b1f0c724c0876a 100644 GIT binary patch delta 65 zcmew|o$1qbrVWQ$*!>v%7#taVCmR|HPyUn1#T&|y2ZV_XxeTccDU<&<8gJHU8S)tN8OnjA0)q=fDnl7VCPOliRs!;Efmi{^3I)o-)lL52 aXuMgim4lf(1*j|sh)Wn!H(Pe>WCj5LWEOh> diff --git a/Signal/translations/az_AZ.lproj/Localizable.strings b/Signal/translations/az_AZ.lproj/Localizable.strings index 9432c06472c2234ccd72586a9fb2544d8f50e71a..108982f7f464631593071fbeb3c1902074958ea7 100644 GIT binary patch delta 81 zcmZ28i)qy?rVYPZ4gDDW7#taV8C)4$7~+B0l_8A5lffBCD={cA*aEQp Qvu2)b;V-edu5%4D0P8;!3IG5A diff --git a/Signal/translations/bg.lproj/Localizable.strings b/Signal/translations/bg.lproj/Localizable.strings index 62fbf415c734f3004d230654f052675c0ddc5924..cdbe227f116f6059c96f76ee6d9f6657a3023495 100644 GIT binary patch delta 982 zcma)5zfV(96h7b$A&;h3N+hk8-YUdEs(H4y6xveX0|ZQHfvEAvZEG7;N{22}=n&@}#ZT$fZ4llXyy>q_rJKy>4?wi*7R_k^-&AVMr z#8pL=Q<}~yPx$l;Vy4SZyi&Z6?~IN+|J_i(i_0a4MoKg@->pIL$AY9y{`J z7zKlh3(KGQZ9K@^f%fww>SCj|f_kCK0HKJJraUl((lw7JkGF2e`O3pOWVQEZji^|I z=LmVi9$k6Gf!Sb4WX;kXX^P_WCB=IyJE<)QY)HHf4gE&xiYyV7HYM7}7U`ra+Wa6L3cClRhAF z^1P)tiWiDn-mDQtf;oIcC)3g8*kP~@xZR|PhJ}H@y}{Ex2-?xC{vj{nx=6Y!q)wNe3!j&@|MG6Pha!Ejg!a!=0b3Vfs-41It~U8-eiyrxd@tM zTfW(symNGOm1nN2KvSq(Fn+iBT<%+&y>GQS?rf3l_6;?XVe>nTew&FBPWDEjgQxGD Y>aZczG^kvDaUv45DZ4;tC{GUk0`=gsDF6Tf delta 977 zcmZ`&OG{K?7=A|y)5L{&LB#kPTuHdll}HfY79vr0AzXF5Fb&Nd#dBuFl?%)3I6A)l zgb>P&Fwi1mpwMVn~Z^L$^YbByG0Zr^+Pp7(j4@7;0T=QnjHcL%$tBrCo= zmj#&@BV%|Mu`-8upsC63YI*S2y~b($hO#WH`fM z44(X6LX7#o8IG_#xQizr}n2I)zqj3jxlwv?Wv(xfntiKs=0+sz%?DUF>>5BFY= zP2sfnRP`I@kWM8QIAKn!(<* z49O%CgD(=F0ceVIxrmO>MVm!oXxc11!C@0DU%>(_`t#uA&I*{N#0B*K*B10sOjfMM z1)rT)zI9C5CIs%B;kMM%!>wxx3iNwrRBQUUITDTstlImkH8m8woy-ueb3F~m-RNze cE{f;D7w%|+6FnQ~>To8Gi0+3v!_p+b0c6PALI3~& diff --git a/Signal/translations/bin/genstrings-for-file b/Signal/translations/bin/genstrings-for-file new file mode 100755 index 000000000..6f73fda61 --- /dev/null +++ b/Signal/translations/bin/genstrings-for-file @@ -0,0 +1,27 @@ +#!/usr/bin/env bash + +set -x + +function usage() { +cat < + +e.g. + + $0 path/to/my/ClassName.m +EOS +} + +TARGET=$1 +if [[ -z $TARGET ]] +then + echo "Can't proceed without target" + usage + exit 1 +fi + +OUTPUT_DIR=new_strings +mkdir -p "${OUTPUT_DIR}" +genstrings -o "${OUTPUT_DIR}" "${TARGET}" diff --git a/Signal/translations/bs.lproj/Localizable.strings b/Signal/translations/bs.lproj/Localizable.strings index 39f6423c29bdafc0c6049a6a3d5bcc22326e55d4..454a76ee725ee250c2815c52e87ddbd6ec47b48c 100644 GIT binary patch delta 81 zcmZ3rm}$jgrVSNchJFlw42}%G46Y0=4Dmqh$`Hoj$>0p6l^7HlY=KybA(SBx2oo7{ d8B!TiHm~loX67yh3gj?k0?F*nAA5H)0|5KM6M6su delta 83 zcmZ3nm}%8wrVSNc#(50c40#Os4CO#lfx(3#m7$CwlOY*MD*^eoK&${{g#u;a>NcG>;u40`&F_16G6Mi)brkCW diff --git a/Signal/translations/ca.lproj/Localizable.strings b/Signal/translations/ca.lproj/Localizable.strings index 3939be02ce727530747643964c6e219757205d3e..5a8fd86b41685c72a529859288e4b9d72cc0e767 100644 GIT binary patch delta 85 zcmeyijOoiVrVTDVhJFlw42}%G46Y0=4Dmqh$`Hoj$>0p6l^7HlY=KybA(SBx2oo7{ h8B!TiCO38(Z(h~I!OUF>6wG1B1d`dC_xA5(1^{=p6;c2I delta 87 zcmeyejOp7lrVTDV#(50c40#Os4CO#lfx(3#m7$CwlOY*MD*^eoK&${{g#u;a>LxdK a8gE|F!@8S)tN8OnjA0)q=fDnl7VCPOliRs!;Efmi{^3I)o-)os>p QwPv0?t(9+cNyj#30PW=yjQ{`u diff --git a/Signal/translations/da.lproj/Localizable.strings b/Signal/translations/da.lproj/Localizable.strings index dca47970aaf74dbba24261cd142f061b5e9c1f48..1488075b08fe1c64e398eab768e6e305e3ad51bb 100644 GIT binary patch delta 65 zcmcbzkm=GwrVWca+5H&&7#taVCm%Evp8O$)i#L=Z4+s+(av4$?QYPPTGv3V6#lg&7 S3KYy?$OMwvo27eqG6MkB*%XZc delta 87 zcmcb#km<@orVWcajq@0?8S)tN8OnjA0)q=fDnl7VCPOliRs!;Efmi{^3I)o-)lI(N aX1tlLi-Vav1*j|sh)Wn!H%s>JWCj4@)D`0Z diff --git a/Signal/translations/de.lproj/Localizable.strings b/Signal/translations/de.lproj/Localizable.strings index 17c391026b70f1d462f4ed1608da6b90cc4dbd6b..0d3625751c5ab1a6fa512fd74a46324da49a48b7 100644 GIT binary patch delta 1648 zcma)6OGs2v82(2s%_lMq)2P$j$y}vI6jAgX^U+f)u`GzNbev(vtBqF&+O#MvOC$R$ zdr^y^7PUxjR1g&HA`*)BR#c0ijSwy(sP8{#9CI2WhB^1#bN=V|eg8f4IAiK*#>47t zZ-Dx!mqOG=Cbd%sMe#J$E=C5wTj(z8#Az=bg-r*A$>Q+^aiqJnU*!~L zIRn&#UlrBED}<;W6tjQlAIo-QgBMA%4XY$RqAueL4`q4w$rjmkHDVG{<}v=%?e@#5 zK^3$aYf4qh&$9iV&UtzDaF6Pe?a{?2-98;P0`Fg_DM%Kq4Qfz6U(iutjo042`cy{I zexwV-vqxPu+n?9?^IYjO`D#yRZb&URttnL_Sv^t%P!-q2+K067qbuyCTR&#bm0{=6 ze1&h6rV<2Le4=$ZKdLCRpSP}Z%;8sXu%U24vJ$?%*2OQO7HMKK?OS#uI0UiZuptLEQmp zJfjLn7lIeJ z{~t8|k*FVDTzN}F1zGl!kpqr`W;Oc4TL*pMu^P9lPN5XTDjx+4eVWwC zH<~=oS`|EkvuW`ZTr!>po|hSpzt>wTui z{XSxewT0o84}{{CHo?lnn=fDI?SWiWm3oh6d3?ZKERo}=Rx^xDyzH=_vj!Hq6bA|t zVO?t|#=Zepfk6>W-L!(@SMGGzDg+Elg;jMA?_grWHHUwFUT_ydY>B0HZzhpT?aES> zN{8*-7It#~=xfhG;46BupeVU-Lo^E!`nl!mVDUd)^S7(l5;HkNy=4zyD|M{Yuo={x tXhp;*QcG<~pw>z;d91=&Gc&-F9%Q4Ox7~UfX#onvG!q?%(I>Zk0iB?x{oqrDXK&r z#wZy654%=WiethqDyiqRTkCW;TAgPB5fOhtFAa!@_N4rJsizgwxY8g5zgb-elMOEnjj?cPniT7Sec^-^u31#Ok_%Y3*~@A#=mL=bIg7(6kh(qDTGp zrZLX2i>`$oT3K{Dx5lJA_?V&z1|;!}gDQ^MykE;7cZIjEkGx`cm&A3Kl*jb8RL`Y!vDjo)l6u$EJVc=)f z@gf*`J_s*3p4&}=O#-tt-h&uZ!jErBWCqk~0GPbTCdvTTQuv_}xia+x1B^G-VY9+i z6n6-B%O+495Qw6KQyC>r`CJ(!Eu^)nmOX|LoD)G7?_~4<`?VpuHadOI;$;m7a4z;C zjlTpfp7B{F`Nmx2pK(y#%*_+rR&hiRDKgoxmB>1dzeJOAS8frv?tCHbn_Y2p96QX> zQgkDeF9STuGxugkJr2v&un|L+13O2u{8U;;!Bc_{R}m}C>?CIF3il2d=GG4DVkcA- zyT+G96jHGU|5~7~ADXzo=<7gC1o-SO?;U_%I@9$kqMq4O*QQljoN00XtE*LIFmJtT z)Q&Xy;C4ZlBD6H$K(U3+0>e!72x45?kA-cP{d$QrO}!1c40#(ac>P+70el!=xJV%e Q{hW4}=nZB_ZrrDT0Zq_z(*OVf diff --git a/Signal/translations/el_GR.lproj/Localizable.strings b/Signal/translations/el_GR.lproj/Localizable.strings index 6a355912de07f4a5c8732ee02a9314185f98bb0b..13843dce9872396d17938e78e626ced38e0aabc5 100644 GIT binary patch delta 81 zcmbQUk!jXOrVUvW4gDDW7#taV8C)4$7~+B0l_8A5lffBCD={cA*aEQqdeVysA_~2UGzZax2L+Gb3ZA@3?ZKP)&5ISA_TXXPn|(9$%{Sk?_w{-Ej~DH) z?)J3}$l_@`86k~J@KHt{RTSZ(fB=zX4y5MZ_kA8osH+0ctS&F2Q_Utjc0K z9-k7Dh*(Z0Wd>oWNA!gBX}h`yvS)TGJB(rU<2VK}fV2DtDfAGIa(9?@n4bf^Nl7bW zj<)x=F%tJa)qo*#7-M!^iP=<_*anqGGnjJ{+&Fua;D#ZUJc`Ix%S`} kujyvlw{vTZmy@_9D%l^i*Lf&v^&MKN_05G;@etzp4IkCz^Z)<= delta 992 zcmZ`&&r4KM82vO_lte!yB}BOmwFqK11EPqCDXrX0Keob6Wg2y69=XBz>e z?p1HxPDq`sLGE*h(S)qS8()^6wAuk$$uXQq^vp4`7|EDe?rS82FJljT z#xbKrQ&`I*$07=_b02F9$h1yCI|)!0X~5*L>EmYs$cPENCc#)Viq4)gpi3zlIC*5{ z^zX}(6U?jJ(U0rb^y}upy}B&S$RH=)MI*81)KXiSw(Gnl3kU9QMhcp~)OnRjK8!#$ zJap#xRe6NQ$YWk|RN}A+U<~7LBq2|++wz=#fBnCMyX-g4=G{-=KLN;au(bv_Jvl?!qmKVOk};g{b{rWN!i;Xkk9%7&O=SA)a(kb z*PlpI55h5>)$rzoLn80U7p|iAhU-oDKM3D-)SHC|SDSg;**4g)JtbkW$o@1Mi_zkI dE*|Ju_#t|!5JPviZgoZGJr!7zXvdITmJ@$b;AsE= diff --git a/Signal/translations/fa.lproj/Localizable.strings b/Signal/translations/fa.lproj/Localizable.strings index 6fee4f8dd7ab03fc5834c238f28670b275dfbaf0..5b38e13cbaac89a4b693155076d8bf877dad2b93 100644 GIT binary patch delta 214 zcmeydj%nF?rVUNTlWj6Yq!k!k*(}+#*fiJ-*%TPu*j(Apu<;eXCdO#^dpkf7v zl|TiPzu72kUSiYYHQC0UkH;8jA4oe`#;AP-k2+9^DNwmOnXDw z878N+ui$k7YAFVq3nGgrAM91#Y|~-IVT|eoWV4lkcG&{40)r9*ic>c)pJ2_*odPsI O2W&;^=C_k~G6Mki$2V>O diff --git a/Signal/translations/fi.lproj/Localizable.strings b/Signal/translations/fi.lproj/Localizable.strings index d4680f355f7c6b4e8cc18d3b971489c39b659708..2510fefc0c26fb8a787d79fdfe119d5838ffa23d 100644 GIT binary patch delta 1016 zcmZuw&r1|>6n}~!t&3Ugsuj{01%;^;LQp3m2?Dpxg}@HM!VWb%?vLCVVNW9EuNqwS z`3H3BVui5Bhz=gR2OWhudgx@=KJR^Z#$AywGxMFtd!P6Dem?K}=}Y(DuiXdVrZ`9q zT&j~t7A;Vo9PB)@IX`y28BQH%`S!J&e0g<{Pga8qIkJ(oL?JiUesS_;Dpy3L+*t~U zLL7Cd2Dm(yg_whPP5(Udv9D5y*pfE2wQ(KTy#52ElIai`K2}ZZTIAT>*yrPC{TH9p z9F3Dp6|4d|Jhu50Rf9t=ouJMGatTj-DDM4mIC~}rMi#nP6u$^wp5oP%qlI&Y^aj|1 zvPgC81<|lUHt!6ld0?VvSt56}laG2^&+6js;LlZTIiZb858t?6E2M)td8mC(Gi@qr zMDoi}K~yedUqb!@mSHkMH+cW!ThVLiT)kjrW9=5d3Z9O{<^n;`WWU|&@X;wM|9y#fPk`SsR%UxqR?O|vvZkNJD`%1EX~+sN<1 zpth0W@y5TtteT*s!js#FoP3vX#TGL>GMka1ZIy`G%0|Q&nT#yaphdGU|%BFV{J$!#9#oIdvGiFjNC=|togy`?%D>HjatfW%4Q!-xWg$^(8{uzCNdgGa^ z6fJ27S%tb>v^tk~lixoa=Kj4vZdCL0UaCt5{6V|+(TL#cfk-^m3S<0O6enP(&nxrk Ps}`NP9)v-mN0gxd`cnT^ delta 960 zcmZ`&O-NKx82!|hBQ8Rw2vKh$xG`%n;37m&X;CgxNNE#1N129Z-iYswgKnfnrlF4d z>ArS}8o_K87cPY$bR(|Zxrk`zE;{F4r+H1uBbl6gcWpM8+ z8*6BD;57UGX#Ss5SdA1cjto}gcJE;(F6JSs0Bi1MvCE?(BPonrPr+s^9ukqnnU5F` zs}PnhoJ}Lrvov{#^V#Q+w^WW3a^s=W;0l7I>vA5rkqTg!P%(`m6o zzb-%NbY0?@f`7D6Mk4f=##Ua`w2{dyDq`g!eg`46RT|0Z#p*qc6&L#0cptt63nH4d z9WlN5jkL>iSpVy%--=faw6eSK(UY~Kx_+pnZT*hUJ&eu&=@>AOkTlRld&Ij9qRBOB zV?S>0o1-viz1RziGz~?tzG`B-f%}p6ZtV0GKqxz##~sybAifGml_o@R>wP_o57`{V z?(|@9)y~bOzp8(r1Nv)ow4tnBJgHJ@D_+x6mN}(Nuukrj7%!r*`JmV?4@z(^5tQiD Q#NFFYw$}uUElXnZ8)4Sj0RR91 diff --git a/Signal/translations/fil.lproj/Localizable.strings b/Signal/translations/fil.lproj/Localizable.strings index add6ca01a906ca35445f0aab7f9b5cbd3a44a6bf..e607a58f09283da7f3c98ab39cf7eac060ad041c 100644 GIT binary patch delta 85 zcmcaHi|N`drVVOshJFlw42}%G46Y0=4Dmqh$`Hoj$>0p6l^7HlY=KybA(SBx2oo7{ h8B!TiCJSbXZq92{W9BXe3g$3m0?F*n^E-Dk0{}fY6XgH^ delta 79 zcmcaMi|NKJrVVOs#(50c40#Os4CO#lfx(3#m7$CwlOY*MD*^eoK&${{g#u;a>Lv?j UiEhqmQ)8Z7;mNmoLFYDR02#X!IsgCw diff --git a/Signal/translations/fr.lproj/Localizable.strings b/Signal/translations/fr.lproj/Localizable.strings index 79a4972ce49a1ae68579e26c4dabf9415afaed2a..c04a9734df0b192dd57eb1b674d221fa2aef753c 100644 GIT binary patch delta 65 zcmX@Mj_JrcrVSz!xcwOX7#taV8C)4$ChskjV1 R0tIszGJ$0F=HAIWnE`$r6GH$1 delta 87 zcmX@Ij_KGsrVSz!jPn?>8S)tN8OnjA0)q=fDnl7VCPOliRs!;Efmi{^3I)o-)lClU aHQrn?frFVl1*j|sh)Wn!H+N6o$qWFtP8Gud diff --git a/Signal/translations/gl.lproj/Localizable.strings b/Signal/translations/gl.lproj/Localizable.strings index 9e569f02f286f03177578aeb1b5d450cc9c2e9e8..9df5bab9a89cd533e50f1be02525cc3e0464523f 100644 GIT binary patch delta 71 zcmbQVjA_C$rVS6e+5H&&7#taVCkGk{iz_iGFxUdI5<@6M9uOunG>;u40`&Efq!nE_{!6aD}I diff --git a/Signal/translations/he.lproj/Localizable.strings b/Signal/translations/he.lproj/Localizable.strings index eb549670e0700db7d3ee6ccaa51af8713d85a5fd..20d84be1d07069e4ad3ba80ace4bb6550163c3ca 100644 GIT binary patch delta 85 zcmbQ#!Ze|UX~TmmLq7&T21f>823H0bhIk-$We8*NWN-%3N(>4Nwm_`J5Xz7TgozBf g45TVC5 diff --git a/Signal/translations/hr.lproj/Localizable.strings b/Signal/translations/hr.lproj/Localizable.strings index 618b224ccdb71225bef71be8a3ef5c04b6e806be..223fdd70fac6d09469be624aa6f5d50f01c952cf 100644 GIT binary patch delta 81 zcmeC0&D1fQX+uPtp&x@EgCm14gDZmzLp%_>GK4XBGB^WiB?bisTOd|q2xZ6v!bFB# chE#@>&E0L*%-p3wfgFZRAep`SV&_g~0M!{1z5oCK delta 75 zcmeB}&D1rUX+uPtaUMf9LmopuLphLCU~pkbWhi6FWJm_mN8S)tN8OnjA0)q=fDnl7VCPOliRs!;Efmi{^3I)o-)oniA QXU#m>teV-V|8Z8 zXGofSFj9E4RZ|tCp*v7bIuPdo)#oy#0&xM5EMiCkiWM=GGGqe9K_bOKKG@vJZ=3f{ z*5lz*RA9&kishlp1Nl(BlaIG77Y+cLkjIb$R0%REkRgaccXMs)X;yAO20sQz244nO p2A9dTd6Jx=KxKJAWx10TjfFRNb?Y#5mjVTH!1}W{AMD%73;-MJJbwTH delta 198 zcmbQYloNmY)L~k7L@LyVjxyU4Dq>W6d4*FMv|H7%%q^Zg7I0k z^@^Yi!KES?2)dHEai<$yNEd?b!rvf5p`QCCVk~weL%!UZ?>^2w=X`w;S$-L5Y#-C| zoGqo+g=F)moqf&XSgRPb$s?a!nkJJEU+d?+^;w=9-Nv8m?|JL4C~r(}-ffbF$3~V< z4w*PFl0g+ja@rJ7sNyod+x)DQ*l*y*94yOMtJ;Iiz_q30|6?1T2$2z zP77})>SZ#zu$xZwNN@RG0|y>DXV}~q*D^fc8|MQ@H^e1hraM3;__4R#>4riTs$C4+ zx>N#R{vlOLYpq1k= delta 955 zcmZ`&T}xC^6x~jRmW8QIItg(ah)~1`1Rp}OlzEcq!`>n|>2Mv?>)^ek_z*t%F=Wk5 zdqjd>A_)2*ilN6E`UmwW^gDX$p|#HS<`t4*?z#8uz1G=#?REZqNd0=3`gDG{Z&C{4 z%bet8MvP2gUB=Ed)l;^E2nB4P&h z`c95%?D@c02ofSPh}aU4) z-g^=_amK2>5PGUVmVpQlnB>HaBu3D9z3sJhuuC2sy55Z1lWEO8tKZb!F_7%)w^5t dfg*af@KJOL(Y1Cy&76z88tXa)RjGKCIsMJ^p zk|q_yyHHA}4pMNa1OigA=-{H8gQkmv#jOrqoQfrW-;33t+xOjb@44rm^X#kg@{3Xr z1%1tkg{}LiObZXD&M{v;6lmNGrbDhLno&{9>`xx#?c|)Rgc(%9VdDg^jxX<*6PtL2 z_ptE8sAuvxn}}z4A+@$o(j-K$Y_YNPbScKSuPt|J6r%=y;sb1~RElWof({dJx^+R( z?v;~qJVXM6IMQN&dabw%x+5m)_%7zxQNrO)-uPsUDtx}+)Fo9CEg@rM(e~&;=Tzi!{J1+5wMu_~@

_L$F$Scay5gXrT)AJp^gpF>#l3NV_1xGL^T#z~kF^d}=w^~qY>-t7i z#kQ6)bBO-AmFM$IJ#wUTi-{qjbxZ_fLK@4D3r#nf{nNdZpJRa*PfeEg$hA@tyQ~G5 k`~+H!7nV=ylkeT&^G-HWmps3U|I?SoL`6y?0&n~N3%x7)nE(I) delta 1112 zcmah}&ubG=5T58k384z2iM1`yNI;52Z$d;Yv3RPYZ7m{#zGTzgO*Wg--C6=dECub-g7|%JyY5n2B>sb7*`@%Y$Z}w7G9O&)sTrNy-Mk&6nO*DK87~P4hfhIhjtDC!WahuVA8ZB0FW2sAFF1Q)LGQMs}teyO#Vz SKn`FVRR{xOth}ckVs+o_l6m+rItRz8%A) zcgbj=C~Y|R--OyaDlClf^tk;j<@*p(&e;eQ%c>FO1OYW^@SO-R}r8VF1xSi^OO;>MYb z3n~T{<&3m&ql@NH#+GH2;z(Y#lvU5%zfG62$48lLQq7YA&JZ?ER0Wos^JG%cn_8^- z;$mZhRtKVoQqrOF>JXW08{{7L({S=g^V8Y~r9g}o;OV({6Tcl5X#4IfdQuIAYY0}w z1z`vWkhG+0>$|MosZM4|=}^L@A-IN%A-n3Fzqd=yV2~Pjg1vPG&C}7P{?iubVYzuu zPo>#v3PV^*lY(l?rp>{~%2}{$q@|)|oSw=osV81Z0mMbb9G!=V&M2s8U7`QR=+$X% zu3*bNI!cOBF(rcHoEQhICvJ(G^z;5Qg*25&hKZ3gz> z#XD%Pj%H7aBHe!Ub|ul?fCp3x7+q!o*zRr)ZivNY1aFNElvh$|@wBg5oP%Pr5Pza} zq@CEUG3`CxssH~Q!>iXWO0(H{#`YA3U`Z;7LB(!iK5l*<8$qztc9VW13IH>V-QXd~ zRD#j=);f(Xgvq6+)S3@9zfoTgd%VV@YwB*NYpMfF1eQM|D@RHjAKqHIWM z$m8D-p_^a`qD6l|tCkV{15vne(K7nJdwb3##pB&~@44sacfRv>wqjp5V{c6N$-6Qy zGkASj#%jcq5RWGr$;+HfLl)}U8>!kv_r0dnkQA)?v}B<=i0dUtGWZ5iI#Js`_htXV zQCKfQq_=uZZRg^RLx(8dhkOQSewk{p z>t+tJDV$u|S@SpVPDZq!aAXdhl9Y1umh4SH;tjsEM!r#9-%+JwoINm!ne%lzuM z>f3!+q@=#K>VvN4GCLSGi9i(4Km(33JK{zz8th2@9CXRJ|M$y5=Xl8;aNY`bD2#>b z5AKi#U}ai*^!&@MBmWpW?WndU>QFakslDr;6GH%yGsMnu8eI_W)ykoU+O=UmmqR>C7fi zQJ!q_X^I?D6k<(j>nb_?@o>5}l>IcsQ(YbWy>AB>u6Oc8Wr?5mZs#ABH>1PkQIP_= zh6EB?L~stfjXh7(_-wNDNdZVjF8mgi|6GAHiI*&h=WjQjrB@SDz$)bbO^QOU&n)xG z*^c&eG)@P}=egOpy?;m9x(tQ2C02aw-F%TASnm|*GWY~+>`Zj0z+ZSv4wnj4(lt4- zq&}A$88dMJb^t_Cqb%3~FO2o<_TaZ-yi@@^RzWGU`Tkhf)*^g4_=Ks;?bXsh)ZVD< z<>%GY$Jf@op1LWzf?I^Ik6jv^=f{_lwWD+6#-Woa2y_AYsUea?8lj5-sbq8~pfl8uJp8(^J)3!-zw1adb4$I*uSmM2 z`-(l93>2ifIOue8zoUhSI-3KRP|FZaa}ZB~E0S9%<6YB`f$xt8UP~4AWSTzXQnB$~adG5rwp`BE2+Oa` F#4lhd?ri`7 delta 948 zcmZ`&K}%Fo6h6_N?yoe7`!HFG*Db zc`5TUCq^dleT|z6zM(!C%O~a0AEmxBj*--5MPI!g)EDoz`X}HNO3kjJdd;J|lj7sF zm;yzz1h|GQ1J+0EJWg|1GjIb>B1BTq{OZ2mh=)FJT-4t9>!k_;0=Ume8Ea9K_;5I@ z(jefu4Ll2XU-#l~I{p6g`Nz(#ar;V>Dx^b4C`ha=#3l zu~m?h3hn~L_}E3T+`?TQk-lZjPjj52)L;wo^CtnwEd$sR!I;$TI&P_#L0fG56evIx zytKI1aQs}?-)mDhGcM@9fPikzjC9G6Y_C7{hKne_hL+g6(}6WawoSvM*q5muCNL{jC^&z-(gsYf0O8ghsy7%EY$7xJC(N7;w21;O?^GK~I zw2js6t<5vdJ!*f+Wdh*IB){4N-m`3C*&EZj$>rQI2`81KP6>SQ;$9lNa%?z{?x*4A NGv!kXpnO~|$R8o{&)on3 diff --git a/Signal/translations/nl.lproj/Localizable.strings b/Signal/translations/nl.lproj/Localizable.strings index 032e506ef0b4709a7ce658939c9fb1add120c7e8..39ae71dffcae27f2c310ea6472cdbf162f290139 100644 GIT binary patch delta 71 zcmZo$!PK&XX~UHsc0UF`21f?p$&ALr;z|q(47Nb5#1P7m2ZV_XxeTccDU$`ej5k~L Vaxin30tIszGJ$0FX5R@rnE``u5$FH_ delta 87 zcmZo!!PK^bX~UHs<2;6JhCGIRhH@aOz~I7=%239T$&d`Bm4JL(AXWgfLV>byb(00V Zj5k~KaxinJ0F~tcaS21}X733*nE|y=6)FG# diff --git a/Signal/translations/pl.lproj/Localizable.strings b/Signal/translations/pl.lproj/Localizable.strings index 9eb9377f9f67ba0f9ec92fc6433fad1dcad8cc2c..d2ad5ed6bcd3eeb1e7f5a07245d582ed5fb592a4 100644 GIT binary patch delta 61 zcmX@Ll0p6l^7HlY=KybA(SBx2oo7{ h8B!TiChzYu-u$AMgPFS&D44^L2_&;O|DLdu831k)70>_x delta 87 zcmdnAl4;9IrVUNK#(50c40#Os4CO#lfx(3#m7$CwlOY*MD*^eoK&${{g#u;a>L%~+ aGT!{GmxGx*1*j|sh)Wn!H~*ZllNkWrT^B(B diff --git a/Signal/translations/pt_PT.lproj/Localizable.strings b/Signal/translations/pt_PT.lproj/Localizable.strings index 8e6fcbc13dcea2c1cd08274b765e0e58d85ec350..69d38547bd965917dfad7a129086dd8f67170765 100644 GIT binary patch delta 81 zcmX@Jfa%l%rVUb^hJFlw42}%G46Y0=4Dmqh$`Hoj$>0p6l^7HlY=KybA(SBx2oo7{ c8B!TiHv4v3Gjo>$1#%cNfn@gP$vr!n0qRZ?n*aa+ delta 51 zcmX@Lfa%NvrVUb^ldtLX3A-?)GL$i7G9&|OB?bisTLy*6=k-N5`*m6{Pu|waw|Pp> GHf8{>{1B}G diff --git a/Signal/translations/ro.lproj/Localizable.strings b/Signal/translations/ro.lproj/Localizable.strings index 3980271211b4ac1564c2a750de3becd3bbbbf540..cc074338807770cc485896c8ef933858c4aeb99b 100644 GIT binary patch delta 918 zcmZuwOK1~e5S~qFT8y@zbk-d{!$63Q~w7h@mZ52rEk5tR>Psn(pQhFIKdz zG`=#Wh-blrip78r1U+~X5xwf!lLxOp4&pcehBgHc`|tiU^Ur*be;+>ze0>sF=^f^0 zrN}0SOtPs+1#-yd{Hejl=&(Mf|3JV-C_`nugBstv7U!$iYhB|AR#0!Nl*4^0!68k0e_Lo+(64 ziUo2!)Nk;eMCagc>}_ORJSNs6x(Q~J@>plEyTsE+4IVfX;w3}h<0^QoIaMhl2@Ox3 z@n=Y##|IZZ?wnX7oH{$u=F{z)+s@w?Px{0<+LUPg$?ECx0Mb)ngo*>OooMcXQpt#TFUBBGOuY10LsHlqCP=5jbiDH@^EbexiWxfBz}H=C#rYGuVoVdq!3 zei})1UA+fNi7LOo{cdPf=_foz+183R$1{kFX08wrGRH(+>1`q^n#zqS+j!uKumizz_e}(>$P!RN-_YyKKEg|z}?#H?Jo^#)yZxdg86T4Ry;%Ui?FVE$f zWW`7d=L=X?aRxenGu~fWIG;Hc%7#=$U%%Zsn}Roxf_(;BYt87BciVR!hzHC15G9l% zu*y;brY9k+25)0zgGiugX7i_(>Q^;Y|9;L$Mjjz<5xI!f{jHv^v@cvw$f!dDq%~Xj z0GbZAeoQVokN#_3tgQpx$WvR@!^y6g%bo(f^Q(%lGKMme!;|kN_zb%BEf1@(`N;9W zLPeGsvWZ0{Hrq-OX}$Ks3nS7yZv0;L51fGANAgy0*fz48IXCkS5q&53_XN(r0IIcLr{Gr#$=`ZDnORp4zq6&@m& z&XP?ITN^;f%F9sp5QS93c*s@LeR0_hsVS_mA_^YMrkphj@D<%E#84 z{9=4CE?P4tysM_krJda0#Mx$d` z09W_#o_}n8Pm19@Q)L?U_{Kvvu9hI-U`I}k4R;#rXmXVAJgtX%4dqg+k3$w;A33xi u?Io#23OCk-ur{{IV(0HzWlA!7F^u_hP}TsDn}R{iwcDd-)P%~ZKJ^>y60RWt delta 1038 zcmZ`&O=}ZT6uk`vKZu)(rLj~W0XHI{5I0gv(+^!0sckKSZeAN1gUPgHrb;(vVcSS+ zjrO{5Ev0BT6@ohn{)GMne}^m2dCzf%Vj1S^-FweF_niBF9_2Q_=DzjH!?RM8P@cBt1VwXUw2ip=+*6>mfF`e*FGFtz@8RNj69HeJf~4u1&E%s zd&PvL0gGp@+PGjsb%JR}`l~Z=ZqX;`@!pkI9W;zA1H}M)*^wdyDMeW2`Ud{i(VCF} zPkyf<#{AGJvVye`H5UA0L~bG0M5T363ry~jqBIbTa9IiNx=$7)VBFNhX3|`iL04=( z1qxBcEPb^TJC!P(A&9(qGZBLY0ZOu-8Oh4u{jvL~uSg{u=!%xaxP9-j>(sdJw6b?F z$sq{w`_l2qf)-ISj@w949wK^1-oGhWdUsM_9(`uEkte9UAr-!Lyz{*^g+4hIX-?A2 z|NW(gHIO%8$JwIf8n%9xe39n(+smEzEbm#r&xdns+VAEpm zYu#9o^XXCIn5N>U4st!2(30ry{VDzO;p5<}gJLs&raTL+?!U=rRYU%#eBw1vXZJt{ s`tGFXgi?{cKQEk9Zpeedqe;IlWcKG8BI)CDVbIThVoV9PjLAj$17FbNI{*Lx diff --git a/Signal/translations/sl.lproj/Localizable.strings b/Signal/translations/sl.lproj/Localizable.strings index 63732cb0c31aebacaea4ed961cfd77c093f191d7..fc129e8c389c28519c0f9705379af266b5ca043c 100644 GIT binary patch delta 1025 zcmah|ziU%b6h5!SQW~3LG9<5U?9)=AL`4d^=+Y8{OCC{+#zlCVXMIhZ7iD7FAL7sX`8aydCE^ix2oqcZlt!PlD&` zle_s@A{J~NP@5X#?47r&UW^3d3x=nzkSTuqW#n^W`4!jgaL}ims-C7Z{BwD;i5^@q zT$%%_^bhQZyYEJvj)}6rqP@V;wi zGOjHaa=A9Oud%w4H4Y`gPS_Tx&v3w{1U9;P9&2O>WpXCG3cT1K<%}8N1G_>Tt3M9f zWYYwt=_Doj+nhOOqf_)YS*x%yyOV&!TlL>ZGfID6d8gG1wt^W|b+dR_?V#@S*8TTR z27Q)#WiHr@_rg-R%4zEiQ6oCq4bXe3>5SygKEpx|K258b)5FoIPPjd#5_$ae#vq@2 zxWO+*!aHsxo$y`@=p0@|Nxgo}Nf_xo`NV|*POW|(wn0Y(=0ID*x3JCw0v@6uqfR)fljpSfr@aq6?uE$woz7^aB@C1X~nbPV>q$*u0j!mr7UBTGDDl zn{sz9x(NlrjgTK8;zp2ydqHrgD?$7Lo-@;sS7-^DH+SaVb3e|RUweH&+I=5_!tjig zB$8*cAb}W}#&-oLMSNo&xIf(4E&O|MW)@~56)g(b(^tCH8bCgE0Eb{TTmN**o$Jp=zP5-YM&?~|i!X~~Buk62r?m>Jiq?#TSh-)u zopFV5B1N1gTnxdFy(242%g8m8Q)|iiyte%_o@=4zi5C*uSTOg(R+5!~S&R z&E5o65W#xx3Q0qbBE?<&jf~18+#cfx8C=ud#=Jp)w q^D^f=SfiIamBvI=G@l0fvJixSnPe$bxOl;<_h7m*4o2?CS@{q80p6l^7HlY=KybA(SBx2oo7{ d8B!TiHYfI5Gjo>$1#%cNfn@gP<&$3K diff --git a/Signal/translations/sq.lproj/Localizable.strings b/Signal/translations/sq.lproj/Localizable.strings index 41ca89740ff59ea7d6598099f9f70648afd63b11..0f9f10cdfbd567679c3fc72bdc2895bbe6d9b66d 100644 GIT binary patch delta 903 zcma)5&1(~J5SwBu?_wlMxd$6>S(p6Se+bxSBUe*(~WT{b{1JhP*gzBn`a@`K`h{vXCLD(D)^d{r<;gQ<9QBp ze4c*3nUFdn&;`Pvx|KM!{B`&ezLqJ%X;T1{1#E?PPLCeHOBc-^9FAhjwHL?t4is%({;Jj{?)wQcSa2K&~jOuu0Vv?65w!X zL9LQ$dpLd0TpZ>HD{qFfl%)*K&=tDOKm7P$0Vp30dYn(kIJf$H;HuJ;cy?{`LRLwo z!Fdzi<@m>tz$q5{;B|4A;lQB0$PS=pPn`|DW=#UH$~qX;`-fo+tt!^*?r#XhBDY>{ z4MjjnZ$6fD`PEJ$1I`-W>tGIn61|dx_2RYHP2R2_1 zao1h87P={9TiS|rDK6UIVd+2UIWuYV3N0a%duPu5IOpDcJnQ-Lw&%lqE}fT(1oA@9 zwwLYyjka7IKp$y27ayL0JxIf@d~_!=3N zr+EE?Yk!SZ{YB>NF>3jhBsbRctI6eH5iTMB29(-jhJN|U$}g%%BxmLS7#;QG0R*0soAL`D C_{!Y? diff --git a/Signal/translations/sv_SE.lproj/Localizable.strings b/Signal/translations/sv_SE.lproj/Localizable.strings index aa6e87c95d0f6341b96b2df05482e192bc41638a..7da747900dd928d2a1478ae5d5948230588417b8 100644 GIT binary patch delta 962 zcmaJ#ECX6Wd3UNt^c?DTO|()^FO) z1-r;XSAshwd!gte*j2$zmqOeq2rk-95IlD#Nnb@}nD?2v_uO;Oxz(3F4`21X?H^7y zNmHH_WhqAvwx$_8eai9NnN#)g;cppkB>Q-2=_F4E)gx)D&>d=083~G8!RAPYT=K9A zv_Ml`C=X!sG>e5efkTGcS3oi()5p2yU-ve;R2-042*>jF@*8g4JbdUDjnjG5C{dQz z?{6G1a^=B$etk8{pBJMkxi4Z#O~+LC@%HfVfQ<`uVKR+d%h1M^z*2XD+tj`&iP00td~pmAn7xtQ8FLrr9Q-*(DiVY4R z@(T6<&J0!L?E)uMhHFoDjO86f#kHp&g6oh{8Z%1AB( z#|yW`!);*?Fq9?0mZb!E4;b_MIyrTWv7u&apEdjPoc^wD_2*#q;dxi4u#O^X4!&>e z+xoD6deBich<|D`8d_UK^-cX#b^3o6AVro-0lQg57-X5X+=xYH0d9F;!KsW2jVxg0 zz62ZneJe~3cRpe~NE52jsYz&CUvl#UIuh2LmS6O z6uk6KBeG)siqBZ7|2D?2Ojz$lyDlIq-900zMl{Q-_q#4q)gtO*Z_o(@kVt52HLOqn ztbMr2VeoN^ERi&177;h_H0k%usD(KzFb8R#QE+ z^5nrK-7&H-h^F!sk=;4Gi%!rb>&4D+g!7mY*4ZiZ5GuH?(famC1bNx#GIDgz2KlwM zYPTfCTOTCf`zI_0xx4AGS#@$FK2ZImWK=J0&K%!+Zq3H#K-ZJj*mJN+)QvxfjY&A> ed@5|2hnaA1lybPI;5_ypg1vQ;xg@qs>6L$Q@8h5V diff --git a/Signal/translations/th_TH.lproj/Localizable.strings b/Signal/translations/th_TH.lproj/Localizable.strings index a045cf6fe70948534877d1d0bb954d7440819b35..958fe00fc5b7fa0639ac556d40a42faaef5d68dd 100644 GIT binary patch delta 67 zcmex2gXzx42}%GlLHNe#g!No7;J%9i6N9B4+s+(av4$?Qa0DOS~GK( R0tIpyGJ$0F=A#`unE_@X5%mB7 delta 61 zcmew}gX!N4rVT!=ig^s#40#Os4CO#lfx(3#m7$CwlOY*MD*^eo3<{G!>WOY{XtiLT N+~p^+`9jAUW&kx=5^?|l diff --git a/Signal/translations/tr_TR.lproj/Localizable.strings b/Signal/translations/tr_TR.lproj/Localizable.strings index 22f7cb75e2ffb57a068cc27b55890ec96ce7f722..fd8a9c6ce4e39c0124fe38939de97aa79b450e08 100644 GIT binary patch delta 65 zcmcaIm+8`6rVWeQx&0XY7#taV8C)4$CjZZpV1 R0tIszGJ$0FX6f#o%mAhc6OI4? delta 87 zcmcaKm+8t}rVWeQjq@0?8S)tN8OnjA0)q=fDnl7VCPOliRs!;Efmi{^3I)o-)lI(N aV!WBHgM*nn1*j|sh)Wn!H%oT!WCj4=G!@eT diff --git a/Signal/translations/zh_CN.lproj/Localizable.strings b/Signal/translations/zh_CN.lproj/Localizable.strings index 52e6cd3a5c6f5e2addbd4ed0ee318fc963663deb..7bd28355fe4d7a4ded8a8a49f6574847f497b890 100644 GIT binary patch delta 85 zcmaEIiSf}T#tlYEhJFlw42}%G46Y0=4Dmqh$`Hoj$>0p6l^7HlY=KybA(SBx2oo7{ h8B!TiCg;Z+Z=R9F!OUF>6wG1B1d`dCSEue|1^{YU6qEn} delta 73 zcmaEKiSfxL#tlYEig^s#40#Os4CO#lfx(3#m7$CwlOY*MD*^eo3<{GI6-6f(#T#s% Xmc+r#odT4|0pb#d)XghXcQOM2_{tOO From f7198d5eaacc41d96b97c5c2a5026ce2c7822491 Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Tue, 13 Sep 2016 11:26:28 -0400 Subject: [PATCH 4/8] Don't crash when receiving read receipts after message // FREEBIE --- Podfile.lock | 2 +- Signal/Signal-Info.plist | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Podfile.lock b/Podfile.lock index 497660988..8d33f698c 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -131,7 +131,7 @@ EXTERNAL SOURCES: CHECKOUT OPTIONS: SignalServiceKit: - :commit: eb96f846a4bb95e57da4ea946f6629b74fc9b423 + :commit: 800e2a95412045f565e7559b77b05eff5567cb95 :git: https://github.com/WhisperSystems/SignalServiceKit.git SocketRocket: :commit: 8096fef47d582bff8ae3758c9ae7af1d55ea53d6 diff --git a/Signal/Signal-Info.plist b/Signal/Signal-Info.plist index cb6bafccb..2ae2e7fb2 100644 --- a/Signal/Signal-Info.plist +++ b/Signal/Signal-Info.plist @@ -38,7 +38,7 @@ CFBundleVersion - 2.5.0.10 + 2.5.0.11 ITSAppUsesNonExemptEncryption LOGS_EMAIL From 7c6e9e07b800df182210c0c86bca343177856097 Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Wed, 14 Sep 2016 12:19:05 -0400 Subject: [PATCH 5/8] Read receipts remove lockscreen notifications No need to have a notification for a message you've already read on desktop. // FREEBIE --- Podfile | 2 +- Podfile.lock | 7 +- Signal.xcodeproj/project.pbxproj | 16 +++++ Signal/Signal-Info.plist | 2 +- Signal/src/AppDelegate.m | 31 ++++++-- .../Observers/OWSStaleNotificationObserver.h | 15 ++++ .../Observers/OWSStaleNotificationObserver.m | 71 +++++++++++++++++++ Signal/src/network/PushManager.h | 5 +- Signal/src/network/PushManager.m | 17 +++-- 9 files changed, 147 insertions(+), 19 deletions(-) create mode 100644 Signal/src/Observers/OWSStaleNotificationObserver.h create mode 100644 Signal/src/Observers/OWSStaleNotificationObserver.m diff --git a/Podfile b/Podfile index a5357a9cc..6e57ae933 100644 --- a/Podfile +++ b/Podfile @@ -3,7 +3,7 @@ source 'https://github.com/CocoaPods/Specs.git' target 'Signal' do pod 'SocketRocket', :git => 'https://github.com/facebook/SocketRocket.git' - pod 'SignalServiceKit', git: 'https://github.com/WhisperSystems/SignalServiceKit.git', branch: 'desktop-integration' + pod 'SignalServiceKit', git: 'https://github.com/WhisperSystems/SignalServiceKit.git' #pod 'SignalServiceKit', path: '../SignalServiceKit' pod 'OpenSSL', '~> 1.0.208' pod 'PastelogKit', '~> 1.3' diff --git a/Podfile.lock b/Podfile.lock index 8d33f698c..6171f4a18 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -119,19 +119,18 @@ DEPENDENCIES: - OpenSSL (~> 1.0.208) - PastelogKit (~> 1.3) - SCWaveformView (~> 1.0) - - SignalServiceKit (from `https://github.com/WhisperSystems/SignalServiceKit.git`, branch `desktop-integration`) + - SignalServiceKit (from `https://github.com/WhisperSystems/SignalServiceKit.git`) - SocketRocket (from `https://github.com/facebook/SocketRocket.git`) EXTERNAL SOURCES: SignalServiceKit: - :branch: desktop-integration :git: https://github.com/WhisperSystems/SignalServiceKit.git SocketRocket: :git: https://github.com/facebook/SocketRocket.git CHECKOUT OPTIONS: SignalServiceKit: - :commit: 800e2a95412045f565e7559b77b05eff5567cb95 + :commit: 9821e0c0d03a01f556680a6ae869b70bf5b93681 :git: https://github.com/WhisperSystems/SignalServiceKit.git SocketRocket: :commit: 8096fef47d582bff8ae3758c9ae7af1d55ea53d6 @@ -162,6 +161,6 @@ SPEC CHECKSUMS: UnionFind: c33be5adb12983981d6e827ea94fc7f9e370f52d YapDatabase: b1e43555a34a5298e23a045be96817a5ef0da58f -PODFILE CHECKSUM: 430c423130f22d8319fc2a420b55a4a3c7b39c9a +PODFILE CHECKSUM: 5dccee4c1c1ba5d4bf9575a81eeede82d1e89e8b COCOAPODS: 1.0.1 diff --git a/Signal.xcodeproj/project.pbxproj b/Signal.xcodeproj/project.pbxproj index fecf47dd2..8af79b75f 100644 --- a/Signal.xcodeproj/project.pbxproj +++ b/Signal.xcodeproj/project.pbxproj @@ -24,6 +24,8 @@ 458E383A1D6699FA0094BD24 /* OWSDeviceProvisioningURLParserTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 458E38391D6699FA0094BD24 /* OWSDeviceProvisioningURLParserTest.m */; }; 459311FC1D75C948008DD4F0 /* OWSDeviceTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 459311FB1D75C948008DD4F0 /* OWSDeviceTableViewCell.m */; }; 459C3F0D1C9B3A1B003ACF51 /* TSMessageAdapterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 459C3F0C1C9B3A1B003ACF51 /* TSMessageAdapterTest.m */; }; + 45BFFFA81D898AF0004A12A7 /* OWSStaleNotificationObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = 45BFFFA71D898AF0004A12A7 /* OWSStaleNotificationObserver.m */; }; + 45BFFFA91D898AF0004A12A7 /* OWSStaleNotificationObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = 45BFFFA71D898AF0004A12A7 /* OWSStaleNotificationObserver.m */; }; 45C681B71D305A580050903A /* OWSCall.m in Sources */ = {isa = PBXBuildFile; fileRef = 45C681B61D305A580050903A /* OWSCall.m */; }; 45C681B81D305A580050903A /* OWSCall.m in Sources */ = {isa = PBXBuildFile; fileRef = 45C681B61D305A580050903A /* OWSCall.m */; }; 45C681BC1D305C080050903A /* OWSCallCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 45C681BA1D305C080050903A /* OWSCallCollectionViewCell.m */; }; @@ -537,6 +539,8 @@ 4597E94E1D8313C100040CDE /* sq */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sq; path = translations/sq.lproj/Localizable.strings; sourceTree = ""; }; 4597E94F1D8313CB00040CDE /* bg */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = bg; path = translations/bg.lproj/Localizable.strings; sourceTree = ""; }; 459C3F0C1C9B3A1B003ACF51 /* TSMessageAdapterTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TSMessageAdapterTest.m; path = "view controllers/Signals/TSMessageAdapters/TSMessageAdapterTest.m"; sourceTree = ""; }; + 45BFFFA61D898AF0004A12A7 /* OWSStaleNotificationObserver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OWSStaleNotificationObserver.h; path = Observers/OWSStaleNotificationObserver.h; sourceTree = ""; }; + 45BFFFA71D898AF0004A12A7 /* OWSStaleNotificationObserver.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OWSStaleNotificationObserver.m; path = Observers/OWSStaleNotificationObserver.m; sourceTree = ""; }; 45C681B51D305A580050903A /* OWSCall.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OWSCall.h; sourceTree = ""; }; 45C681B61D305A580050903A /* OWSCall.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OWSCall.m; sourceTree = ""; }; 45C681B91D305C080050903A /* OWSCallCollectionViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OWSCallCollectionViewCell.h; sourceTree = ""; }; @@ -1167,6 +1171,15 @@ name = TSMessageAdapters; sourceTree = ""; }; + 45BFFFA51D898AB8004A12A7 /* Observers */ = { + isa = PBXGroup; + children = ( + 45BFFFA61D898AF0004A12A7 /* OWSStaleNotificationObserver.h */, + 45BFFFA71D898AF0004A12A7 /* OWSStaleNotificationObserver.m */, + ); + name = Observers; + sourceTree = ""; + }; 70B8009F190C529C0042E3F0 /* Products */ = { isa = PBXGroup; children = ( @@ -1218,6 +1231,7 @@ 457F3AC01D14A0F700C51351 /* Models */, 76EB052B18170B33006006FC /* Views */, 76EB04FE18170B33006006FC /* View Controllers */, + 45BFFFA51D898AB8004A12A7 /* Observers */, ); path = src; sourceTree = ""; @@ -2689,6 +2703,7 @@ E197B61918BBEC1A00F073E5 /* RemoteIOBufferListWrapper.m in Sources */, 76EB05A618170B33006006FC /* RtpPacket.m in Sources */, 76EB064218170B33006006FC /* StringUtil.m in Sources */, + 45BFFFA81D898AF0004A12A7 /* OWSStaleNotificationObserver.m in Sources */, A547DD741A70A87800103EC7 /* DJWActionSheet+OWS.m in Sources */, 45C681B71D305A580050903A /* OWSCall.m in Sources */, 76EB062618170B33006006FC /* Queue.m in Sources */, @@ -2883,6 +2898,7 @@ B660F7311C29988E00687D6E /* IpEndPoint.m in Sources */, B660F7321C29988E00687D6E /* PacketHandler.m in Sources */, B660F7331C29988E00687D6E /* RtpPacket.m in Sources */, + 45BFFFA91D898AF0004A12A7 /* OWSStaleNotificationObserver.m in Sources */, B660F7341C29988E00687D6E /* RtpSocket.m in Sources */, B660F7351C29988E00687D6E /* SequenceCounter.m in Sources */, B660F7361C29988E00687D6E /* SrtpSocket.m in Sources */, diff --git a/Signal/Signal-Info.plist b/Signal/Signal-Info.plist index 2ae2e7fb2..ebd517540 100644 --- a/Signal/Signal-Info.plist +++ b/Signal/Signal-Info.plist @@ -38,7 +38,7 @@ CFBundleVersion - 2.5.0.11 + 2.5.0.12 ITSAppUsesNonExemptEncryption LOGS_EMAIL diff --git a/Signal/src/AppDelegate.m b/Signal/src/AppDelegate.m index 1659a1fd7..514af3c05 100644 --- a/Signal/src/AppDelegate.m +++ b/Signal/src/AppDelegate.m @@ -15,6 +15,7 @@ #import "TSSocketManager.h" #import "TextSecureKitEnv.h" #import "VersionMigrations.h" +#import "OWSStaleNotificationObserver.h" #import static NSString *const kStoryboardName = @"Storyboard"; @@ -26,6 +27,7 @@ static NSString *const kURLHostVerifyPrefix = @"verify"; @property (nonatomic, retain) UIWindow *screenProtectionWindow; @property (nonatomic) OWSReadReceiptObserver *readReceiptObserver; +@property (nonatomic) OWSStaleNotificationObserver *staleNotificationObserver; @end @@ -119,20 +121,25 @@ static NSString *const kURLHostVerifyPrefix = @"verify"; [TextSecureKitEnv sharedEnv].contactsManager = [Environment getCurrent].contactsManager; [[TSStorageManager sharedManager] setupDatabase]; [TextSecureKitEnv sharedEnv].notificationsManager = [[NotificationsManager alloc] init]; - self.readReceiptObserver = - [[OWSReadReceiptObserver alloc] initWithMessagesManager:[TSMessagesManager sharedManager]]; + self.readReceiptObserver = [OWSReadReceiptObserver new]; [self.readReceiptObserver startObserving]; + + self.staleNotificationObserver = [OWSStaleNotificationObserver new]; + [self.staleNotificationObserver startObserving]; } -- (void)application:(UIApplication *)application - didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { +- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken +{ + DDLogDebug(@"%@ Successfully registered for remote notifications with token: %@", self.tag, deviceToken); [PushManager.sharedManager.pushNotificationFutureSource trySetResult:deviceToken]; } -- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error { +- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error +{ + DDLogError(@"%@ Failed to register for remote notifications with error %@", self.tag, error); #ifdef DEBUG - DDLogWarn(@"We're in debug mode, and registered a fake push identifier"); - [PushManager.sharedManager.pushNotificationFutureSource trySetResult:@"aFakePushIdentifier"]; + DDLogWarn(@"%@ We're in debug mode. Faking success for remote registration with a fake push identifier", self.tag); + [PushManager.sharedManager.pushNotificationFutureSource trySetResult:[NSData dataWithLength:32]]; #else [PushManager.sharedManager.pushNotificationFutureSource trySetFailure:error]; #endif @@ -352,4 +359,14 @@ static NSString *const kURLHostVerifyPrefix = @"verify"; return NO; } ++ (NSString *)tag +{ + return [NSString stringWithFormat:@"[%@]", self.class]; +} + +- (NSString *)tag +{ + return self.class.tag; +} + @end diff --git a/Signal/src/Observers/OWSStaleNotificationObserver.h b/Signal/src/Observers/OWSStaleNotificationObserver.h new file mode 100644 index 000000000..833a47aaa --- /dev/null +++ b/Signal/src/Observers/OWSStaleNotificationObserver.h @@ -0,0 +1,15 @@ +// Created by Michael Kirk on 9/14/16. +// Copyright © 2016 Open Whisper Systems. All rights reserved. + +NS_ASSUME_NONNULL_BEGIN + +@class PushManager; + +@interface OWSStaleNotificationObserver : NSObject + +- (instancetype)initWithPushManager:(PushManager *)pushManager NS_DESIGNATED_INITIALIZER; +- (void)startObserving; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Signal/src/Observers/OWSStaleNotificationObserver.m b/Signal/src/Observers/OWSStaleNotificationObserver.m new file mode 100644 index 000000000..b4576d369 --- /dev/null +++ b/Signal/src/Observers/OWSStaleNotificationObserver.m @@ -0,0 +1,71 @@ +// Created by Michael Kirk on 9/14/16. +// Copyright © 2016 Open Whisper Systems. All rights reserved. + +#import "OWSStaleNotificationObserver.h" +#import "PushManager.h" +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface OWSStaleNotificationObserver () + +@property (nonatomic, readonly) PushManager *pushManager; + +@end + +@implementation OWSStaleNotificationObserver + +- (void)dealloc +{ + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + +- (instancetype)init +{ + return [self initWithPushManager:[PushManager sharedManager]]; +} + +- (instancetype)initWithPushManager:(PushManager *)pushManager +{ + self = [super init]; + if (!self) { + return self; + } + + _pushManager = pushManager; + + return self; +} + +- (void)startObserving +{ + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(handleMessageRead:) + name:OWSReadReceiptsProcessorMarkedMessageAsReadNotification + object:nil]; +} + +- (void)handleMessageRead:(NSNotification *)notification +{ + if ([notification.object isKindOfClass:[TSIncomingMessage class]]) { + TSIncomingMessage *message = (TSIncomingMessage *)notification.object; + + DDLogDebug(@"%@ canceled notification for message:%@", self.tag, message); + [self.pushManager cancelNotificationsWithThreadId:message.uniqueThreadId]; + } +} + ++ (NSString *)tag +{ + return [NSString stringWithFormat:@"[%@]", self.class]; +} + +- (NSString *)tag +{ + return self.class.tag; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/Signal/src/network/PushManager.h b/Signal/src/network/PushManager.h index 0f1adb672..572406568 100644 --- a/Signal/src/network/PushManager.h +++ b/Signal/src/network/PushManager.h @@ -7,7 +7,7 @@ // #import -#import +#import #define Signal_Thread_UserInfo_Key @"Signal_Thread_Id" #define Signal_Message_UserInfo_Key @"Signal_Message_Id" @@ -33,7 +33,7 @@ typedef void (^pushTokensSuccessBlock)(NSString *pushToken, NSString *voipToken) * The Push Manager is responsible for registering the device for Signal push notifications. */ -@interface PushManager : NSObject +@interface PushManager : NSObject + (PushManager *)sharedManager; @@ -65,6 +65,7 @@ typedef void (^pushTokensSuccessBlock)(NSString *pushToken, NSString *voipToken) - (BOOL)supportsVOIPPush; - (UILocalNotification *)closeVOIPBackgroundTask; - (void)presentNotification:(UILocalNotification *)notification; +- (void)cancelNotificationsWithThreadId:(NSString *)threadId; #pragma mark Push Notifications Delegate Methods diff --git a/Signal/src/network/PushManager.m b/Signal/src/network/PushManager.m index 0785502d0..a856237bb 100644 --- a/Signal/src/network/PushManager.m +++ b/Signal/src/network/PushManager.m @@ -6,8 +6,6 @@ // Copyright (c) 2014 Open Whisper Systems. All rights reserved. // -#import - #import "AppDelegate.h" #import "OWSContactsManager.h" #import "InCallViewController.h" @@ -22,7 +20,7 @@ #define pushManagerDomain @"org.whispersystems.pushmanager" -@interface PushManager () +@interface PushManager () @property TOCFutureSource *registerWithServerFutureSource; @property UIAlertView *missingPermissionsAlertView; @@ -298,7 +296,8 @@ - (void)requestPushTokenWithSuccess:(pushTokensSuccessBlock)success failure:(failedPushRegistrationBlock)failure { if (!self.wantRemoteNotifications) { - success(@"FakeToken", @"FakePushToken"); + DDLogWarn(@"%@ Using fake push tokens", self.tag); + success(@"fakePushToken", @"fakeVoipToken"); return; } @@ -451,4 +450,14 @@ [self.currentNotifications removeObjectsInArray:toDelete]; } ++ (NSString *)tag +{ + return [NSString stringWithFormat:@"[%@]", self.class]; +} + +- (NSString *)tag +{ + return self.class.tag; +} + @end From f753cfeed443878fd80e1b6afa44f06d7ff064d0 Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Wed, 14 Sep 2016 15:35:27 -0400 Subject: [PATCH 6/8] Fix XCode8 code signing // FREEBIE --- Signal.xcodeproj/project.pbxproj | 2 ++ Signal/Signal-Info.plist | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Signal.xcodeproj/project.pbxproj b/Signal.xcodeproj/project.pbxproj index 8af79b75f..8fc71820b 100644 --- a/Signal.xcodeproj/project.pbxproj +++ b/Signal.xcodeproj/project.pbxproj @@ -3227,6 +3227,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = U68MSDN6DR; FRAMEWORK_SEARCH_PATHS = ( @@ -3281,6 +3282,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = U68MSDN6DR; FRAMEWORK_SEARCH_PATHS = ( diff --git a/Signal/Signal-Info.plist b/Signal/Signal-Info.plist index ebd517540..58c0bac18 100644 --- a/Signal/Signal-Info.plist +++ b/Signal/Signal-Info.plist @@ -38,7 +38,7 @@ CFBundleVersion - 2.5.0.12 + 2.5.0.13 ITSAppUsesNonExemptEncryption LOGS_EMAIL From 63513bed1289c607295fa6012be5b5e227fce7c0 Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Wed, 14 Sep 2016 17:40:53 -0400 Subject: [PATCH 7/8] Apple now requires camera permission explanation Even though it's pretty obvious why we need your camera when you push a "take photo" button... Unfortunately this warning will be confusing if someone's first exposure to it is to scan an identity code, but that seems like an edge case not worth pegging an extra sentence of copy to an already unnecessary warning. Also, we're enabling push notifications for dev, per apple build submission feedback. // FREEBIE --- Signal.xcodeproj/project.pbxproj | 5 +++++ Signal/Signal-Info.plist | 4 +++- Signal/Signal.entitlements | 5 ++++- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/Signal.xcodeproj/project.pbxproj b/Signal.xcodeproj/project.pbxproj index 8fc71820b..862ad0a18 100644 --- a/Signal.xcodeproj/project.pbxproj +++ b/Signal.xcodeproj/project.pbxproj @@ -2392,6 +2392,9 @@ com.apple.InterAppAudio = { enabled = 0; }; + com.apple.Push = { + enabled = 1; + }; com.apple.VPNLite = { enabled = 0; }; @@ -3227,6 +3230,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Signal/Signal.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = U68MSDN6DR; @@ -3282,6 +3286,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Signal/Signal.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = U68MSDN6DR; diff --git a/Signal/Signal-Info.plist b/Signal/Signal-Info.plist index 58c0bac18..21938c5c6 100644 --- a/Signal/Signal-Info.plist +++ b/Signal/Signal-Info.plist @@ -38,7 +38,7 @@ CFBundleVersion - 2.5.0.13 + 2.5.0.14 ITSAppUsesNonExemptEncryption LOGS_EMAIL @@ -71,6 +71,8 @@ NSAppleMusicUsageDescription Signal needs to use Apple Music to play media attachments. + NSCameraUsageDescription + Signal will let you take a photo to send to your contacts. You can review it before sending. NSContactsUsageDescription Signal uses your contacts to find users you know. We do not store your contacts on the server. NSMicrophoneUsageDescription diff --git a/Signal/Signal.entitlements b/Signal/Signal.entitlements index 0c67376eb..903def2af 100644 --- a/Signal/Signal.entitlements +++ b/Signal/Signal.entitlements @@ -1,5 +1,8 @@ - + + aps-environment + development + From 197933817c9d318080ba9e1d2b35d3ae8bde0510 Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Wed, 14 Sep 2016 19:02:30 -0400 Subject: [PATCH 8/8] Fix height of network status on iphone5. Abandon dynamic type since other (standard) table cells don't use it. // FREEBIE --- Signal/Signal-Info.plist | 2 +- Signal/src/Storyboard/Storyboard.storyboard | 13 +++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/Signal/Signal-Info.plist b/Signal/Signal-Info.plist index 21938c5c6..084178ec4 100644 --- a/Signal/Signal-Info.plist +++ b/Signal/Signal-Info.plist @@ -38,7 +38,7 @@ CFBundleVersion - 2.5.0.14 + 2.5.0.15 ITSAppUsesNonExemptEncryption LOGS_EMAIL diff --git a/Signal/src/Storyboard/Storyboard.storyboard b/Signal/src/Storyboard/Storyboard.storyboard index 246470b84..ee04f11d7 100644 --- a/Signal/src/Storyboard/Storyboard.storyboard +++ b/Signal/src/Storyboard/Storyboard.storyboard @@ -1503,19 +1503,20 @@ A0 09 9A FF A8 8A 09 99 - +