feat!: updated to layer 167
breaking: - `User#color`: type changed `number -> ChatColors` - `User#replyBackgroundEmojiId` removed (moved to `color.backgroundEmojiId`) - same for `Chat`
This commit is contained in:
parent
e22aed56af
commit
4d27ca56d1
8 changed files with 72 additions and 43 deletions
|
@ -17,7 +17,7 @@
|
|||
"test:browser:dev": "vitest --config .config/vite.browser.mts watch",
|
||||
"lint": "eslint .",
|
||||
"lint:ci": "NODE_OPTIONS=\\\"--max_old_space_size=8192\\\" eslint --config .config/eslint.ci.js .",
|
||||
"lint:tsc": "pnpm -r --workspace-concurrency=4 exec tsc --build",
|
||||
"lint:tsc": "rimraf packages/**/dist && pnpm -r --workspace-concurrency=4 exec tsc --build",
|
||||
"lint:tsc:ci": "pnpm -r exec tsc --build",
|
||||
"lint:dpdm": "dpdm -T --no-warning --no-tree --exit-code circular:1 packages/*",
|
||||
"lint:fix": "eslint --fix .",
|
||||
|
|
37
packages/client/src/types/peers/chat-colors.ts
Normal file
37
packages/client/src/types/peers/chat-colors.ts
Normal file
|
@ -0,0 +1,37 @@
|
|||
import { tl } from '@mtcute/core'
|
||||
|
||||
import { makeInspectable } from '../../utils/inspectable.js'
|
||||
|
||||
/**
|
||||
* Information about colors of a chat
|
||||
*/
|
||||
export class ChatColors {
|
||||
constructor(
|
||||
private readonly _peerId: number,
|
||||
readonly raw?: tl.RawPeerColor,
|
||||
) {}
|
||||
|
||||
/**
|
||||
* Color ID
|
||||
*
|
||||
* Note that this value is **not** an RGB color representation. Instead, it is
|
||||
* a number which should be used to pick a color from a predefined
|
||||
* list of colors:
|
||||
* - `0-6` are the default colors used by Telegram clients:
|
||||
* `red, orange, purple, green, sea, blue, pink`
|
||||
* - `>= 7` are returned by `help.getAppConfig`.
|
||||
*/
|
||||
get color(): number {
|
||||
return this.raw?.color ?? this._peerId % 7
|
||||
}
|
||||
|
||||
/**
|
||||
* ID of the emoji that should be used as a background pattern
|
||||
* when rendering the color
|
||||
*/
|
||||
get backgroundEmojiId(): tl.Long | null {
|
||||
return this.raw?.backgroundEmojiId ?? null
|
||||
}
|
||||
}
|
||||
|
||||
makeInspectable(ChatColors)
|
|
@ -3,6 +3,7 @@ import { getMarkedPeerId, MtArgumentError, MtTypeAssertionError, tl } from '@mtc
|
|||
import { makeInspectable } from '../../utils/index.js'
|
||||
import { memoizeGetters } from '../../utils/memoize.js'
|
||||
import { MessageEntity } from '../messages/message-entity.js'
|
||||
import { ChatColors } from './chat-colors.js'
|
||||
import { ChatLocation } from './chat-location.js'
|
||||
import { ChatPermissions } from './chat-permissions.js'
|
||||
import { ChatPhoto } from './chat-photo.js'
|
||||
|
@ -531,30 +532,14 @@ export class Chat {
|
|||
}
|
||||
|
||||
/**
|
||||
* Name color of this chat, which should also be used when
|
||||
* rendering replies to their messages and web previews sent by them.
|
||||
*
|
||||
* Note that this value is **not** an RGB color representation. Instead, it is
|
||||
* a number which should be used to pick a color from a predefined
|
||||
* list of colors:
|
||||
* - `0-6` are the default colors used by Telegram clients:
|
||||
* `red, orange, purple, green, sea, blue, pink`
|
||||
* - `>= 7` are returned by `help.getAppConfig`.
|
||||
* Color that should be used when rendering replies to
|
||||
* the messages and web previews sent by this chat,
|
||||
* as well as to render the chat title
|
||||
*/
|
||||
get color(): number {
|
||||
if (this.peer._ !== 'channel' && this.peer._ !== 'user') return this.peer.id % 7
|
||||
get color(): ChatColors {
|
||||
const color = this.peer._ === 'user' || this.peer._ === 'channel' ? this.peer.color : undefined
|
||||
|
||||
return this.peer.color ?? this.peer.id % 7
|
||||
}
|
||||
|
||||
/**
|
||||
* ID of the emoji that should be used as a background pattern
|
||||
* when rendering replies to this user's messages.
|
||||
*/
|
||||
get replyBackgroundEmojiId(): tl.Long | null {
|
||||
if (this.peer._ !== 'channel' && this.peer._ !== 'user') return null
|
||||
|
||||
return this.peer.backgroundEmojiId ?? null
|
||||
return new ChatColors(this.peer.id, color)
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -671,5 +656,6 @@ memoizeGetters(Chat, [
|
|||
'defaultPermissions',
|
||||
'location',
|
||||
'user',
|
||||
'color',
|
||||
])
|
||||
makeInspectable(Chat, [], ['user'])
|
||||
|
|
|
@ -5,6 +5,7 @@ import { makeInspectable } from '../../utils/index.js'
|
|||
import { memoizeGetters } from '../../utils/memoize.js'
|
||||
import { MessageEntity } from '../messages/message-entity.js'
|
||||
import { EmojiStatus } from '../reactions/emoji-status.js'
|
||||
import { ChatColors } from './chat-colors.js'
|
||||
import { ChatPhoto } from './chat-photo.js'
|
||||
|
||||
/**
|
||||
|
@ -375,26 +376,22 @@ export class User {
|
|||
}
|
||||
|
||||
/**
|
||||
* Name color of this user, which should also be used when
|
||||
* rendering replies to their messages and web previews sent by them.
|
||||
*
|
||||
* Note that this value is **not** an RGB color representation. Instead, it is
|
||||
* a number which should be used to pick a color from a predefined
|
||||
* list of colors:
|
||||
* - `0-6` are the default colors used by Telegram clients:
|
||||
* `red, orange, purple, green, sea, blue, pink`
|
||||
* - `>= 7` are returned by `help.getAppConfig`.
|
||||
* Color that should be used when rendering replies to
|
||||
* their messages and web previews sent by them,
|
||||
* as well as to render the chat title
|
||||
*/
|
||||
get color(): number {
|
||||
return this.raw.color ?? this.raw.id % 7
|
||||
get color(): ChatColors {
|
||||
return new ChatColors(this.raw.id, this.raw.color)
|
||||
}
|
||||
|
||||
/**
|
||||
* ID of the emoji that should be used as a background pattern
|
||||
* when rendering replies to this user's messages.
|
||||
* Color that should be used when rendering the header of
|
||||
* the user's profile
|
||||
*
|
||||
* If `null`, a generic header should be used instead
|
||||
*/
|
||||
get replyBackgroundEmojiId(): tl.Long | null {
|
||||
return this.raw.backgroundEmojiId ?? null
|
||||
get profileColors(): ChatColors | null {
|
||||
return this.raw.profileColor ? new ChatColors(this.raw.id, this.raw.profileColor) : null
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -490,5 +487,13 @@ export class User {
|
|||
}
|
||||
}
|
||||
|
||||
memoizeGetters(User, ['_parsedStatus' as keyof User, 'usernames', 'inputPeer', 'photo', 'emojiStatus'])
|
||||
memoizeGetters(User, [
|
||||
'_parsedStatus' as keyof User,
|
||||
'usernames',
|
||||
'inputPeer',
|
||||
'photo',
|
||||
'emojiStatus',
|
||||
'color',
|
||||
'profileColors',
|
||||
])
|
||||
makeInspectable(User, undefined, ['_parsedStatus' as keyof User])
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
TL schema and related utils used for mtcute.
|
||||
|
||||
Generated from TL layer **166** (last updated on 25.11.2023).
|
||||
Generated from TL layer **167** (last updated on 01.12.2023).
|
||||
|
||||
## About
|
||||
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -114,6 +114,7 @@
|
|||
"updateChannelReadMessagesContents": ["channel_id"],
|
||||
"updateChannelTooLong": ["channel_id"],
|
||||
"updateChannelUserTyping": ["channel_id"],
|
||||
"updateChannelViewForumAsMessages": ["channel_id"],
|
||||
"updateChannelWebPage": ["channel_id"],
|
||||
"updateChat": ["chat_id"],
|
||||
"updateChatParticipant": ["chat_id", "actor_id", "user_id"],
|
||||
|
@ -123,7 +124,7 @@
|
|||
"updateChatUserTyping": ["chat_id"],
|
||||
"updateDeleteChannelMessages": ["channel_id"],
|
||||
"updateGroupCall": ["chat_id"],
|
||||
"updateGroupInvitePrivacyForbidden": ["chat_id"],
|
||||
"updateGroupInvitePrivacyForbidden": ["user_id"],
|
||||
"updateInlineBotCallbackQuery": ["user_id"],
|
||||
"updatePinnedChannelMessages": ["channel_id"],
|
||||
"updateReadChannelDiscussionInbox": ["channel_id", "broadcast_id"],
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@mtcute/tl",
|
||||
"version": "166.2.0",
|
||||
"version": "167.0.0",
|
||||
"description": "TL schema used for mtcute",
|
||||
"main": "index.js",
|
||||
"author": "Alina Sireneva <alina@tei.su>",
|
||||
|
|
Loading…
Reference in a new issue