Browse Source

Add premium icon to chat avatar

master
Eduard Kuzmenko 2 years ago
parent
commit
8262012b48
  1. 18
      src/components/chat/bubbleGroups.ts
  2. 5
      src/lib/appManagers/appPeersManager.ts
  3. 13
      src/scss/partials/_avatar.scss

18
src/components/chat/bubbleGroups.ts

@ -68,14 +68,26 @@ class BubbleGroup {
const fwdFromId = message.fwdFromId; const fwdFromId = message.fwdFromId;
const isForwardFromChannel = message.from_id && message.from_id._ === 'peerChannel' && message.fromId === fwdFromId; const isForwardFromChannel = message.from_id && message.from_id._ === 'peerChannel' && message.fromId === fwdFromId;
const currentPeerId = this.chat.peerId; const currentPeerId = this.chat.peerId;
this.avatar = new AvatarElement(); const avatar = this.avatar = new AvatarElement();
this.avatar.classList.add('bubbles-group-avatar', 'user-avatar', 'avatar-40'/* , 'can-zoom-fade' */); this.avatar.classList.add('bubbles-group-avatar', 'user-avatar', 'avatar-40'/* , 'can-zoom-fade' */);
this.avatarLoadPromise = this.avatar.updateWithOptions({ const peerId = ((fwdFrom && (currentPeerId === rootScope.myId || currentPeerId === REPLIES_PEER_ID)) || isForwardFromChannel ? fwdFromId : message.fromId) || NULL_PEER_ID;
const avatarLoadPromise = this.avatar.updateWithOptions({
lazyLoadQueue: this.chat.bubbles.lazyLoadQueue, lazyLoadQueue: this.chat.bubbles.lazyLoadQueue,
peerId: ((fwdFrom && (currentPeerId === rootScope.myId || currentPeerId === REPLIES_PEER_ID)) || isForwardFromChannel ? fwdFromId : message.fromId) || NULL_PEER_ID, peerId,
peerTitle: !fwdFromId && fwdFrom && fwdFrom.from_name ? /* '🔥 FF 🔥' */fwdFrom.from_name : undefined, peerTitle: !fwdFromId && fwdFrom && fwdFrom.from_name ? /* '🔥 FF 🔥' */fwdFrom.from_name : undefined,
}); });
this.avatarLoadPromise = Promise.all([
avatarLoadPromise,
peerId && peerId.isUser() ? this.chat.managers.appUsersManager.getUser(peerId.toUserId()) : undefined
]).then(([result, user]) => {
if(user?.pFlags?.premium) {
avatar.classList.add('is-premium', 'tgico-star');
}
return result;
});
this.avatarContainer.append(this.avatar); this.avatarContainer.append(this.avatar);
this.container.append(this.avatarContainer); this.container.append(this.avatarContainer);

5
src/lib/appManagers/appPeersManager.ts

@ -17,6 +17,7 @@ import { AppManager } from "./manager";
import getPeerId from "./utils/peers/getPeerId"; import getPeerId from "./utils/peers/getPeerId";
import isUser from "./utils/peers/isUser"; import isUser from "./utils/peers/isUser";
import isAnyChat from "./utils/peers/isAnyChat"; import isAnyChat from "./utils/peers/isAnyChat";
import { NULL_PEER_ID } from "../mtproto/mtproto_config";
export type PeerType = 'channel' | 'chat' | 'megagroup' | 'group' | 'saved'; export type PeerType = 'channel' | 'chat' | 'megagroup' | 'group' | 'saved';
export class AppPeersManager extends AppManager { export class AppPeersManager extends AppManager {
@ -87,8 +88,8 @@ export class AppPeersManager extends AppManager {
: this.appChatsManager.getChat(peerId.toChatId()); : this.appChatsManager.getChat(peerId.toChatId());
} }
public getPeerId(...args: Parameters<typeof getPeerId>) { public getPeerId(peerId: Parameters<typeof getPeerId>[0]) {
return getPeerId(...args) || this.peerId; return getPeerId(peerId) || (isObject<InputPeer>(peerId) && peerId._ === 'inputPeerSelf' && this.peerId) || NULL_PEER_ID;
} }
public getDialogPeer(peerId: PeerId): DialogPeer { public getDialogPeer(peerId: PeerId): DialogPeer {

13
src/scss/partials/_avatar.scss

@ -89,6 +89,19 @@ avatar-element {
position: relative; position: relative;
} }
&.is-premium {
&:before {
font-size: .6875rem;
color: #fff;
position: absolute;
right: 0;
bottom: -.0625rem;
line-height: 1 !important;
z-index: 1;
pointer-events: none;
}
}
img { img {
//width: 100% !important; //width: 100% !important;
//height: 100% !important; //height: 100% !important;

Loading…
Cancel
Save