Copy stickers link
This commit is contained in:
parent
64d2e5faf8
commit
523a0366b0
|
@ -1235,7 +1235,7 @@ export default class AppSearchSuper {
|
||||||
this.afterPerforming(1, mediaTab.contentTab);
|
this.afterPerforming(1, mediaTab.contentTab);
|
||||||
}
|
}
|
||||||
|
|
||||||
const peerIds = participants.map((participant) => {
|
const peerIds: {peerId: PeerId, rank: ReturnType<typeof getParticipantRank>}[] = participants.map((participant) => {
|
||||||
const peerId = userId ? (participant as Chat.chat).id.toPeerId(true) : getParticipantPeerId(participant as ChannelParticipant);
|
const peerId = userId ? (participant as Chat.chat).id.toPeerId(true) : getParticipantPeerId(participant as ChannelParticipant);
|
||||||
if(chatId ? peerId.isAnyChat() : peerId.isUser()) {
|
if(chatId ? peerId.isAnyChat() : peerId.isUser()) {
|
||||||
return;
|
return;
|
||||||
|
@ -1243,7 +1243,7 @@ export default class AppSearchSuper {
|
||||||
|
|
||||||
return {
|
return {
|
||||||
peerId,
|
peerId,
|
||||||
rank: getParticipantRank(participant as ChannelParticipant)
|
rank: getParticipantRank(participant as ChannelParticipant) as any
|
||||||
};
|
};
|
||||||
}).filter(Boolean);
|
}).filter(Boolean);
|
||||||
|
|
||||||
|
|
|
@ -135,6 +135,7 @@ import wrapLocalSticker from '../wrappers/localSticker';
|
||||||
import {LottieAssetName} from '../../lib/rlottie/lottieLoader';
|
import {LottieAssetName} from '../../lib/rlottie/lottieLoader';
|
||||||
import clamp from '../../helpers/number/clamp';
|
import clamp from '../../helpers/number/clamp';
|
||||||
import getParticipantRank from '../../lib/appManagers/utils/chats/getParticipantRank';
|
import getParticipantRank from '../../lib/appManagers/utils/chats/getParticipantRank';
|
||||||
|
import wrapParticipantRank from '../wrappers/participantRank';
|
||||||
|
|
||||||
export const USER_REACTIONS_INLINE = false;
|
export const USER_REACTIONS_INLINE = false;
|
||||||
const USE_MEDIA_TAILS = false;
|
const USE_MEDIA_TAILS = false;
|
||||||
|
@ -5415,9 +5416,7 @@ export default class ChatBubbles {
|
||||||
private createBubbleNameRank(rank: ReturnType<typeof getParticipantRank> | 0) {
|
private createBubbleNameRank(rank: ReturnType<typeof getParticipantRank> | 0) {
|
||||||
const span = document.createElement('span');
|
const span = document.createElement('span');
|
||||||
span.classList.add('bubble-name-rank');
|
span.classList.add('bubble-name-rank');
|
||||||
span.append(typeof(rank) === 'number' ?
|
span.append(wrapParticipantRank(rank));
|
||||||
i18n(!rank ? 'Chat.ChannelBadge' : (rank === 1 ? 'Chat.OwnerBadge' : 'ChatAdmin')) :
|
|
||||||
rank);
|
|
||||||
return span;
|
return span;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,8 @@ import replaceContent from '../../helpers/dom/replaceContent';
|
||||||
import rootScope from '../../lib/rootScope';
|
import rootScope from '../../lib/rootScope';
|
||||||
import wrapCustomEmoji from '../wrappers/customEmoji';
|
import wrapCustomEmoji from '../wrappers/customEmoji';
|
||||||
import emoticonsDropdown from '../emoticonsDropdown';
|
import emoticonsDropdown from '../emoticonsDropdown';
|
||||||
|
import ButtonMenuToggle from '../buttonMenuToggle';
|
||||||
|
import {copyTextToClipboard} from '../../helpers/clipboard';
|
||||||
|
|
||||||
const ANIMATION_GROUP: AnimationItemGroup = 'STICKERS-POPUP';
|
const ANIMATION_GROUP: AnimationItemGroup = 'STICKERS-POPUP';
|
||||||
|
|
||||||
|
@ -251,6 +253,21 @@ export default class PopupStickers extends PopupElement {
|
||||||
setInnerHTML(this.title, i18n('Emoji'));
|
setInnerHTML(this.title, i18n('Emoji'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const btnMenu = ButtonMenuToggle({
|
||||||
|
listenerSetter: this.listenerSetter,
|
||||||
|
buttons: [{
|
||||||
|
icon: 'copy',
|
||||||
|
text: 'CopyLink',
|
||||||
|
onClick: () => {
|
||||||
|
const prefix = `https://t.me/${this.isEmojis ? 'addemoji' : 'addstickers'}/`;
|
||||||
|
const text = sets.map((set) => prefix + set.set.short_name).join('\n');
|
||||||
|
copyTextToClipboard(text);
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
direction: 'bottom-left'
|
||||||
|
});
|
||||||
|
this.title.after(btnMenu);
|
||||||
|
|
||||||
this.stickersFooter.textContent = '';
|
this.stickersFooter.textContent = '';
|
||||||
this.stickersFooter.append(button);
|
this.stickersFooter.append(button);
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
* https://github.com/morethanwords/tweb/blob/master/LICENSE
|
* https://github.com/morethanwords/tweb/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import type LazyLoadQueue from './lazyLoadQueue';
|
||||||
import appDialogsManager, {AppDialogsManager, DialogDom, DialogElementSize} from '../lib/appManagers/appDialogsManager';
|
import appDialogsManager, {AppDialogsManager, DialogDom, DialogElementSize} from '../lib/appManagers/appDialogsManager';
|
||||||
import {getHeavyAnimationPromise} from '../hooks/useHeavyAnimationCheck';
|
import {getHeavyAnimationPromise} from '../hooks/useHeavyAnimationCheck';
|
||||||
import isInDOM from '../helpers/dom/isInDOM';
|
import isInDOM from '../helpers/dom/isInDOM';
|
||||||
|
@ -14,9 +15,9 @@ import SortedList, {SortedElementBase} from '../helpers/sortedList';
|
||||||
import safeAssign from '../helpers/object/safeAssign';
|
import safeAssign from '../helpers/object/safeAssign';
|
||||||
import {AppManagers} from '../lib/appManagers/managers';
|
import {AppManagers} from '../lib/appManagers/managers';
|
||||||
import getUserStatusString from './wrappers/getUserStatusString';
|
import getUserStatusString from './wrappers/getUserStatusString';
|
||||||
import type LazyLoadQueue from './lazyLoadQueue';
|
|
||||||
import getChatMembersString from './wrappers/getChatMembersString';
|
import getChatMembersString from './wrappers/getChatMembersString';
|
||||||
import {i18n} from '../lib/langPack';
|
import wrapParticipantRank from './wrappers/participantRank';
|
||||||
|
import getParticipantRank from '../lib/appManagers/utils/chats/getParticipantRank';
|
||||||
|
|
||||||
interface SortedUser extends SortedElementBase<PeerId> {
|
interface SortedUser extends SortedElementBase<PeerId> {
|
||||||
dom: DialogDom
|
dom: DialogDom
|
||||||
|
@ -25,7 +26,7 @@ interface SortedUser extends SortedElementBase<PeerId> {
|
||||||
export default class SortedUserList extends SortedList<SortedUser> {
|
export default class SortedUserList extends SortedList<SortedUser> {
|
||||||
protected static SORT_INTERVAL = 30e3;
|
protected static SORT_INTERVAL = 30e3;
|
||||||
public list: HTMLUListElement;
|
public list: HTMLUListElement;
|
||||||
public ranks: Map<PeerId, string | number> = new Map();
|
public ranks: Map<PeerId, ReturnType<typeof getParticipantRank>> = new Map();
|
||||||
|
|
||||||
protected lazyLoadQueue: LazyLoadQueue;
|
protected lazyLoadQueue: LazyLoadQueue;
|
||||||
protected avatarSize: DialogElementSize = 'abitbigger';
|
protected avatarSize: DialogElementSize = 'abitbigger';
|
||||||
|
@ -87,9 +88,7 @@ export default class SortedUserList extends SortedList<SortedUser> {
|
||||||
|
|
||||||
const rank = this.ranks.get(base.id);
|
const rank = this.ranks.get(base.id);
|
||||||
if(rank) {
|
if(rank) {
|
||||||
dialogElement.titleRight.replaceChildren(typeof(rank) === 'number' ?
|
dialogElement.titleRight.replaceChildren(wrapParticipantRank(rank));
|
||||||
i18n(rank === 1 ? 'Chat.OwnerBadge' : 'ChatAdmin') :
|
|
||||||
rank);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
(base as SortedUser).dom = dialogElement.dom;
|
(base as SortedUser).dom = dialogElement.dom;
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
import getParticipantRank from '../../lib/appManagers/utils/chats/getParticipantRank';
|
||||||
|
import {i18n} from '../../lib/langPack';
|
||||||
|
import wrapEmojiText from '../../lib/richTextProcessor/wrapEmojiText';
|
||||||
|
|
||||||
|
export default function wrapParticipantRank(rank: ReturnType<typeof getParticipantRank> | 0) {
|
||||||
|
return typeof(rank) === 'number' ?
|
||||||
|
i18n(!rank ? 'Chat.ChannelBadge' : (rank === 1 ? 'Chat.OwnerBadge' : 'ChatAdmin')) :
|
||||||
|
wrapEmojiText(rank);
|
||||||
|
}
|
|
@ -404,6 +404,7 @@
|
||||||
|
|
||||||
&-border {
|
&-border {
|
||||||
border-color: var(--message-checkbox-border-color);
|
border-color: var(--message-checkbox-border-color);
|
||||||
|
z-index: 1 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
&-background {
|
&-background {
|
||||||
|
|
|
@ -46,11 +46,10 @@
|
||||||
|
|
||||||
&-close {
|
&-close {
|
||||||
font-size: 1.5rem;
|
font-size: 1.5rem;
|
||||||
margin-inline-start: 1rem;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
&-header {
|
&-header {
|
||||||
margin: .625rem 0;
|
margin: .625rem 1rem;
|
||||||
flex: 0 0 auto;
|
flex: 0 0 auto;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue