From a9c80c111b792bf858cab6f6f270da9484f1521c Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Thu, 20 Dec 2018 18:14:08 +0400 Subject: [PATCH] NY icons Various fixes --- .../Chat List/Tabs/NY/Contents.json | 9 +++++++ .../Tabs/NY/IconCalls.imageset/Calls@2x.png | Bin 0 -> 1887 bytes .../Tabs/NY/IconCalls.imageset/Calls@3x.png | Bin 0 -> 2875 bytes .../Tabs/NY/IconCalls.imageset/Contents.json | 22 ++++++++++++++++++ .../Tabs/NY/IconChats.imageset/Contents.json | 22 ++++++++++++++++++ .../NY/IconChats.imageset/Messages@2x.png | Bin 0 -> 2661 bytes .../NY/IconChats.imageset/Messages@3x.png | Bin 0 -> 4107 bytes .../NY/IconContacts.imageset/Contacts@2x.png | Bin 0 -> 2073 bytes .../NY/IconContacts.imageset/Contacts@3x.png | Bin 0 -> 3350 bytes .../NY/IconContacts.imageset/Contents.json | 22 ++++++++++++++++++ .../NY/IconSettings.imageset/Contents.json | 22 ++++++++++++++++++ .../NY/IconSettings.imageset/Settings@2x.png | Bin 0 -> 2231 bytes .../NY/IconSettings.imageset/Settings@3x.png | Bin 0 -> 3452 bytes TelegramUI/CallListController.swift | 8 ++++++- TelegramUI/ChatListController.swift | 12 +++++++++- TelegramUI/CheckDeviceAccess.swift | 11 +++++++-- TelegramUI/ContactListNode.swift | 10 ++++---- TelegramUI/ContactsController.swift | 8 ++++++- TelegramUI/GalleryNavigationCheckNode.swift | 6 ++++- .../GalleryNavigationRecipientNode.swift | 21 +++++++++++++---- TelegramUI/LegacyWebSearchEditor.swift | 2 +- TelegramUI/LiveLocationSummaryManager.swift | 3 --- TelegramUI/OngoingCallContext.swift | 2 +- TelegramUI/PermissionContentNode.swift | 22 +++++++++++------- TelegramUI/SettingsController.swift | 7 +++++- TelegramUI/TelegramController.swift | 14 ++++++++--- TelegramUI/WebSearchGalleryController.swift | 4 +++- 27 files changed, 193 insertions(+), 34 deletions(-) create mode 100644 Images.xcassets/Chat List/Tabs/NY/Contents.json create mode 100644 Images.xcassets/Chat List/Tabs/NY/IconCalls.imageset/Calls@2x.png create mode 100644 Images.xcassets/Chat List/Tabs/NY/IconCalls.imageset/Calls@3x.png create mode 100644 Images.xcassets/Chat List/Tabs/NY/IconCalls.imageset/Contents.json create mode 100644 Images.xcassets/Chat List/Tabs/NY/IconChats.imageset/Contents.json create mode 100644 Images.xcassets/Chat List/Tabs/NY/IconChats.imageset/Messages@2x.png create mode 100644 Images.xcassets/Chat List/Tabs/NY/IconChats.imageset/Messages@3x.png create mode 100644 Images.xcassets/Chat List/Tabs/NY/IconContacts.imageset/Contacts@2x.png create mode 100644 Images.xcassets/Chat List/Tabs/NY/IconContacts.imageset/Contacts@3x.png create mode 100644 Images.xcassets/Chat List/Tabs/NY/IconContacts.imageset/Contents.json create mode 100644 Images.xcassets/Chat List/Tabs/NY/IconSettings.imageset/Contents.json create mode 100644 Images.xcassets/Chat List/Tabs/NY/IconSettings.imageset/Settings@2x.png create mode 100644 Images.xcassets/Chat List/Tabs/NY/IconSettings.imageset/Settings@3x.png diff --git a/Images.xcassets/Chat List/Tabs/NY/Contents.json b/Images.xcassets/Chat List/Tabs/NY/Contents.json new file mode 100644 index 0000000000..38f0c81fc2 --- /dev/null +++ b/Images.xcassets/Chat List/Tabs/NY/Contents.json @@ -0,0 +1,9 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + }, + "properties" : { + "provides-namespace" : true + } +} \ No newline at end of file diff --git a/Images.xcassets/Chat List/Tabs/NY/IconCalls.imageset/Calls@2x.png b/Images.xcassets/Chat List/Tabs/NY/IconCalls.imageset/Calls@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..3d12d7e27b695169eec983a3ab5104d07bfcc012 GIT binary patch literal 1887 zcmV-l2cYPx+8A(JzRCodHnr~>8RT#i`x4FAURNFokD^!w(76?hA5P_7i5yc>s{Z-8Tun7E8 z_Cak;Kjfz($q(kB_LoEu3O2A1B5^2+h?y2OqDJ*)t%j^^?%wr#Ztodq@4tJ_d*8b| z>ArCGob&vDp7WeP?|WBLQhbUTC}yCTfno;!zZpp6EA-*v;pD``M13NW*no{E)9LgR zz-q=10v}jdSja%f{uKDX=}&KO_B?}a5HnX!N;|x{taZ5|f*V&kbo;3me{r&6Nz)r!t#YEu>;u&Ql z-P_jICe;!6gs$1%-rl#E@oPxmYr#vvTf}#XAuxIfffc~acQW%Ig$ds)G%DeBD&d5m zzrG0|`0ZqGn3mHq#(G4>!Wf3H(7#ImHqOZLHA#Q6uC8uUoEje=m-|6A-D;9vL%$yS z(~LLKUrXQDPmwiw(2=4wl7w?^{&F`$#uz+CiyS=0J}1x{mxjL zdcIJdvuDpfG(A1NnZ$JB(@P3(1D#loA>&DaC$oKheJ>#3VYD#V-Otg87!QfS1t|o8JPo+W^R3S*5fMhskap=79LUMEGy1=!Ga2loA9^CST2n}Hg_ z3D;Qv`c9tV#^HzEV!7ZP8*({|@_1tNB!DdSMA6K#C)edA&%nUI+9e2Wz+IzG4fVdl zDd?xe&z9m3gMP7j642V(dJ4w#VTycc7iwy1Jc;A%-sZ!bK~V)KC2(od590IF;n=zm zB;$vdm?Sng&65BaWru0ANWv%|C|-7dv0>)c5!icfgK7+|f#80XCVho>L(w6+biCLS zo8U%ud{EzsMPl;oo}P=4Qi9JB0LOd16ZdpT}0u&(9AK_|{lF3s6ELE|!;+&G&mWa0{U8U!@M2qh5MRRh!f25yfX_?^ak>i!B5!mOI5Rgc&dFUs zj>9lV!)W-D!j~>y!;gmX`O!QtLw-yOC%Zg9e#oU|4+a&w;Lw?fBTUR1?g#s9P6?|7 z%+1ZcDZ$4PF;2@(aG&UsejGZ{v4>;$2cUfYF?x)bfE;so@7}$Q)})bUm?+I}DD~Z| zR;`+*ay|gH(@^#^W^zCFs#qGIkf3J`<%De(d-bNrr12)m(X$)n#=(mxJa2Fd8>1xu zAQ3X#=?pgfPg;0IMr1`tIJ<|MbbR#?{1CusD$%eZhnfq7*A38k70QuFX z%*F{oVU4L$#fKxZcE<=rp%gsKi;ccf9pfw)ntFTOiA-j{K!=jCfwiX0HcP-%rwN~$ zd7ak}r_=M&FH{2Z5=<1Og-U>|dH3UobMwSLw%G%$jmtfNHM|Qr1AHF^>K@STta(-T znN3hLkhurQCW!2(&R(LCk-J{kot4jNa0ibg6S=vQOKvz(BijeZ4QPM?aliWw+opqPPT28tOdX5ik) Zz`yZdD#Qg+uzUKSMN{52vEsXC7^;?< z)-pNLqBznxTXveep?W&EaiY4Nx4N1~RNgo}`SXk5ITDm5&2OLx{@~$)?#+TFh#JLzwNnmc z?u-gfFnB%p$*9|`NU$D|@E2odVL87!sS?_G%Ky?qJDfheIP>r+6gs$MpTaX!E!F4r%bL z=t*jQ&9HS;PJhKcZ-W$0JD9?zF`mrCg}Ah|Bu~$!Q<*Mt1n#0#qyHECA_sYZpLuw3)m|Y z#e=qSZEQ`YD3q`t-bC(g;C1c+$j#pN@%U}%v0-4YTA*5!P>HG7Vs-zYXnk}urOi_n z=?k2Vg)8Eu1oyS>`|!niex7IB6eb^&w)D9B3x`#x$Pigbxb3EC0)wr7RjNc}bwr`i zB4WrPGOK2q!W!96G0l_H1ss-oaJMjvXg-8PfRzmm#T0JU&%u8#aD2Q2)-m;K@DSal zn-5liOvGWc?@F%xSVs|&D#SdPN-93V~C1&o<+n(}AU)w-s*$xW+zGo?=g1*6jwE39PiG{vmq zCh8FSH34QH$kI{bPB|0hhm58omLR{+ZFA2=t%SNuqmF7;D}5()KQ`t8e|k!%iicxL zWdREs9hF<=aQGodovHC#s|{&{85RXo8k~@qk=gd0zTHBLH5I7_*_e!Snia+;3U4#+ zx<|Pl>(wQ%bG*92lr}(BoQ595K%-n!<81>~W&YdB{q*Gi=9F%BbF5$YH#1-rU`*6QXd%VnRF=fLx@T10l=Sw>S%TgY3!I!2qK<{+V=nM-kebN4D<)>DQFtgv3WWLIrJnK{l1fnjfY$Td)Xw7X;S5p!t=6J?R*cy*nMm;smwyUW;-y*@-x;vkALQ=IoIjPPwQI?fDS;yZoo zdGE(5clEBt#l^NCWd^t*|2Y7M4m>|hL^n5E3ihwgm!z%LTOGC5tHr+gvQB8@xl+%! zTAYAI>tW7cs14e{NRZWlaFcB6 zw;;)VYQS>;gvH0j7YnWQK_If)2VlllF*vqO*X?qHggR^NXp zp`_spH_7)I7{BozO@NPPWC0Sn_sgr7xddhs*5@|TI$!Y?3z#aEpdMweX{4_M>V=e2 z&%a&>*bDkI$t=W6t0YZptA@1^`wh4VFhQu$`4EUkmnAtVR~fX)H7!UhaZGDCu9M=D zEdLbt@rf;?aN})cd5vmsdt!hN_l_M)<>4^6&@>?{3nD~TC0`Q6ELs9bKWb)0x)yHQ z>Q_^6ZF3YzWK+uguA9WO-ylj)c-zF+^aul0+P%*#^@xVzt@tz1F@MNhw!2f%cSec> zm4lEwhI1_kl107#Sc&~?$fui$lL~(G>qNUnMgZ+g#Hy5gfd1}=ydy9vu%uV=NOIwv zH$fm23+5ufD5PXaCdKZzKR$%F6P0#20Mh4k`M77N!PKD#|9&|5B}_37O7b~zu)7-V z9=w>gO}P9UUH5m>i4t5Kq~D-Z>GEsPTX~uIhc`ilm^PcvoAm#o3cjMewVV=Inqb%c Q_YDKO4`Et08aAQ-0m&MHKmY&$ literal 0 HcmV?d00001 diff --git a/Images.xcassets/Chat List/Tabs/NY/IconCalls.imageset/Contents.json b/Images.xcassets/Chat List/Tabs/NY/IconCalls.imageset/Contents.json new file mode 100644 index 0000000000..4019ae2782 --- /dev/null +++ b/Images.xcassets/Chat List/Tabs/NY/IconCalls.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "Calls@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "Calls@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Images.xcassets/Chat List/Tabs/NY/IconChats.imageset/Contents.json b/Images.xcassets/Chat List/Tabs/NY/IconChats.imageset/Contents.json new file mode 100644 index 0000000000..a78708ecb9 --- /dev/null +++ b/Images.xcassets/Chat List/Tabs/NY/IconChats.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "Messages@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "Messages@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Images.xcassets/Chat List/Tabs/NY/IconChats.imageset/Messages@2x.png b/Images.xcassets/Chat List/Tabs/NY/IconChats.imageset/Messages@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..ffa49c3ae1b516b7dccb3fa84cc3d1ebd26001c9 GIT binary patch literal 2661 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 JPDHLkV1gD7-!uRK literal 0 HcmV?d00001 diff --git a/Images.xcassets/Chat List/Tabs/NY/IconContacts.imageset/Contacts@2x.png b/Images.xcassets/Chat List/Tabs/NY/IconContacts.imageset/Contacts@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..115d8526c5045d8b7c76cc0fe88d318236aa06b4 GIT binary patch literal 2073 zcmV+!2RP)Px+(@8`@RCodHT5V`nRUF^57uR4IQj5w3$&w;_6-Hv2Sx(TjjACwWIxJZc1Xk9k zz8Lkv?1esMBPsW0PQ$lSN^>}~1f^mn7!?avR?HHj*yi5){VwNR?sIou?!C`>_7FZ7 zF6W&8`~P=d?|Ghrg8Y+5Adf&Efjj~iF9NBlOnuw7ZMUaVsg)BG6AMtzgzu|`|FfX| z3feK0dzzY>zMiVMrUZcY_V!1{$H!kra@R*m3_yHeSXlUCV`Jm4DDs)eWEFtc*49}_ zx)TA;OBmz{fbr;>HEa43>RZ*a1^|*@2=5;PfXl2=7z6;opI|=>5RMwe60@=b0Fy`J zhY(ds;>gk!M*u`kHb8I=0EazdKbdLIr{`Z#AVxy9>*-J!c9dxwiFdkAo-xrTZD$%^ zSl=lCT4F!IP1T+!e5iPdXifp(R%eLfU{O)gHGCm+P$6gIdny(m3bSUCvo(N+ z9Ju;Q=Z=YEU;l-C^kU`M*jRs1*2WLYqCVHvVaeGDz#_FW6lB(#E`1fdiV_Rd0+TKD zcnf;InKG=0Wo`VRyvd~00D5I60yFtr8Xoo`VH@8Ur!T*eVa3@LKpgVJCc}^- zsXO!K5`dyep}P@s=F1rX82*1*avR6cfaHEmH=W)B ze*=!ObFtms2F~epuGczE9=11br_U?+KFQ|G7mQGG1^{~HgvFn?LgFm&ZCP1aHIi71 zcZ+z}l13hFfM#4xA@ZfgS7f&JAcVwHZEbDqVDWLhbI>lwWyO=LSFe7DUclRc)7fU$ zO%IY91b-Dq!G4n*KBiWHzXN{COmgJG<^$3m^xlNddeHs>iz93+Vtm&Irf~!yxvTIV zhT#^xci=6jW0cETipMzgr4V$O&|aJv+i)JZS<+?M+1Ysud6W^dlBF$+i;I7dOz7Ot zI?8gqjJ1WaGY2W7Dz)bT7+}x0qr6w8C~4sTE$gm{#{F_Hip^}Ppi zd?xF`k~uJ!AT3ze0stY-dF4}DTDn6rF#l_0JqP7t=@S6>F-cmW)aGIWU{1h*UxlOd zwY9aslhEDWeF@stK68pI=v{vVpi@*^tBgpQ3z;SWq;j^(NZ8G=MMG$xR2jC>aOi2~{QzIqZSpEUMqiJlqkf~TD@tW9lrsUaRbj{@ z4G#~ml02LVc>9~H$6t)m5q?aHV6?et0T73XBMM{Os{F+V^#W^5p(m}nP0T2u#mv!SVkj=ov zIY9e6K{kB{ZRZRC1QGdnfMCF`>&~XYfddChT?ePL=hBxG0B`_FojZ5#eOGVaP zF6VPkm)vNl2ca%e2F&U zxZawHy^N;-zUOx#kjHQq=e2jN2Ra|{jim%(=byday0i3DR8%aX{=mS%rzrgEEz(R60DlTS|F%gcDlZWL+qZAO_QHh=J#g~*v}w~e z)YsRar9*)58UT1Mg7Y)D)1Tka&~Toz9UUDr@MZS}syEnl0s0~Q7~%nko2hbK&TPaK zT!A>2Ada7H`eA;eDS+$f4jAH9c0GaMdSn zuXtBfNaQ=bHR!R2AUjNXB=s~dGJ-crVKZKvGL#K4U%)TNw}S2gig{mz5w`_Cs{=B! zIw>~E(3MF5P~O8KpoRFrIfYxHRj7M*(PMi60!PfIIIA{g0m7@$dkcwg#t$*xh`^cS z9?biru+Qr`)uW6}B`9erS&3R=p6x>b{0Uq8Ao!D5)avW%>VDD+Ss3t<+PQOQA(Kb1 zUy2_-c>J~f6>lE^d(dJ!jU9E*4l42YeIoz}v>Lm^dytE~w+9`t4iI_9@OmD}zY-yN z>R6{(*iY;!fZ@3njy?$+3bzq(g{!YN*t#=pKipn0fxQpNaa8P zbl0+F%e)0pB@>gz-}glz+9RU!O{bH2F4kl!Ee~##b&lc=BvA-w6_VevL0(k^3P6Yk~8GSLQRI53q00000NkvXXu0mjf DusYCd literal 0 HcmV?d00001 diff --git a/Images.xcassets/Chat List/Tabs/NY/IconContacts.imageset/Contacts@3x.png b/Images.xcassets/Chat List/Tabs/NY/IconContacts.imageset/Contacts@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..aaddd096eb73ef94220a1a89d73bbf3cbc5e4ae2 GIT binary patch literal 3350 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 literal 0 HcmV?d00001 diff --git a/Images.xcassets/Chat List/Tabs/NY/IconContacts.imageset/Contents.json b/Images.xcassets/Chat List/Tabs/NY/IconContacts.imageset/Contents.json new file mode 100644 index 0000000000..2554b4ce50 --- /dev/null +++ b/Images.xcassets/Chat List/Tabs/NY/IconContacts.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "Contacts@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "Contacts@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Images.xcassets/Chat List/Tabs/NY/IconSettings.imageset/Contents.json b/Images.xcassets/Chat List/Tabs/NY/IconSettings.imageset/Contents.json new file mode 100644 index 0000000000..9a15c71190 --- /dev/null +++ b/Images.xcassets/Chat List/Tabs/NY/IconSettings.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "Settings@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "Settings@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Images.xcassets/Chat List/Tabs/NY/IconSettings.imageset/Settings@2x.png b/Images.xcassets/Chat List/Tabs/NY/IconSettings.imageset/Settings@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c00ec0876d1bede15588dd5763b5dfd0314870e5 GIT binary patch literal 2231 zcmV;o2uSydP)Px-aY;l$RCodHn|p{=MI6W7m%Aiwk3R}+CDaUr9++EE8EV=eQMgGYuDdHq8B|nc z5*3wg3PF@be-v0`=<1pgw$kGtOQRynwX_G)L#5h`3QBh|*GId3zLz_fv&S=YX3o8v zMfbq$%>3TJ-@JZv&fO6s%1=20CR}KJDND5dC%pKjIROG2eoJyrH3C z&5Ri{j=5;la9g%)sqX3NX@l+ooS&FN{}{7yX$s8{bWi}+tXXpB4uRN1 zS=!RlvX*+#LY4?dPsQ4`Yg?$>DdQ7~jt35)XL?&(+xy3(k|99>VDxt)=7MBVPH1;^ zb@g5I=g`!pV6?XeR+^ri{*)X2FCLjcCQAcE-os){p?4nb8=r zy=HjxBY(Q-N9xn_I0Gv17(hVnZEHvX&Im9dPWoL0Fg?0>HPn<5T?`>;H0MeBH zC-ETx__YWRqib@jLrxSI<#DhiqP%Sl3BWIjs{DXA7&7hlw0}4KNd0>rXFvrW0|=BPk_U5Qg2(mGeI)6o6wRw%HrC5 z`Z#)kbarHe>USBi=0e-Sg_Gqr&)1OAZOwg*E_$O{nyww%#_Saz|OOlCQKsy6m4BA_p- z9e=C=AaXlci@AF>0=C!I)?Utgw<8h&POqk(qj^?TAaozne-a~x?Ufkvm!SKKs9xGX zq5F26+$1#pK2HovVPK}Nedbq8;=^;`t|E4 z5#@`)9j0vK&5!qVH8Qf)yeS%wb9yOS%k11XZ{ECJMoxEkcg?O{yHI>2|18Z~PBoH=v$i$1S>2F+fk+Xlf({h)U)GV2+HEoKllZrph4!Gi~< zU|Tb`wSupW>y+2iAQuz~_I+W*56qH?Ogbzb~ z5WTOUOL_;8-;WI^rReFCFE$$MG028@fL+xm^OFGuIq-aGQ&ucICR;kwoYzc#Nxs;0 z7Yt7#;JDkI1b4ye>+64W;fuj#kBi=IQVASaMl38WKEK6!XohYuCA_l0u@1rHS@CC!?=b}*9_@JI@SP?Ki<%`uoUMwty(V9V}Ie_7_xwSoAOc2CN{{M_*rRlTb z<%4{&;%x}QabODPx-LcITy!oR25cgOYi(+33i{%!X`dhYVw~Sg`g|kT^zAkqD{Ke@ z=M7Lj0eFtmVqno42j8aLDi|~?Dc3~tYJ=ZLwUkTAs26f0WNv^k)sT3cM@el z5`afb?Yzt==_nb$7=2x1-=#mzz>2Kj!}+TSg1!co^eOoakaaS&uCA_y+O{_JarHsY z>}e`$QxZS8N(S%t=MRVT=p3FIAi;Wg8#{)twaYMG-wW%Q8Tyx+7m|KIpjpG6Lccp$ z1kF_F`)R*{^AGdmjNGkJGRsdn0_6ylBT$Y&IRd4Nz~8SPz8(O6!%+YL002ovPDHLk FV1i%gIR*d# literal 0 HcmV?d00001 diff --git a/Images.xcassets/Chat List/Tabs/NY/IconSettings.imageset/Settings@3x.png b/Images.xcassets/Chat List/Tabs/NY/IconSettings.imageset/Settings@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..27cad3a239863c18e13d5399156cab53152e15e9 GIT binary patch literal 3452 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 eK#oAU5%?dUvSAC4p_6L>0000 literal 0 HcmV?d00001 diff --git a/TelegramUI/CallListController.swift b/TelegramUI/CallListController.swift index 2d13a26c34..2432c26eac 100644 --- a/TelegramUI/CallListController.swift +++ b/TelegramUI/CallListController.swift @@ -49,7 +49,13 @@ public final class CallListController: ViewController { if case .tab = self.mode { self.navigationItem.rightBarButtonItem = UIBarButtonItem(image: PresentationResourcesRootController.navigationCallIcon(self.presentationData.theme), style: .plain, target: self, action: #selector(self.callPressed)) - let icon = UIImage(bundleImageName: "Chat List/Tabs/IconCalls") + let icon: UIImage? + if (useSpecialTabBarIcons()) { + icon = UIImage(bundleImageName: "Chat List/Tabs/NY/IconCalls") + } else { + icon = UIImage(bundleImageName: "Chat List/Tabs/IconCalls") + } + self.tabBarItem.title = self.presentationData.strings.Calls_TabTitle self.tabBarItem.image = icon self.tabBarItem.selectedImage = icon diff --git a/TelegramUI/ChatListController.swift b/TelegramUI/ChatListController.swift index 1b931b4cdc..f67334ef81 100644 --- a/TelegramUI/ChatListController.swift +++ b/TelegramUI/ChatListController.swift @@ -4,6 +4,10 @@ import SwiftSignalKit import Display import TelegramCore +public func useSpecialTabBarIcons() -> Bool { + return (Date(timeIntervalSince1970: 1545642000)...Date(timeIntervalSince1970: 1546387200)).contains(Date()) +} + public class ChatListController: TelegramController, KeyShortcutResponder, UIViewControllerPreviewingDelegate { private var validLayout: ContainerViewLayout? @@ -64,7 +68,13 @@ public class ChatListController: TelegramController, KeyShortcutResponder, UIVie self.navigationItem.titleView = self.titleView self.tabBarItem.title = self.presentationData.strings.DialogList_Title - let icon = UIImage(bundleImageName: "Chat List/Tabs/IconChats") + let icon: UIImage? + if (useSpecialTabBarIcons()) { + icon = UIImage(bundleImageName: "Chat List/Tabs/NY/IconChats") + } else { + icon = UIImage(bundleImageName: "Chat List/Tabs/IconChats") + } + self.tabBarItem.image = icon self.tabBarItem.selectedImage = icon diff --git a/TelegramUI/CheckDeviceAccess.swift b/TelegramUI/CheckDeviceAccess.swift index 11981ad8ef..80153619e7 100644 --- a/TelegramUI/CheckDeviceAccess.swift +++ b/TelegramUI/CheckDeviceAccess.swift @@ -83,7 +83,7 @@ public final class DeviceAccess { public static func authorizationStatus(account: Account, subject: DeviceAccessSubject) -> Signal { switch subject { case .notifications: - let status = Signal { subscriber in + let status = (Signal { subscriber in if #available(iOSApplicationExtension 10.0, *) { UNUserNotificationCenter.current().getNotificationSettings(completionHandler: { settings in switch settings.authorizationStatus { @@ -107,7 +107,14 @@ public final class DeviceAccess { subscriber.putCompletion() } return EmptyDisposable - } + } |> afterNext { status in + switch status { + case .allowed, .unreachable: + DeviceAccess.notificationsPromise.set(.single(nil)) + default: + break + } + } ) |> then(self.notifications |> mapToSignal { authorized -> Signal in if let authorized = authorized { diff --git a/TelegramUI/ContactListNode.swift b/TelegramUI/ContactListNode.swift index 108bd2859a..c2d2001689 100644 --- a/TelegramUI/ContactListNode.swift +++ b/TelegramUI/ContactListNode.swift @@ -1042,6 +1042,10 @@ final class ContactListNode: ASDisplayNode { itemHeaderNode.updateTheme(theme: presentationData.theme) } }) + + if let validLayout = strongSelf.validLayout { + strongSelf.containerLayoutUpdated(validLayout, transition: .immediate) + } } } }) @@ -1136,10 +1140,8 @@ final class ContactListNode: ASDisplayNode { indexNode.update(size: indexNodeFrame.size, color: self.presentationData.theme.list.itemAccentColor, sections: indexSections, transition: transition) } - //if let authorizationNode = self.authorizationNode { - authorizationNode.updateLayout(size: layout.size, insets: insets, transition: transition) - transition.updateFrame(node: authorizationNode, frame: self.bounds) - //} + self.authorizationNode.updateLayout(size: layout.size, insets: insets, transition: transition) + transition.updateFrame(node: self.authorizationNode, frame: self.bounds) if !hadValidLayout { self.dequeueTransitions() diff --git a/TelegramUI/ContactsController.swift b/TelegramUI/ContactsController.swift index ae0202d993..ebc69e82ae 100644 --- a/TelegramUI/ContactsController.swift +++ b/TelegramUI/ContactsController.swift @@ -35,7 +35,13 @@ public class ContactsController: ViewController { self.title = self.presentationData.strings.Contacts_Title self.tabBarItem.title = self.presentationData.strings.Contacts_Title - let icon = UIImage(bundleImageName: "Chat List/Tabs/IconContacts") + let icon: UIImage? + if (useSpecialTabBarIcons()) { + icon = UIImage(bundleImageName: "Chat List/Tabs/NY/IconContacts") + } else { + icon = UIImage(bundleImageName: "Chat List/Tabs/IconContacts") + } + self.tabBarItem.image = icon self.tabBarItem.selectedImage = icon diff --git a/TelegramUI/GalleryNavigationCheckNode.swift b/TelegramUI/GalleryNavigationCheckNode.swift index da2ea17989..754e005262 100644 --- a/TelegramUI/GalleryNavigationCheckNode.swift +++ b/TelegramUI/GalleryNavigationCheckNode.swift @@ -2,7 +2,7 @@ import Foundation import AsyncDisplayKit import Display -final class GalleryNavigationCheckNode: ASDisplayNode { +final class GalleryNavigationCheckNode: ASDisplayNode, NavigationButtonCustomDisplayNode { private var checkNode: CheckNode init(theme: PresentationTheme) { @@ -13,6 +13,10 @@ final class GalleryNavigationCheckNode: ASDisplayNode { self.addSubnode(self.checkNode) } + var isHighlightable: Bool { + return false + } + var isChecked: Bool { return self.checkNode.isChecked } diff --git a/TelegramUI/GalleryNavigationRecipientNode.swift b/TelegramUI/GalleryNavigationRecipientNode.swift index 22460a54a4..6b7a304061 100644 --- a/TelegramUI/GalleryNavigationRecipientNode.swift +++ b/TelegramUI/GalleryNavigationRecipientNode.swift @@ -3,26 +3,37 @@ import AsyncDisplayKit import Display import LegacyComponents -final class GalleryNavigationRecipientNode: ASDisplayNode { +final class GalleryNavigationRecipientNode: ASDisplayNode, NavigationButtonCustomDisplayNode { private var iconNode: ASImageNode - private var textNode: ASTextNode + private var textNode: ImmediateTextNode init(color: UIColor, title: String) { self.iconNode = ASImageNode() self.iconNode.alpha = 0.45 self.iconNode.image = TGComponentsImageNamed("PhotoPickerArrow") - self.textNode = ASTextNode() + self.textNode = ImmediateTextNode() self.textNode.attributedText = NSAttributedString(string: title, font: Font.bold(13.0), textColor: UIColor(rgb: 0xffffff, alpha: 0.45)) + self.textNode.maximumNumberOfLines = 1 super.init() self.addSubnode(self.iconNode) self.addSubnode(self.textNode) + + if title.isEmpty { + self.iconNode.isHidden = true + self.textNode.isHidden = true + } + } + + var isHighlightable: Bool { + return false } override func calculateSizeThatFits(_ constrainedSize: CGSize) -> CGSize { - return CGSize(width: 30.0, height: 30.0) + let textSize = self.textNode.updateLayout(CGSize(width: constrainedSize.width - 50.0, height: constrainedSize.height)) + return CGSize(width: textSize.width + 12.0, height: 30.0) } override func layout() { @@ -32,6 +43,6 @@ final class GalleryNavigationRecipientNode: ASDisplayNode { self.iconNode.frame = CGRect(origin: CGPoint(x: -2.0, y: 9.0), size: image.size) } - self.textNode.frame = CGRect(x: self.iconNode.frame.maxX + 6.0, y: 7.0, width: 150.0, height: 20.0) + self.textNode.frame = CGRect(x: self.iconNode.frame.maxX + 6.0, y: 7.0, width: self.frame.size.width - 12.0, height: 15.0) } } diff --git a/TelegramUI/LegacyWebSearchEditor.swift b/TelegramUI/LegacyWebSearchEditor.swift index 491372d10f..a313c46b00 100644 --- a/TelegramUI/LegacyWebSearchEditor.swift +++ b/TelegramUI/LegacyWebSearchEditor.swift @@ -31,7 +31,7 @@ func presentLegacyWebSearchEditor(account: Account, theme: PresentationTheme, re let legacyController = LegacyController(presentation: .custom, theme: theme, initialLayout: initialLayout) legacyController.statusBar.statusBarStyle = theme.rootController.statusBar.style.style - let controller = TGPhotoEditorController(context: legacyController.context, item: item, intent: TGPhotoEditorControllerAvatarIntent, adjustments: nil, caption: nil, screenImage: screenImage, availableTabs: TGPhotoEditorController.defaultTabsForAvatarIntent(), selectedTab: .cropTab)! + let controller = TGPhotoEditorController(context: legacyController.context, item: item, intent: TGPhotoEditorControllerAvatarIntent, adjustments: nil, caption: nil, screenImage: screenImage ?? UIImage(), availableTabs: TGPhotoEditorController.defaultTabsForAvatarIntent(), selectedTab: .cropTab)! legacyController.bind(controller: controller) controller.editingContext = TGMediaEditingContext() diff --git a/TelegramUI/LiveLocationSummaryManager.swift b/TelegramUI/LiveLocationSummaryManager.swift index 88111a935a..7b4c33a703 100644 --- a/TelegramUI/LiveLocationSummaryManager.swift +++ b/TelegramUI/LiveLocationSummaryManager.swift @@ -169,9 +169,6 @@ private final class LiveLocationPeerSummaryContext { } } } - if let accountPeer = accountPeer, strongSelf.isActive { - //peers.append(accountPeer) - } if peersAndMessages.isEmpty { strongSelf.peersAndMessages = nil } else { diff --git a/TelegramUI/OngoingCallContext.swift b/TelegramUI/OngoingCallContext.swift index 35ae9e6c4b..7e0877ec38 100644 --- a/TelegramUI/OngoingCallContext.swift +++ b/TelegramUI/OngoingCallContext.swift @@ -234,7 +234,7 @@ final class OngoingCallContext { } func start(key: Data, isOutgoing: Bool, connections: CallSessionConnectionSet, maxLayer: Int32, allowP2P: Bool, audioSessionActive: Signal, logName: String) { - var logPath = logName.isEmpty ? "" : callLogsPath(account: self.account) + "/" + logName + ".log" + let logPath = logName.isEmpty ? "" : callLogsPath(account: self.account) + "/" + logName + ".log" self.audioSessionDisposable.set((audioSessionActive |> filter { $0 } |> take(1)).start(next: { [weak self] _ in diff --git a/TelegramUI/PermissionContentNode.swift b/TelegramUI/PermissionContentNode.swift index 5197cf5eba..df95aec695 100644 --- a/TelegramUI/PermissionContentNode.swift +++ b/TelegramUI/PermissionContentNode.swift @@ -79,7 +79,7 @@ final class PermissionContentNode: ASDisplayNode { func updateLayout(size: CGSize, insets: UIEdgeInsets, transition: ContainedViewLayoutTransition) { let sidePadding: CGFloat let fontSize: CGFloat - if size.width > 330.0 { + if min(size.width, size.height) > 330.0 { fontSize = 24.0 sidePadding = 38.0 } else { @@ -91,28 +91,32 @@ final class PermissionContentNode: ASDisplayNode { let titleSize = self.titleNode.updateLayout(CGSize(width: size.width - sidePadding * 2.0, height: .greatestFiniteMagnitude)) let textSize = self.textNode.updateLayout(CGSize(width: size.width - sidePadding * 2.0, height: .greatestFiniteMagnitude)) - let buttonHeight = self.actionButton.updateLayout(width: size.width, transition: transition) + let buttonWidth = min(size.width, size.height) + let buttonHeight = self.actionButton.updateLayout(width: buttonWidth, transition: transition) let privacyButtonSize = self.privacyPolicyButton.measure(CGSize(width: size.width - sidePadding * 2.0, height: .greatestFiniteMagnitude)) - let titleSubtitleSpacing: CGFloat = 26.0 - let buttonSpacing: CGFloat = 36.0 - let privacySpacing: CGFloat = 45.0 + let availableHeight = floor(size.height - insets.top - insets.bottom - titleSize.height - textSize.height - buttonHeight) + + let titleSubtitleSpacing: CGFloat = max(15.0, floor(availableHeight * 0.055)) + let buttonSpacing: CGFloat = max(19.0, floor(availableHeight * 0.075)) var contentHeight = titleSize.height + titleSubtitleSpacing + textSize.height + buttonHeight + buttonSpacing var imageSize = CGSize() var imageSpacing: CGFloat = 0.0 - if let icon = self.iconNode.image { - imageSpacing = 60.0 + if let icon = self.iconNode.image, size.width < size.height { + imageSpacing = floor(availableHeight * 0.12) imageSize = icon.size contentHeight += imageSize.height + imageSpacing } + + let privacySpacing: CGFloat = max(30.0 + privacyButtonSize.height, (availableHeight - titleSubtitleSpacing - buttonSpacing - imageSize.height - imageSpacing) / 2.0) let contentOrigin = insets.top + floor((size.height - insets.top - insets.bottom - contentHeight) / 2.0) let iconFrame = CGRect(origin: CGPoint(x: floor((size.width - imageSize.width) / 2.0), y: contentOrigin), size: imageSize) let titleFrame = CGRect(origin: CGPoint(x: floor((size.width - titleSize.width) / 2.0), y: iconFrame.maxY + imageSpacing), size: titleSize) let textFrame = CGRect(origin: CGPoint(x: floor((size.width - textSize.width) / 2.0), y: titleFrame.maxY + titleSubtitleSpacing), size: textSize) - let buttonFrame = CGRect(origin: CGPoint(x: 0.0, y: textFrame.maxY + buttonSpacing), size: CGSize(width: size.width, height: buttonHeight)) - let privacyButtonFrame = CGRect(origin: CGPoint(x: floor((size.width - privacyButtonSize.width) / 2.0), y: buttonFrame.maxY + privacySpacing), size: privacyButtonSize) + let buttonFrame = CGRect(origin: CGPoint(x: floor((size.width - buttonWidth) / 2.0), y: textFrame.maxY + buttonSpacing), size: CGSize(width: buttonWidth, height: buttonHeight)) + let privacyButtonFrame = CGRect(origin: CGPoint(x: floor((size.width - privacyButtonSize.width) / 2.0), y: buttonFrame.maxY + floor((privacySpacing - privacyButtonSize.height) / 2.0)), size: privacyButtonSize) transition.updateFrame(node: self.iconNode, frame: iconFrame) diff --git a/TelegramUI/SettingsController.swift b/TelegramUI/SettingsController.swift index 43668b288a..d72344e44b 100644 --- a/TelegramUI/SettingsController.swift +++ b/TelegramUI/SettingsController.swift @@ -777,7 +777,12 @@ public func settingsController(account: Account, accountManager: AccountManager) actionsDisposable.dispose() } - let icon = UIImage(bundleImageName: "Chat List/Tabs/IconSettings") + let icon: UIImage? + if (useSpecialTabBarIcons()) { + icon = UIImage(bundleImageName: "Chat List/Tabs/NY/IconSettings") + } else { + icon = UIImage(bundleImageName: "Chat List/Tabs/IconSettings") + } let controller = ItemListController(account: account, state: signal, tabBarItem: combineLatest((account.applicationContext as! TelegramApplicationContext).presentationData, notificationsAuthorizationStatus.get(), notificationsWarningSuppressed.get()) |> map { presentationData, notificationsAuthorizationStatus, notificationsWarningSuppressed in let notificationsWarning = shouldDisplayNotificationsPermissionWarning(status: notificationsAuthorizationStatus, suppressed: notificationsWarningSuppressed) diff --git a/TelegramUI/TelegramController.swift b/TelegramUI/TelegramController.swift index e50adafe58..d8ffb90e7e 100644 --- a/TelegramUI/TelegramController.swift +++ b/TelegramUI/TelegramController.swift @@ -154,9 +154,17 @@ public class TelegramController: ViewController { switch locationBroadcastPanelSource { case let .peer(peerId): self.locationBroadcastMode = .peer - signal = liveLocationManager.summaryManager.peersBroadcastingTo(peerId: peerId) - |> map { peersAndMessages in - let peers = peersAndMessages?.map { $0.0 } + signal = combineLatest(liveLocationManager.summaryManager.peersBroadcastingTo(peerId: peerId), liveLocationManager.summaryManager.broadcastingToMessages()) + |> map { peersAndMessages, outgoingMessages in + var peers = peersAndMessages?.map { $0.0 } + for message in outgoingMessages.values { + if message.id.peerId == peerId, let author = message.author { + if peers == nil { + peers = [] + } + peers?.append(author) + } + } return (peers, nil) } default: diff --git a/TelegramUI/WebSearchGalleryController.swift b/TelegramUI/WebSearchGalleryController.swift index 3bf9fb8cbd..072abe3ee7 100644 --- a/TelegramUI/WebSearchGalleryController.swift +++ b/TelegramUI/WebSearchGalleryController.swift @@ -55,6 +55,8 @@ final class WebSearchGalleryControllerPresentationArguments { } class WebSearchGalleryController: ViewController { + private static let navigationTheme = NavigationBarTheme(buttonColor: .white, disabledButtonColor: UIColor(rgb: 0x525252), primaryTextColor: .white, backgroundColor: .clear, separatorColor: .clear, badgeBackgroundColor: .clear, badgeStrokeColor: .clear, badgeTextColor: .clear) + private var galleryNode: GalleryControllerNode { return self.displayNode as! GalleryControllerNode } @@ -98,7 +100,7 @@ class WebSearchGalleryController: ViewController { self.presentationData = account.telegramApplicationContext.currentPresentationData.with { $0 } - super.init(navigationBarPresentationData: NavigationBarPresentationData(theme: GalleryController.darkNavigationTheme, strings: NavigationBarStrings(presentationStrings: self.presentationData.strings))) + super.init(navigationBarPresentationData: NavigationBarPresentationData(theme: WebSearchGalleryController.navigationTheme, strings: NavigationBarStrings(presentationStrings: self.presentationData.strings))) self.controllerInteraction = WebSearchGalleryControllerInteraction(dismiss: { [weak self] animated in self?.dismiss(forceAway: false)