ui: rejected group previews (#5665)

This commit is contained in:
spaced4ndy 2025-02-25 19:15:56 +04:00 committed by Evgeny Poberezkin
parent f701ffa4e0
commit 1fcb352db4
No known key found for this signature in database
GPG key ID: 494BDDD9A28B577D
5 changed files with 18 additions and 2 deletions

View file

@ -143,6 +143,7 @@ struct ChatPreviewView: View {
}
case let .group(groupInfo):
switch (groupInfo.membership.memberStatus) {
case .memRejected: inactiveIcon()
case .memLeft: inactiveIcon()
case .memRemoved: inactiveIcon()
case .memGroupDeleted: inactiveIcon()
@ -168,7 +169,7 @@ struct ChatPreviewView: View {
let v = previewTitle(t)
switch (groupInfo.membership.memberStatus) {
case .memInvited: v.foregroundColor(deleting ? theme.colors.secondary : chat.chatInfo.incognito ? .indigo : theme.colors.primary)
case .memAccepted: v.foregroundColor(theme.colors.secondary)
case .memAccepted, .memRejected: v.foregroundColor(theme.colors.secondary)
default: if deleting { v.foregroundColor(theme.colors.secondary) } else { v }
}
default: previewTitle(t)
@ -336,6 +337,7 @@ struct ChatPreviewView: View {
}
case let .group(groupInfo):
switch (groupInfo.membership.memberStatus) {
case .memRejected: chatPreviewInfoText("rejected")
case .memInvited: groupInvitationPreviewText(groupInfo)
case .memAccepted: chatPreviewInfoText("connecting…")
default: EmptyView()

View file

@ -2141,6 +2141,7 @@ public struct GroupMember: Identifiable, Decodable, Hashable {
public var memberActive: Bool {
switch memberStatus {
case .memRejected: return false
case .memRemoved: return false
case .memLeft: return false
case .memGroupDeleted: return false
@ -2158,6 +2159,7 @@ public struct GroupMember: Identifiable, Decodable, Hashable {
public var memberCurrent: Bool {
switch memberStatus {
case .memRejected: return false
case .memRemoved: return false
case .memLeft: return false
case .memGroupDeleted: return false
@ -2288,6 +2290,7 @@ public enum GroupMemberCategory: String, Decodable, Hashable {
}
public enum GroupMemberStatus: String, Decodable, Hashable {
case memRejected = "rejected"
case memRemoved = "removed"
case memLeft = "left"
case memGroupDeleted = "deleted"
@ -2303,6 +2306,7 @@ public enum GroupMemberStatus: String, Decodable, Hashable {
public var text: LocalizedStringKey {
switch self {
case .memRejected: return "rejected"
case .memRemoved: return "removed"
case .memLeft: return "left"
case .memGroupDeleted: return "group deleted"
@ -2320,6 +2324,7 @@ public enum GroupMemberStatus: String, Decodable, Hashable {
public var shortText: LocalizedStringKey {
switch self {
case .memRejected: return "rejected"
case .memRemoved: return "removed"
case .memLeft: return "left"
case .memGroupDeleted: return "group deleted"

View file

@ -1910,6 +1910,7 @@ data class GroupMember (
}
val memberActive: Boolean get() = when (this.memberStatus) {
GroupMemberStatus.MemRejected -> false
GroupMemberStatus.MemRemoved -> false
GroupMemberStatus.MemLeft -> false
GroupMemberStatus.MemGroupDeleted -> false
@ -1925,6 +1926,7 @@ data class GroupMember (
}
val memberCurrent: Boolean get() = when (this.memberStatus) {
GroupMemberStatus.MemRejected -> false
GroupMemberStatus.MemRemoved -> false
GroupMemberStatus.MemLeft -> false
GroupMemberStatus.MemGroupDeleted -> false
@ -2028,6 +2030,7 @@ enum class GroupMemberCategory {
@Serializable
enum class GroupMemberStatus {
@SerialName("rejected") MemRejected,
@SerialName("removed") MemRemoved,
@SerialName("left") MemLeft,
@SerialName("deleted") MemGroupDeleted,
@ -2042,6 +2045,7 @@ enum class GroupMemberStatus {
@SerialName("creator") MemCreator;
val text: String get() = when (this) {
MemRejected -> generalGetString(MR.strings.group_member_status_rejected)
MemRemoved -> generalGetString(MR.strings.group_member_status_removed)
MemLeft -> generalGetString(MR.strings.group_member_status_left)
MemGroupDeleted -> generalGetString(MR.strings.group_member_status_group_deleted)
@ -2057,6 +2061,7 @@ enum class GroupMemberStatus {
}
val shortText: String get() = when (this) {
MemRejected -> generalGetString(MR.strings.group_member_status_rejected)
MemRemoved -> generalGetString(MR.strings.group_member_status_removed)
MemLeft -> generalGetString(MR.strings.group_member_status_left)
MemGroupDeleted -> generalGetString(MR.strings.group_member_status_group_deleted)

View file

@ -70,6 +70,7 @@ fun ChatPreviewView(
}
is ChatInfo.Group ->
when (cInfo.groupInfo.membership.memberStatus) {
GroupMemberStatus.MemRejected -> inactiveIcon()
GroupMemberStatus.MemLeft -> inactiveIcon()
GroupMemberStatus.MemRemoved -> inactiveIcon()
GroupMemberStatus.MemGroupDeleted -> inactiveIcon()
@ -156,7 +157,7 @@ fun ChatPreviewView(
else
if (chat.chatInfo.incognito) Indigo else MaterialTheme.colors.primary
)
GroupMemberStatus.MemAccepted -> chatPreviewTitleText(MaterialTheme.colors.secondary)
GroupMemberStatus.MemAccepted, GroupMemberStatus.MemRejected -> chatPreviewTitleText(MaterialTheme.colors.secondary)
else -> chatPreviewTitleText(
if (deleting)
MaterialTheme.colors.secondary
@ -237,6 +238,7 @@ fun ChatPreviewView(
}
is ChatInfo.Group ->
when (cInfo.groupInfo.membership.memberStatus) {
GroupMemberStatus.MemRejected -> Text(stringResource(MR.strings.group_preview_rejected))
GroupMemberStatus.MemInvited -> Text(groupInvitationPreviewText(currentUserProfileDisplayName, cInfo.groupInfo))
GroupMemberStatus.MemAccepted -> Text(stringResource(MR.strings.group_connection_pending), color = MaterialTheme.colors.secondary)
else -> {}

View file

@ -418,6 +418,7 @@
<string name="member_contact_send_direct_message">send direct message</string>
<string name="group_preview_you_are_invited">you are invited to group</string>
<string name="group_preview_join_as">join as %s</string>
<string name="group_preview_rejected">rejected</string>
<string name="group_connection_pending">connecting…</string>
<string name="tap_to_start_new_chat">Tap to start a new chat</string>
<string name="chat_with_developers">Chat with the developers</string>
@ -1622,6 +1623,7 @@
<string name="group_member_role_owner">owner</string>
<!-- GroupMemberStatus -->
<string name="group_member_status_rejected">rejected</string>
<string name="group_member_status_removed">removed</string>
<string name="group_member_status_left">left</string>
<string name="group_member_status_group_deleted">group deleted</string>