Compare commits

..

3 Commits

Author SHA1 Message Date
RoyceDa
547ac89987 Поднятие версии
All checks were successful
SP Builds / build (push) Successful in 4m4s
2026-04-08 23:05:03 +02:00
RoyceDa
130ad9c35a Исправление парсинга emoji и составных emoji (skin tones) 2026-04-08 22:58:49 +02:00
RoyceDa
adfc6add6f Исправление битых вложений в группах (на декодинг) 2026-04-08 21:55:59 +02:00
3 changed files with 36 additions and 13 deletions

View File

@@ -42,6 +42,20 @@ export function TextParser(props: TextParserProps) {
const theme = useMantineTheme();
let entityCount = 0;
const UNICODE_EMOJI_SEQUENCE_REGEX =
/(?:\p{Regional_Indicator}{2}|[0-9#*]\uFE0F?\u20E3|\p{Extended_Pictographic}(?:\uFE0F|\uFE0E)?(?:\p{Emoji_Modifier})?(?:\u200D\p{Extended_Pictographic}(?:\uFE0F|\uFE0E)?(?:\p{Emoji_Modifier})?)*)/u;
const UNICODE_EMOJI_SEQUENCE_REGEX_GLOBAL = new RegExp(
UNICODE_EMOJI_SEQUENCE_REGEX.source,
"gu"
);
const toUnified = (value: string): string =>
Array.from(value)
.map((ch) => ch.codePointAt(0)?.toString(16))
.filter(Boolean)
.join("-");
const formatRules : FormatRule[] = [
{
pattern: [
@@ -120,18 +134,21 @@ export function TextParser(props: TextParserProps) {
}
},
{
// unicode emojis
pattern: [/\p{Emoji_Presentation}/u],
// unicode emojis (including composite sequences)
pattern: [UNICODE_EMOJI_SEQUENCE_REGEX],
render: (match: string) => {
let textWithoutEmojis = props.text.replace(/\p{Emoji_Presentation}/gu, '');
if(textWithoutEmojis.length <= (props.oversizeIfTextSmallerThan ?? 0)) {
return <Emoji size={40} unified={match.codePointAt(0)?.toString(16) || ''}></Emoji>;
const textWithoutEmojis = props.text.replace(UNICODE_EMOJI_SEQUENCE_REGEX_GLOBAL, "");
const unified = toUnified(match);
if (textWithoutEmojis.length <= (props.oversizeIfTextSmallerThan ?? 0)) {
return <Emoji size={40} unified={unified}></Emoji>;
}
return <Emoji unified={match.codePointAt(0)?.toString(16) || ''}></Emoji>;
return <Emoji unified={unified}></Emoji>;
},
flush: (match: string) => {
return <Emoji unified={match.codePointAt(0)?.toString(16) || ''}></Emoji>;
}
return <Emoji unified={toUnified(match)}></Emoji>;
}
},
{
// :emoji_code:

View File

@@ -238,6 +238,10 @@ export function DialogProvider(props: DialogProviderProps) {
* Если это групповое сообщение, то получаем ключ группы
*/
decryptKey = await getGroupKey(props.dialog);
/**
* Приводим к HEX так как этого требует формат расшифровки вложений в приложении
*/
decryptKey = Buffer.from(decryptKey).toString('hex');
}
if(!message.from_me && !hasGroup(props.dialog)){
/**
@@ -569,7 +573,7 @@ export function DialogProvider(props: DialogProviderProps) {
content: content,
timestamp: timestamp,
readed: 0,
chacha_key: groupKey,
chacha_key: Buffer.from(groupKey).toString('hex'),
from_me: 1,
plain_message: decryptedContent,
delivered: DeliveredMessageState.DELIVERED,
@@ -723,7 +727,7 @@ export function DialogProvider(props: DialogProviderProps) {
content: content,
timestamp: timestamp,
readed: idle ? 0 : 1,
chacha_key: groupKey,
chacha_key: Buffer.from(groupKey).toString('hex'),
from_me: fromPublicKey == publicKey ? 1 : 0,
plain_message: decryptedContent,
delivered: DeliveredMessageState.DELIVERED,

View File

@@ -1,7 +1,9 @@
export const APP_VERSION = "1.2.0";
export const APP_VERSION = "1.2.1";
export const CORE_MIN_REQUIRED_VERSION = "1.5.5";
export const RELEASE_NOTICE = `
**Обновление v1.2.0** :emoji_1f631:
- Повышена стабильность звонков.
**Обновление v1.2.1** :emoji_1f631:
- Исправлена ошибка, из-за которой вложения в групповых диалогах могли не расшифроваться.
- Исправлено отображение emoji.
- Добавлена поддержка skin-tone модификаторов для emoji.
`;