From 0e5f42defef404b753f0669820f1494c665027db Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Thu, 27 Sep 2018 11:07:34 -0400 Subject: [PATCH] Use new asset for default contact avatars. --- .../contact-avatar.imageset/Contents.json | 23 ++++++++++++++++++ .../contact-avatar.imageset/profile-28@1x.png | Bin 0 -> 1428 bytes .../contact-avatar.imageset/profile-28@2x.png | Bin 0 -> 1671 bytes .../contact-avatar.imageset/profile-28@3x.png | Bin 0 -> 2075 bytes .../utils/OWSContactAvatarBuilder.m | 22 +++++++++++------ 5 files changed, 38 insertions(+), 7 deletions(-) create mode 100644 Signal/Images.xcassets/contact-avatar.imageset/Contents.json create mode 100644 Signal/Images.xcassets/contact-avatar.imageset/profile-28@1x.png create mode 100644 Signal/Images.xcassets/contact-avatar.imageset/profile-28@2x.png create mode 100644 Signal/Images.xcassets/contact-avatar.imageset/profile-28@3x.png diff --git a/Signal/Images.xcassets/contact-avatar.imageset/Contents.json b/Signal/Images.xcassets/contact-avatar.imageset/Contents.json new file mode 100644 index 000000000..731480b4c --- /dev/null +++ b/Signal/Images.xcassets/contact-avatar.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "profile-28@1x.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "profile-28@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "profile-28@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Signal/Images.xcassets/contact-avatar.imageset/profile-28@1x.png b/Signal/Images.xcassets/contact-avatar.imageset/profile-28@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..6064b87bc95fed4af3eb11fd9d20fce5aafb91b9 GIT binary patch literal 1428 zcmeAS@N?(olHy`uVBq!ia0vp^G9b*s1|*Ak?@s|zEa{HEjtmSN`?>!lvI6;>1s;*b z3=G`DAk4@xYmNj^jY?)nL`j6Nk5zJhu3lnFep0GlMQ#C5H3Nf9g%yyQn_7~nP?4LH zS8P>bs{~eI1!RMS^_3LBN=mYAl_Got6rA&mQWZ?~O!N$t?6?#Z6l{u8(yW49+@RWl zJX@uVl9B=|ef{$Ca=mh6z5JqdeM3u2OML?)eIp}XpbFjM%Dj@q3f;V7Wr!g#b6ir3 zlZ!G7N;32F6hP)CCgqow*eWT3EP?}wJ4-Ut5H{r%L%jv`pgu@O-%!s$ADgz+icB2Z zKr%SBr6j|BRZv=#1NKu&vVLk#YHn&?Nik5LAy(^vVGGxY;>e1`0*GbcK!o_s2IO+9 zpw#00oKjE_gyvx zocyBTg2d!hki)=Qkc7}xgRP0gWet)9lE#!|tK!n6tkmQZq}T$+8941bC8p~m3ESvn zRc!-I30A)ODVb@NE{P?nc18w<7PC`Jdk4a-q_vYmY9>20aU?cO zbxEBxz4ht&nz9?IMv{-$TTNKDlAZC0WYOE&C7dGP9x^`NVf;|qbm@XMK3vyZZH%`E zb$Py?rDU+pYtEC|rmkxY=VZC4nMNJndnjaa;1owE{r0;ipQ2`*+PLD@N~82|5l?Ct zd|+#{{IT=p_1FVdQ&MBb@0DDf=I{*Lx literal 0 HcmV?d00001 diff --git a/Signal/Images.xcassets/contact-avatar.imageset/profile-28@2x.png b/Signal/Images.xcassets/contact-avatar.imageset/profile-28@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..82223704a4974ab7069c0cc3a96750fb8452e140 GIT binary patch literal 1671 zcmeAS@N?(olHy`uVBq!ia0vp^79h;Q1|(OsS<3+_mUKs7M+SzC{oH>NS%G}c0*}aI z1_o|n5N2eUHAe!dMkO;Oq9nrC$0|8LS1&OoKPgqOBDVmjnt{Ql!V1XDO)W`OsL0L9 zE4HezRRXK90GK4GQ<#=IWDQi z$wiq3C7Jno3LtY6lk!VTY?YKi7Qq3;oh6xR2%GYXq22;|P#+|tZ>VRWk4;-@MJ5hy zAQ_z6Qj+1mDkv?=0sAQ>SwA%=H8(Y{q!_5r5UX{-u!U5qmNYrU88e; zPJU5vL1J<$$YEeDNJ8kU!PZ3LvIa>4Nn=W~RdH!jR%&tyQfvX^44n3z64UjOgl+V( zsl~JOS}BvGB7ay z^mK6y$zXju!_e=rgMjN}AkSfzh>3`Y$&>?}8kYsQ&N-gtoNy`l2}ejwgD}e}la97F zKE{;-BF}g?sfxI6d-`X?Yy;)mwL#2|7ZyzL(8@ z`Wwj_<)wd}C;9$Ducqgu^>2PZm29wf?O&nu#{BP6#l<((q^1O(wa6=;b+P$c%jrt? zK;}zJW2b#~n=@TIBsb)#eRx{K(+#sHt4z7R=dNx!YiuOnX;n_s1xqw1xo~E@o}-nr zb4t2F{1MR!n_|2iSZCO@3tiY2ziPtMAf{XQfY7+>95v%L3bBhS&VvT z3SWS1N#n7Mz{H(v-P|vgOjQwiy~x|dv0gOnbXM8wFA=}ZMP4ix7tva??cY%Y&*&Fg zB3FBMUGrZ3ZRV_b9-AKaC@tJC<@Y`EwXw+F3o5K%t5X9)@12}8U6r$9&z9|%N(H{h zG2Yt3l<{^9d|+)!ab;JmA~G e{LaCEeIKKJ&+}7rb_mphss>M2KbLh*2~7a+gF=!3 literal 0 HcmV?d00001 diff --git a/Signal/Images.xcassets/contact-avatar.imageset/profile-28@3x.png b/Signal/Images.xcassets/contact-avatar.imageset/profile-28@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..6cc4daf0540c5f3c45e6df7b358ac88cdb4240ad GIT binary patch literal 2075 zcmeAS@N?(olHy`uVBq!ia0vp^At21b1|(&&1r7o!mUKs7M+SzC{oH>NS%G}c0*}aI z1_o|n5N2eUHAe!dMkO;Oq9nrC$0|8LS1&OoKPgqOBDVmjnt{Ql!V1XDO)W`OsL0L9 zE4HezRRXK90GK4GQ<#=IWDQi z$wiq3C7Jno3LtY6lk!VTY?YKi7Qq3;oh6xR2%GYXq22;|P#+|tZ>VRWk4;-@MJ5hy zAQ_z6Qj+1mDkv?=0sAQ>SwA%=H8(Y{q!_5r5UX{-u!U4Nn=W~RdH!jR%&tyQfvX^44n3z64UjOgl+V( zsgx1hC_3uYQ}wz`)$= z>Eakt!T5Hzb+$;LL|gfl1cv}_eT}B6N?i&ZT#uG+2yyYaV07aK$D-c<3aS5`xU`kU z#G;l7s3s&P2dIQO1}+xU;^2DqYmbp;jM*;Z>Sw3locn$7bmH}y??26%e6v_GT6Z?* zj0OyJKtb@tt7$pA@5VX%9luanBJuW&>*cD+uQ}hwnoLi%L|vcIG^^ehfvvF7Eyjc(2%A019yNQvxA&v=Yk!3m&e?w_ z`$yd|8jWzV=JPT_j_5T-@L$nuY%y?ydH0X>$H`}VG zDO*~P^{}nlS_z?h`!cwDGZ%F3HkZnH^rgD!`n#8_T*O_Ouhyk)$($vY=F1>;tMj76 z*2{9a3k?@HzPh1w%PG0)<;)$`&h8oemd*2uIlTXluj{(UQ$1dAggWHk?{soH{at;% zddbd7tFtTDO#N58V_*7`UmPl_)0slrORNICbI;l=34ZQy>G%mv_m`XW54^f?PTxw0 z+4CY(iALN}&iQ74`Rx)+&97~2ExWbVa?Rf}Pi=ko>#*@4MF(5);O_%Rxp$V-ec?Fkp06YP zxxbZ(brHinSM>>D&Qi6ZGu%GPRCT;#EZ^6qaJMFmPo(2FXANVl%kN#Pf*%6irP zry_T%SN{3>w#B8)_(uMs$)Y^JJf`z=m>o1O+cn!2uhG4aYN_XD(naI3HeQ!*wOywOIF$ z7N5a&p%f`zZ6Cvs+{=|~f8E(E%GUL~_=U%LLALKsS64)FM@lXbZdKy>cCpT{wx@80>bR|EGI?bSaDY19=H3#AHosCi% rNlcx0D_cNxSvr$i0tUK}!L*-o_kQiOn>=>B2UXXeu6{1-oD!M<&>#DE literal 0 HcmV?d00001 diff --git a/SignalMessaging/utils/OWSContactAvatarBuilder.m b/SignalMessaging/utils/OWSContactAvatarBuilder.m index d0cd2b4a8..57230dc6a 100644 --- a/SignalMessaging/utils/OWSContactAvatarBuilder.m +++ b/SignalMessaging/utils/OWSContactAvatarBuilder.m @@ -129,16 +129,24 @@ NS_ASSUME_NONNULL_BEGIN initials = [[initials substringWithRange:stringRange] mutableCopy]; } - if (initials.length == 0) { - // We don't have a name for this contact, so we can't make an "initials" image - [initials appendString:@"#"]; - } - UIColor *color = [UIColor ows_conversationColorOrDefaultForColorName:self.colorName].themeColor; OWSAssertDebug(color); - UIImage *_Nullable image = - [OWSAvatarBuilder avatarImageWithInitials:initials backgroundColor:color diameter:self.diameter]; + UIImage *_Nullable image; + if (initials.length == 0) { + // We don't have a name for this contact, so we can't make an "initials" image. + + UIImage *icon = [UIImage imageNamed:@"contact-avatar"]; + // The contact-avatar asset is designed for the kStandardAvatarSize. + // Adjust its size to reflect the actual output diameter. + CGFloat scaling = self.diameter / (CGFloat)kStandardAvatarSize; + CGSize iconSize = CGSizeScale(icon.size, scaling); + image = + [OWSAvatarBuilder avatarImageWithIcon:icon iconSize:iconSize backgroundColor:color diameter:self.diameter]; + } else { + image = [OWSAvatarBuilder avatarImageWithInitials:initials backgroundColor:color diameter:self.diameter]; + } + if (!image) { OWSFailDebug(@"Could not generate avatar."); return nil;