Группы: восстановление ключей по инвайту и Apple Emoji
- Добавлено восстановление локального ключа группы из инвайта при повторном нажатии, даже если на сервере статус уже JOINED. - В карточке приглашения сначала восстанавливается ключ, затем открывается группа. - Включено отображение Apple Emoji для названия/описания группы в GroupInfo и в заголовке группы в чате. - Обновлён превью-заголовок в GroupSetup на Apple Emoji рендер.
This commit is contained in:
@@ -284,6 +284,47 @@ class GroupRepository private constructor(context: Context) {
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Desktop parity fix:
|
||||
* if user is already joined on server, repeated invite click should still restore local group key.
|
||||
*/
|
||||
suspend fun ensureLocalGroupFromInvite(
|
||||
accountPublicKey: String,
|
||||
accountPrivateKey: String,
|
||||
inviteString: String
|
||||
): GroupJoinResult {
|
||||
val parsed = parseInviteString(inviteString)
|
||||
?: return GroupJoinResult(
|
||||
success = false,
|
||||
status = GroupStatus.INVALID,
|
||||
error = "Invalid invite string"
|
||||
)
|
||||
|
||||
val existingGroupKey = getGroupKey(accountPublicKey, accountPrivateKey, parsed.groupId)
|
||||
if (!existingGroupKey.isNullOrBlank()) {
|
||||
return GroupJoinResult(
|
||||
success = true,
|
||||
status = GroupStatus.JOINED,
|
||||
dialogPublicKey = toGroupDialogPublicKey(parsed.groupId),
|
||||
title = parsed.title
|
||||
)
|
||||
}
|
||||
|
||||
persistJoinedGroup(
|
||||
accountPublicKey = accountPublicKey,
|
||||
accountPrivateKey = accountPrivateKey,
|
||||
parsedInvite = parsed,
|
||||
emitSystemJoinMessage = false
|
||||
)
|
||||
|
||||
return GroupJoinResult(
|
||||
success = true,
|
||||
status = GroupStatus.JOINED,
|
||||
dialogPublicKey = toGroupDialogPublicKey(parsed.groupId),
|
||||
title = parsed.title
|
||||
)
|
||||
}
|
||||
|
||||
suspend fun synchronizeJoinedGroup(
|
||||
accountPublicKey: String,
|
||||
accountPrivateKey: String,
|
||||
|
||||
Reference in New Issue
Block a user