From d0b3f8be81cf6ef10cee654949ff78a6d734bee8 Mon Sep 17 00:00:00 2001 From: Igor Zhukov Date: Thu, 22 Oct 2015 23:02:12 +0200 Subject: [PATCH] Supported message views --- app/img/icons/Checks1.png | Bin 362 -> 0 bytes app/img/icons/Checks1_2x.png | Bin 535 -> 0 bytes app/img/icons/Checks2.png | Bin 469 -> 0 bytes app/img/icons/Checks2_2x.png | Bin 713 -> 0 bytes app/img/icons/General.png | Bin 6939 -> 7436 bytes app/img/icons/General_2x.png | Bin 14947 -> 15831 bytes app/img/icons/Major.png | Bin 0 -> 2148 bytes app/img/icons/Major_2x.png | Bin 0 -> 3848 bytes app/js/directives.js | 27 +++++++ app/js/filters.js | 17 +++++ app/js/messages_manager.js | 119 ++++++++++++++++++++++++++---- app/js/services.js | 3 + app/less/app.less | 75 ++++++++++++++++--- app/less/desktop.less | 69 ++++++++++------- app/less/mobile.less | 11 ++- app/partials/desktop/message.html | 8 ++ app/partials/mobile/message.html | 5 ++ 17 files changed, 281 insertions(+), 53 deletions(-) delete mode 100755 app/img/icons/Checks1.png delete mode 100644 app/img/icons/Checks1_2x.png delete mode 100755 app/img/icons/Checks2.png delete mode 100644 app/img/icons/Checks2_2x.png create mode 100644 app/img/icons/Major.png create mode 100644 app/img/icons/Major_2x.png diff --git a/app/img/icons/Checks1.png b/app/img/icons/Checks1.png deleted file mode 100755 index 35b72decb5a18c9c9621eba656dbef1d3a33d803..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 362 zcmV-w0hRuVP)P?VgAAvXsmtk-NK`sDdW-NxWLA?p`?k}ie zm+?7(38+a0NS_Dd$yns)1F;j7od`5+A0Z!sTxbu(qClJpG`s@IbuBB+b!KdMT8i4m2!_*wnxR^9~S8K)tsRNq!R$=aQ1};mHOXo2P+T6)JZYh;4zc z`%adDP(!VO)HWdg48-O@!=5sb2rv>hG)Mdb8g`R`3;+;d0EW+9l3kzA{{R3007*qo IM6N<$f~$*&HUIzs diff --git a/app/img/icons/Checks1_2x.png b/app/img/icons/Checks1_2x.png deleted file mode 100644 index 86c6f6a8a958670fa9f4b6071ffad991284e7343..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 535 zcmV+y0_gpTP)P12qtV zMoqhb0LhbX*FXiV$?JFGPHN#L+nW?(U=F&q@v|hq|841+Fc5?>ZTtcKYVGHeTsKex z)6kp6H3Kl8q76bU*W@a^a-4t=yulM3XPDm(D^RRyAreRP{f^EXn37|aRCP<5xk}rV zIZkZDOd-q2F>tME^{@&)P4kJSx7Qd9@$|L{1H%y4boF-%L#YrJ&52v+A^B&aUCgP0 zD=Dshs1?mG9nLw|TdZH|#WH0;#i>;DE|iHDNSU8dPY#dSwAp<6zyXXyx|`dw_D@Kj zF!c-drqMQ_2}V=&SrSJK?;kRD!euzq#wziGIlqy&vK~>AgOAyJxAQVDyU8eu65Twr$Aya3i-l(0)3THm*iLq1 zNMn(5uGeu)1GGNYH!ub}9UIb^qg+D0GL$JvM#SeW$7rEv&yYXG5Jvf91 zU5_DXK>@Q?JW{WV1A~fp;C(-ZOSpnp7|_9#+L^h?35{KbNBxL#2a7NYJu(XwGx+OP z{JPjgpQN0@yB`U?Ny)=1+Wx=y%nW^Ij`BGeiD_w=i0^I3mjD9*oCCfiJxdWZ00000 LNkvXXu0mjfsO-Pu diff --git a/app/img/icons/Checks2_2x.png b/app/img/icons/Checks2_2x.png deleted file mode 100644 index 233b82825d22948d1c48f6e8ca785ce0bdc72aa7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 713 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 RxcVUlQc=*5FO@a({~x$ze)j+X delta 6322 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 v`=8?D8KZt_4Nz84m#>mFfBF9aF$X2p literal 14947 zcmbVz1z42Z*6<89gi0x0(p^&064Kq>AQD5Tq;z*kE1g5v(2amf4vmD=&=QKkKX}hQ z_k8!e=YG%g^SpcZ+WXyW?OJ=ktB6!pmU)Otf(ZZs9?Ho|sUvb#001o?9Ss3pX{^K{ zGGaGrT{jJ|wVS7zixuF7CD`1GO3uN|#!B7F%+lL=#7Y4I9R!vQF%GoJGu&biBSKhD~N#at2wBtem8Nm6QTacpmdc~ zsU*QJR#d#~&)6(DxwxqK_}IC4c=`CaSgE)pCC6s)gOP_~M_(aap|?j}Nw80kNz;NbKpSx47DmI<+79A0Kl99-<2_fz_3 zLnWpE-qgY2&(^MP>Q?_6?|&rhs_E@y#i4HH3U+s~Kx~{f&3#u+f|4#)W^P~?O)%L0 zpR1_)3hV}UeFb)+lGNa%V$`v9v;=#)GW~9^q$DWk=;~(XXkjHMB|?p$z;0`6DJU%^ z_42v2qy#rFKMxm|G_L^n3rR^{P6-}P$(Pc+FFF5-D+RW2cd&AF`zNmDzi=i07WbYN z9Gnn6OIf+tdRSS$bOAe1{hqR*?ca~(`QOs}1K0BJ$MWKDaXAo!;ke(}zijkBs}S6C z5B|xvh{B(YZ{>*Kb{7O&BjY{$3IOoU$w|G?^jd)DfHI!U{22TsuLZ27#f*~r5J<-d zF%On7@5eKkCYsCt0*lR$91Mtwn2hh=cRTm_S^H|4>jc01`1p8Kxp4&!5Qs;Gc%%bSWDyVU zJq%R;4F^63;^kw#Cgl$j2{Xp!kDM_T>hTD1z}!dO2ks;7V%hoD z@}+3vnHZsLho{&BwaXrwh4=aw_cXG&+LPNWIjp{YcY57o3e^J44uK@lAy`f%%VTgv?ZSeAw9z zsskXTX8SFe$BeLww(5`N;U{*m2QVNz5DsX^xZqe$vSvH!=7K0F@w}5mPH`OSgV3vGV10kb38fy<`JZZ{Sc{+Og7gFe2%qyiZ;gXf%H34?Il<)CIHQ(vQ@U)=?`8RAgn z*+H~GogOqnftXaa&!L$}{Q_5?qD!e81TXXHmNE&+qwN;xm9WXGPw8x9Ib>1uFFHG!0~YY-nzTqL zu6$EfM*0tSUmBSGk|1RS>n}(7GKtI?C_IEO8r-a1FV8?Z2+Askgv&a0ziVaFrgyh} zkiHd$6TY8NCQIUlHqPl9J%o8^oNxI1P1BRUDX|LJJPX|$ye{dN>!g8;Z;jKC05e9G zR?5j2%5Dw(OdbX|J1ka&>szI^y&r0{o1%}LA~!{$iaJ{G+D#|m37T%c412BGwemWh z(!Nr#spif8=GMGxvcS1x%j^Z?;K!tkZlg)Y&a8{8L-|+j;5mh=`RBhvM&8$?l@Ic- zC{bfo^cAXHy_p2Wx*N?JReT&>XIk^AY`503RrEe*J3l{tB4=d_!Uy=$VN{*HCZEA> zo=1s&0d5?4xvXVm1pQ9mDZnxUcd&hrJ5TFaz3@J1)j9g8Dx|6J+p5OF0=@cf#gFJN z^(pIdCA_tl^Z-Ykih#hEYm{9grCM_|7$WDB0W(p>#k9$AM{`=dee1D{EQePpxvwS_ z!1OtmI`{ygp^-1`lz!EU@Pk|X9`o~2_+^rEQ$0pt?e~fByfT)f%+j z`DJdrs6nYU^sE3Q@JtEtMr?#^;${=ey*7}{Kg$QnujO^r*Fsw`vt-ewA3h*9CH46$ zLw4wvnmhb>ab{EJmbB{3zW6F?#RVreQBD{dNlam*x)mIfO1$B=fmS<4uS&b%uK73RD!F4exN9VEzdsClF4|+fms&? zyKZ_)SfZg%MMCY2%zBZfJxhS9ZGu~2HpycItF^^~lPo#Nvnf%8adxcp(p$* z#B!ZSeeu?W*CeK1^jOSm-egO%x%b*%Yn*Un3^dvlH1Ir-VWVfN;>KkLa1z~7^|Y

sLhr4aPfczbFYom=DwS$LOjKvO~sY)C1j6! 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 G`2PXH7s@vP diff --git a/app/img/icons/Major.png b/app/img/icons/Major.png new file mode 100644 index 0000000000000000000000000000000000000000..031b82c14690b16bad811a5ff00da239eb197deb GIT binary patch literal 2148 zcmaJ?dpMN&9)Hasm$XTQ!+H(2R?G!6lVQeXE=(CAk!3MvUJPd5F*6ueF}r*ADXmUt zT~cdZ3#qg#S>cqN)yid3sa%pd;?YebJtbi}uQu)eah&&g-}iTUKA+F``~7`C&+|JJ z6zFGUU}*pVfDzlD5rT~7$fwZLMgAk7W=WC3LdM)D+XKhTGPn{5@ZrO85XcsC6QB@? z%g;=`4tW9q8Y2kZC)>vfpzvTJmb-$%%7tQt4FH~Aaxs^e49UPaC_x~iV$^L{Fra`> z#e@?%c#fD3B?|nrB+#C$z))URGS8il@uGpAatb0Kgk)S$E=&afE`hi*SP}}uDXXU#lnBdUX(B8J z>3c}vws3)n4`)a}e~;&IC~T2b#uf1(HiL>m6tDsTpF;L!km)XDGMPm7B@mcI9~PeF zvx7`$5SdI@mYdHimjUzAgpf$K%H{vb-LWQj#R@_(5}5%>1nCf;C4q(D`;sYwwR0h^ zsrP})Upp7lnp_-`3~r^de`)mU7UG_j=||fli;u>KM2OoZh^^~=$;JSnJ;Y}Cgvv*r zeE}!#g{)|8x0_DyNmLpOtNYeRqV1OO%c`1FtcW~He%)q%WyQgq&ukC43}RAZV<*<- z@8krV91HAUsARmhtqeQ5Sl#x$twt;DL{8q9<+Y3VQ`>)%Qm5}rU4|Ds|J^n=pHVh_ z`N}-?%D9?3KRK8}OMwy{I!3)6@Ve$3mULt&>kf7-S**;jh|!%e>aYUI!W3Y(9k27o zA9F?_rv&#YvMB@W`=nq-5@A?VL#yrxiS@$&HaD(|jzRa{*REG^uovb=B)Pl0(#nDT zmpQt_%~q*JLppbp^SDHbFhIW$B|SI$w~Sapz@%cCCK~{fdnZocEtx>o8o7~ce%yv% zxHeyK40l}9SipAB>1lLGI5YO(5kHKj_!{4Reysf=pWwSH1FW;7FMwh*l{iu5j>VNNPgpiLe9dgy4x zGl5Ev?!gePi$))vemwd^yJ^X`rY9G^X?)>@j@qF&W^1g`3jNP$y5JeR$fG*#R<<>d zOuYeU(_V;0d1esvNp#(45e&jJ3uex3$pzyG6I5 zY4g^nmN&2yCM7lsN%14lQ3B#Z7NW7EnPocoJ0i&GGZUK9^Rzv0cvGO-T$tLQHhweo z@hmW#cWct#Xc_P{v_d~XEtG%a{Mc)$amwrS_5ddr6iXFMt+sWWebFBlOY7{6*z#lW zqh>VmXTfU^v?ek5>cIM{e{PtxE9!UTKOJReZ+vAkTgcccoIKT|Z{;yn+~00rTKVV* z>R~SFr+6obpsdiBn?Ao(%;~hKffqLo#5t5Z(bkpT)S5~%*RS=~90;~qcAV?wif%LP z=M_}$R&PA$1+mwYtvJ;nK*hRP@BeMlM|v8_$vz2tRWQ!fL3r*=j0#(VG1 zua`f!h8=P|%CsjoL~`#|9+y2~jao2NbX8M#q;>rjQvXSIb4@)S#i~&6H9Zj7U$g)4 zz&V}EZ{vphOe>YZWS?O<+Aeo0xTWsF>-lp7QQyMK=`%5o{MwQ6GHr2cLwt8QTMqC; zD!0o!ZBFrD))Zw=cQ0bTk(;$Tbhw7iy|OWwJ=;gme0Mh8xI3Y0)MRS^Y{Ve>i_}5X zm%)Z-4~7E2?&$qThN4{Yl&jYgW;ztSbd{?p%2sc`bEIxMzewFVoR2%9zLcT}>QNbB zoqp~rdvRi>GyoMH7hLexbK{olMd6C9T)28~?eO$lqxAB+9IKLInx3(y=G}>zYR?!H zs48esZzk++8Jc~y>2jW2e<)?AAL8=wbB&R*RqwWncjsyW1hrD9_PeiISMGf_Gmz2X I8~gQt0lBAcw*UYD literal 0 HcmV?d00001 diff --git a/app/img/icons/Major_2x.png b/app/img/icons/Major_2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e47c379c9d4405ab0df925f35aa6118b1342f5a7 GIT binary patch literal 3848 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 literal 0 HcmV?d00001 diff --git a/app/js/directives.js b/app/js/directives.js index 4e019468..19bf9232 100755 --- a/app/js/directives.js +++ b/app/js/directives.js @@ -502,6 +502,33 @@ angular.module('myApp.directives', ['myApp.filters']) } }) + .directive('myMessageViews', function($filter, AppMessagesManager) { + + var formatNumberFilter = $filter('formatShortNumber'); + + return { + link: link + }; + + function updateHtml (views, element) { + element.html(formatNumberFilter(views)); + } + + function link ($scope, element, attrs) { + var mid = $scope.$eval(attrs.myMessageViews); + // console.log(element[0], mid); + var views = AppMessagesManager.getMessage(mid).views || 0; + + updateHtml(views, element); + + $scope.$on('message_views', function (e, viewData) { + if (viewData.mid == mid) { + updateHtml(viewData.views, element); + } + }) + } + }) + .directive('myReplyMarkup', function() { return { diff --git a/app/js/filters.js b/app/js/filters.js index 4ac33311..be7dbbc8 100644 --- a/app/js/filters.js +++ b/app/js/filters.js @@ -199,6 +199,23 @@ angular.module('myApp.filters', ['myApp.i18n']) } }) + .filter('formatShortNumber', [function () { + return function (num) { + if (!num) { + return '0'; + } + else if (num < 1000) { + return num.toString(); + } + else if (num < 900000) { + var mult = num > 10000 ? 1 : 10; + return (Math.round(num / 1000 * mult) / mult) + 'K'; + } + var mult = num > 10000000 ? 1 : 10; + return (Math.round(num / 1000000 * mult) / mult) + 'M'; + } + }]) + .filter('nl2br', [function () { return function (text) { return text.replace(/\n/g, '
'); diff --git a/app/js/messages_manager.js b/app/js/messages_manager.js index 5d1c2954..b7210808 100644 --- a/app/js/messages_manager.js +++ b/app/js/messages_manager.js @@ -31,6 +31,10 @@ angular.module('myApp.services') var needSingleMessages = [], fetchSingleMessagesTimeout = false; + var incrementedMessageViews = {}, + needIncrementMessageViews = [], + incrementMessageViewsTimeout = false; + var serverTimeOffset = 0, timestampNow = tsNow(true), midnightNoOffset = timestampNow - (timestampNow % 86400), @@ -421,6 +425,28 @@ angular.module('myApp.services') return fullMsgID % fullMsgIDModulus; } + function splitMessageIDsByChannels (mids) { + var msgIDsByChannels = {}; + var midsByChannels = {}; + var i, mid, msgChannel, channelID; + for (i = 0; i < mids.length; i++) { + mid = mids[i]; + msgChannel = getMessageIDInfo(mid); + channelID = msgChannel[1]; + if (msgIDsByChannels[channelID] === undefined) { + msgIDsByChannels[channelID] = []; + midsByChannels[channelID] = []; + } + msgIDsByChannels[channelID].push(msgChannel[0]); + midsByChannels[channelID].push(mid); + } + + return { + msgIDs: msgIDsByChannels, + mids: midsByChannels + }; + } + function fillHistoryStorage (inputPeer, maxID, fullLimit, historyStorage) { // console.log('fill history storage', inputPeer, maxID, fullLimit, angular.copy(historyStorage)); return requestHistory (inputPeer, maxID, fullLimit).then(function (historyResult) { @@ -1094,6 +1120,7 @@ angular.module('myApp.services') random_id: randomIDS, reply_to_msg_id: replyToMsgID, entities: entities, + views: asChannel && 1, pending: true }; @@ -1252,6 +1279,7 @@ angular.module('myApp.services') media: media, random_id: randomIDS, reply_to_msg_id: replyToMsgID, + views: asChannel && 1, pending: true }; @@ -1435,6 +1463,7 @@ angular.module('myApp.services') media: media, random_id: randomIDS, reply_to_msg_id: replyToMsgID, + views: asChannel && 1, pending: true }; @@ -1503,6 +1532,13 @@ angular.module('myApp.services') var len = mids.length; var i, mid, msgID; var fromChannel = getMessageIDInfo(mids[0])[1]; + var isChannel = AppPeersManager.isChannel(peerID); + var asChannel = isChannel ? true : false; + + if (asChannel) { + flags |= 16; + } + for (i = 0; i < len; i++) { msgIDs.push(getMessageLocalID(mids[i])); randomIDs.push([nextRandomInt(0xFFFFFFFF), nextRandomInt(0xFFFFFFFF)]); @@ -1888,21 +1924,8 @@ angular.module('myApp.services') var mids = needSingleMessages.slice(); needSingleMessages = []; - var msgIDsByChannels = {}; - var midsByChannels = {}; - var i, mid, msgChannel, channelID; - for (i = 0; i < mids.length; i++) { - mid = mids[i]; - msgChannel = getMessageIDInfo(mid); - channelID = msgChannel[1]; - if (msgIDsByChannels[channelID] === undefined) { - msgIDsByChannels[channelID] = []; - midsByChannels[channelID] = []; - } - msgIDsByChannels[channelID].push(msgChannel[0]); - midsByChannels[channelID].push(mid); - } - angular.forEach(msgIDsByChannels, function (msgIDs, channelID) { + var splitted = splitMessageIDsByChannels(mids); + angular.forEach(splitted.msgIDs, function (msgIDs, channelID) { var promise; if (channelID > 0) { promise = MtpApiManager.invokeApi('channels.getMessages', { @@ -1920,7 +1943,48 @@ angular.module('myApp.services') AppChatsManager.saveApiChats(getMessagesResult.chats); saveMessages(getMessagesResult.messages); - $rootScope.$broadcast('messages_downloaded', midsByChannels[channelID]); + $rootScope.$broadcast('messages_downloaded', splitted.mids[channelID]); + }) + }) + } + + function incrementMessageViews () { + if (incrementMessageViewsTimeout !== false) { + clearTimeout(incrementMessageViewsTimeout); + incrementMessageViewsTimeout = false; + } + if (!needIncrementMessageViews.length) { + return; + } + var mids = needIncrementMessageViews.slice(); + needIncrementMessageViews = []; + + var splitted = splitMessageIDsByChannels(mids); + angular.forEach(splitted.msgIDs, function (msgIDs, channelID) { + console.log('increment', msgIDs, channelID); + MtpApiManager.invokeApi('messages.getMessagesViews', { + peer: AppPeersManager.getInputPeerByID(-channelID), + id: msgIDs, + increment: true + }).then(function (views) { + if (channelID) { + var mids = splitted.mids[channelID]; + var updates = []; + for (var i = 0; i < mids.length; i++) { + updates.push({ + _: 'updateChannelMessageViews', + channel_id: channelID, + id: mids[i], + views: views[i] + }); + } + ApiUpdatesManager.processUpdateMessage({ + _: 'updates', + updates: updates, + chats: [], + users: [] + }); + } }) }) } @@ -1970,7 +2034,17 @@ angular.module('myApp.services') curMessage._ = 'message'; } + if (curMessage.views && + !incrementedMessageViews[curMessage.mid]) { + incrementedMessageViews[curMessage.mid] = true; + needIncrementMessageViews.push(curMessage.mid); + if (incrementMessageViewsTimeout === false) { + incrementMessageViewsTimeout = setTimeout(incrementMessageViews, 10000); + } + } + if (prevMessage && + // !curMessage.views && curMessage.fromID == prevMessage.fromID && !prevMessage.fwdFromID == !curMessage.fwdFromID && !prevMessage.action && @@ -2597,6 +2671,19 @@ angular.module('myApp.services') $rootScope.$broadcast('history_reload', peerID); }); break; + + case 'updateChannelMessageViews': + var views = update.views; + var mid = getFullMessageID(update.id, update.channel_id); + var message = getMessage(mid); + if (message && message.views && message.views < views) { + message.views = views; + $rootScope.$broadcast('message_views', { + mid: mid, + views: views + }); + } + break; } }); diff --git a/app/js/services.js b/app/js/services.js index 8ce6dde0..0baf8966 100755 --- a/app/js/services.js +++ b/app/js/services.js @@ -786,6 +786,9 @@ angular.module('myApp.services', ['myApp.i18n', 'izhukov.utils']) } function getInputPeerByID (peerID) { + if (!peerID) { + return {_: 'inputPeerEmpty'}; + } if (peerID < 0) { var chatID = -peerID; if (!AppChatsManager.isChannel(chatID)) { diff --git a/app/less/app.less b/app/less/app.less index e523b51c..6d3a1bc1 100644 --- a/app/less/app.less +++ b/app/less/app.less @@ -865,7 +865,7 @@ a.tg_radio_on:hover i.icon-radio { vertical-align: top; margin-right: 18px; - .image-2x('../img/icons/General.png', 40px, 848px); + .image-2x('../img/icons/General.png', 40px, 948px); background-position: -5px -10px; } .icon-tg-title { @@ -906,7 +906,7 @@ a.tg_radio_on:hover i.icon-radio { margin-left: 12px; margin-top: -1px; - .image-2x('../img/icons/General.png', 40px, 848px); + .image-2x('../img/icons/General.png', 40px, 948px); background-position: -18px -50px; } @@ -1599,7 +1599,7 @@ div.im_message_video_thumb { height: 18px; margin: 12px 15px; - .image-2x('../img/icons/General.png', 40px, 848px); + .image-2x('../img/icons/General.png', 40px, 948px); background-position: -14px -509px; .im_message_file_button_dl_doc & { @@ -1620,7 +1620,7 @@ div.im_message_video_thumb { height: 16px; margin: 13px 16px; - .image-2x('../img/icons/General.png', 40px, 848px); + .image-2x('../img/icons/General.png', 40px, 948px); background-position: -13px -611px; } @@ -1636,7 +1636,7 @@ div.im_message_video_thumb { } .im_message_selected .icon-document, -.im_history_selectable .im_message_outer_wrap:hover .icon-document { +.im_history_select_active .im_message_outer_wrap:hover .icon-document { background-color: #dae6f0; background-position: -2px -542px; } @@ -1944,6 +1944,62 @@ div.im_message_body { .user-select(text); } +.im_message_error_btn { + display: none; + + .im_message_error & { + display: inline; + } + + .icon-message-status { + background: #da564d; + opacity: 0.85; + pointer-events: auto; + + &:hover { + opacity: 1; + } + } +} + + +.im_message_views_wrap { + position: relative; +} +.im_message_views { + display: inline-block; + position: absolute; + white-space: nowrap; + line-height: normal; +} +.im_message_views_inline { + display: inline-block; + white-space: nowrap; + // line-height: normal; + font-size: 0.85em; + margin-left: 5px; +} +.icon-message-views { + display: inline-block; + width: 16px; + height: 11px; + .image-2x('../img/icons/General.png', 40px, 948px); + background-position: -12px -850px; + vertical-align: text-bottom; + margin-right: 0.3rem; + + .message_focus &, + .im_message_selected &, + .im_history_select_active .im_message_outer_wrap:hover & { + background-position: -12px -871px; + } +} +.im_message_views_cnt { + color: #adadad; + font-weight: bold; + vertical-align: top; +} + .im_message_reply_wrap { display: block; color: inherit; @@ -2319,7 +2375,7 @@ img.img_fullsize { vertical-align: top; opacity: 0.8; - .image-2x('../img/icons/General.png', 40px, 848px); + .image-2x('../img/icons/General.png', 40px, 948px); background-position: -9px -335px; } @@ -2865,7 +2921,7 @@ _:-ms-lang(x), .composer_rich_textarea:empty:focus:before { vertical-align: top; opacity: 0.8; - .image-2x('../img/icons/General.png', 40px, 848px); + .image-2x('../img/icons/General.png', 40px, 948px); background-position: -10px -790px; .composer_command_btn.active & { @@ -2895,7 +2951,7 @@ _:-ms-lang(x), .composer_rich_textarea:empty:focus:before { vertical-align: top; opacity: 0.8; - .image-2x('../img/icons/General.png', 40px, 848px); + .image-2x('../img/icons/General.png', 40px, 948px); background-position: -10px -730px; .composer_keyboard_btn.active & { @@ -3351,7 +3407,8 @@ a.contacts_modal_contact:hover .md_modal_list_peer_description, .im_message_document_size, .audio_player_duration, .audio_player_size, - .im_message_fwd_date { + .im_message_fwd_date, + .im_message_views_cnt { color: #899daf; } diff --git a/app/less/desktop.less b/app/less/desktop.less index 8e3a39f6..ca014f3f 100644 --- a/app/less/desktop.less +++ b/app/less/desktop.less @@ -205,7 +205,7 @@ display: inline-block; vertical-align: top; margin-top: 3px; - .image-2x('../img/icons/General.png', 40px, 848px); + .image-2x('../img/icons/General.png', 40px, 948px); background-position: -10px -111px; } @@ -217,7 +217,7 @@ margin-top: 2px; display: inline-block; vertical-align: top; - .image-2x('../img/icons/General.png', 40px, 848px); + .image-2x('../img/icons/General.png', 40px, 948px); background-position: -11px -135px; } @@ -228,7 +228,7 @@ margin-top: 1px; display: inline-block; vertical-align: top; - .image-2x('../img/icons/General.png', 40px, 848px); + .image-2x('../img/icons/General.png', 40px, 948px); background-position: -10px -163px; } @@ -239,7 +239,7 @@ margin-top: 1px; display: inline-block; vertical-align: top; - .image-2x('../img/icons/General.png', 40px, 848px); + .image-2x('../img/icons/General.png', 40px, 948px); background-position: -10px -637px; } @@ -250,7 +250,7 @@ display: inline-block; vertical-align: top; - .image-2x('../img/icons/General.png', 40px, 848px); + .image-2x('../img/icons/General.png', 40px, 948px); background-position: -10px -193px; } } @@ -378,7 +378,7 @@ margin-right: 12px; vertical-align: top; - .image-2x('../img/icons/General.png', 40px, 848px); + .image-2x('../img/icons/General.png', 40px, 948px); background-position: 0 0; } @@ -898,11 +898,13 @@ a.footer_link.active:active { .im_message_selected .im_message_audio_duration, .im_message_selected .im_message_audio_size, .im_message_selected .im_message_fwd_date, +.im_message_selected .im_message_views_cnt, .im_history_select_active .im_message_outer_wrap:hover .im_message_date, .im_history_select_active .im_message_outer_wrap:hover .im_message_document_size, .im_history_select_active .im_message_outer_wrap:hover .im_message_audio_duration, .im_history_select_active .im_message_outer_wrap:hover .im_message_audio_size, -.im_history_select_active .im_message_outer_wrap:hover .im_message_fwd_date { +.im_history_select_active .im_message_outer_wrap:hover .im_message_fwd_date, +.im_history_select_active .im_message_outer_wrap:hover .im_message_views_cnt { color: #899daf; } @@ -991,24 +993,6 @@ a.footer_link.active:active { } } -.im_message_error_btn { - display: none; - - .im_message_error & { - display: inline; - } - - .icon-message-status { - background: #da564d; - opacity: 0.85; - pointer-events: auto; - - &:hover { - opacity: 1; - } - } -} - /* Dialogs modal */ .peer_select { &_window { @@ -1179,7 +1163,7 @@ a.im_panel_peer_photo .peer_initials { opacity: 0.8; margin: 0; - .image-2x('../img/icons/General.png', 40px, 848px); + .image-2x('../img/icons/General.png', 40px, 948px); background-position: -11px -455px; } @@ -1228,7 +1212,7 @@ a.im_panel_peer_photo .peer_initials { vertical-align: top; opacity: 0.8; - .image-2x('../img/icons/General.png', 40px, 848px); + .image-2x('../img/icons/General.png', 40px, 948px); background-position: -10px -399px; } @@ -1744,6 +1728,37 @@ a.im_panel_peer_photo .peer_initials { margin: 8px 10px 8px 16px; } +.im_message_views_wrap { + width: 0; + + .im_grouped &, + .im_grouped_short &, + .im_grouped_fwd &, + .im_grouped_fwd_short & { + display: none; + .im_message_selected& { + display: block; + } + } + .im_message_selected.im_grouped &, + .im_message_selected.im_grouped_fwd & { + width: auto; + } +} +.im_message_views { + right: 0; + font-size: 0.85em; + top: 3px; + + .im_grouped &, + .im_grouped_fwd & { + top: 19px; + } + .im_message_fwd & { + top: 3px; + } +} + .im_grouped_short { .im_content_message_wrap { margin: 6px 10px 6px 16px; diff --git a/app/less/mobile.less b/app/less/mobile.less index 0544637f..7dba6982 100644 --- a/app/less/mobile.less +++ b/app/less/mobile.less @@ -795,7 +795,7 @@ img.im_message_video_thumb, margin-left: -60px; width: 60px; padding: 0 0 0 8px; - overflow: hidden; + // overflow: hidden; .im_message_out & { width: 80px; @@ -806,6 +806,15 @@ img.im_message_video_thumb, } } +.im_message_views { + top: -12px; + font-size: 10px; + + .im_message_out & { + right: 0; + } +} + .im_message_date { font-size: 10px; padding: 0; diff --git a/app/partials/desktop/message.html b/app/partials/desktop/message.html index c42e25a1..fac1b5d3 100644 --- a/app/partials/desktop/message.html +++ b/app/partials/desktop/message.html @@ -34,6 +34,11 @@

+
+
+ +
+
@@ -47,6 +52,9 @@
+ + +
diff --git a/app/partials/mobile/message.html b/app/partials/mobile/message.html index 60075397..6343fe4b 100644 --- a/app/partials/mobile/message.html +++ b/app/partials/mobile/message.html @@ -28,6 +28,11 @@
+
+
+ +
+