From 9e23150938b8689b1e03603901eacc240b9774f7 Mon Sep 17 00:00:00 2001 From: JRoberts <8711996+jr-simplex@users.noreply.github.com> Date: Tue, 2 Aug 2022 14:48:31 +0400 Subject: [PATCH] ios: fix Servers section flickering on info view; android: button text (#866) --- .../app/views/chat/group/GroupMemberInfoView.kt | 2 +- .../app/src/main/res/values-ru/strings.xml | 1 + .../android/app/src/main/res/values/strings.xml | 1 + apps/ios/Shared/Views/Chat/ChatInfoView.swift | 10 +--------- apps/ios/Shared/Views/Chat/ChatView.swift | 17 +++++++++++++++-- .../Views/Chat/Group/GroupChatInfoView.swift | 17 ++++++++++++++--- .../Views/Chat/Group/GroupMemberInfoView.swift | 10 +--------- 7 files changed, 34 insertions(+), 24 deletions(-) diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chat/group/GroupMemberInfoView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chat/group/GroupMemberInfoView.kt index 6fbbc7d1b..4a565ee74 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chat/group/GroupMemberInfoView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chat/group/GroupMemberInfoView.kt @@ -44,7 +44,7 @@ fun removeMemberDialog(member: GroupMember, chatModel: ChatModel, close: (() -> AlertManager.shared.showAlertMsg( title = generalGetString(R.string.button_remove_member), text = generalGetString(R.string.member_will_be_removed_from_group_cannot_be_undone), - confirmText = generalGetString(R.string.delete_verb), + confirmText = generalGetString(R.string.remove_member_confirmation), onConfirm = { withApi { chatModel.controller.apiRemoveMember(member.groupId, member.groupMemberId) diff --git a/apps/android/app/src/main/res/values-ru/strings.xml b/apps/android/app/src/main/res/values-ru/strings.xml index 84025ac04..7bbd37d7a 100644 --- a/apps/android/app/src/main/res/values-ru/strings.xml +++ b/apps/android/app/src/main/res/values-ru/strings.xml @@ -584,6 +584,7 @@ Удалить участника Участник будет удален из группы - это действие нельзя отменить! + Удалить УЧАСТНИК Группа Соединение diff --git a/apps/android/app/src/main/res/values/strings.xml b/apps/android/app/src/main/res/values/strings.xml index 8bf865620..4187bbe56 100644 --- a/apps/android/app/src/main/res/values/strings.xml +++ b/apps/android/app/src/main/res/values/strings.xml @@ -586,6 +586,7 @@ Remove member Member will be removed from group - this cannot be undone! + Remove MEMBER Group Connection diff --git a/apps/ios/Shared/Views/Chat/ChatInfoView.swift b/apps/ios/Shared/Views/Chat/ChatInfoView.swift index a06b4a165..ac165845c 100644 --- a/apps/ios/Shared/Views/Chat/ChatInfoView.swift +++ b/apps/ios/Shared/Views/Chat/ChatInfoView.swift @@ -46,8 +46,8 @@ struct ChatInfoView: View { @EnvironmentObject var chatModel: ChatModel @Environment(\.dismiss) var dismiss: DismissAction @ObservedObject var chat: Chat + var connectionStats: ConnectionStats? @State private var alert: ChatInfoViewAlert? = nil - @State private var connectionStats: ConnectionStats? enum ChatInfoViewAlert: Identifiable { case deleteContactAlert @@ -94,14 +94,6 @@ struct ChatInfoView: View { case .networkStatusAlert: return networkStatusAlert() } } - .task { - do { - let stats = try await apiContactInfo(contactId: chat.chatInfo.apiId) - await MainActor.run { connectionStats = stats } - } catch let error { - logger.error("apiContactInfo error: \(responseError(error))") - } - } } func contactInfoHeader() -> some View { diff --git a/apps/ios/Shared/Views/Chat/ChatView.swift b/apps/ios/Shared/Views/Chat/ChatView.swift index 0572e03ef..004624562 100644 --- a/apps/ios/Shared/Views/Chat/ChatView.swift +++ b/apps/ios/Shared/Views/Chat/ChatView.swift @@ -22,6 +22,7 @@ struct ChatView: View { @State private var deletingItem: ChatItem? = nil @FocusState private var keyboardVisible: Bool @State private var showDeleteMessage = false + @State private var connectionStats: ConnectionStats? var body: some View { let cInfo = chat.chatInfo @@ -99,14 +100,26 @@ struct ChatView: View { } ToolbarItem(placement: .principal) { Button { - showChatInfoSheet = true + if case .direct = cInfo { + Task { + do { + let stats = try await apiContactInfo(contactId: chat.chatInfo.apiId) + await MainActor.run { connectionStats = stats } + } catch let error { + logger.error("apiContactInfo error: \(responseError(error))") + } + await MainActor.run { showChatInfoSheet = true } + } + } else { + showChatInfoSheet = true + } } label: { ChatInfoToolbar(chat: chat) } .sheet(isPresented: $showChatInfoSheet) { switch cInfo { case .direct: - ChatInfoView(chat: chat) + ChatInfoView(chat: chat, connectionStats: connectionStats) case let .group(groupInfo): GroupChatInfoView(chat: chat, groupInfo: groupInfo) default: diff --git a/apps/ios/Shared/Views/Chat/Group/GroupChatInfoView.swift b/apps/ios/Shared/Views/Chat/Group/GroupChatInfoView.swift index 57aa33b28..fd5dee7a3 100644 --- a/apps/ios/Shared/Views/Chat/Group/GroupChatInfoView.swift +++ b/apps/ios/Shared/Views/Chat/Group/GroupChatInfoView.swift @@ -20,6 +20,7 @@ struct GroupChatInfoView: View { @State private var showAddMembersSheet: Bool = false @State private var selectedMember: GroupMember? = nil @State private var showGroupProfile: Bool = false + @State private var connectionStats: ConnectionStats? enum GroupChatInfoViewAlert: Identifiable { case deleteGroupAlert @@ -41,14 +42,24 @@ struct GroupChatInfoView: View { } memberView(groupInfo.membership, user: true) ForEach(members) { member in - Button { selectedMember = member } label: { memberView(member) } + Button { + Task { + do { + let stats = try await apiGroupMemberInfo(groupInfo.apiId, member.groupMemberId) + await MainActor.run { connectionStats = stats } + } catch let error { + logger.error("apiGroupMemberInfo error: \(responseError(error))") + } + await MainActor.run { selectedMember = member } + } + } label: { memberView(member) } } } .sheet(isPresented: $showAddMembersSheet) { AddGroupMembersView(chat: chat, groupInfo: groupInfo, membersToAdd: filterMembersToAdd(members)) } - .sheet(item: $selectedMember) { member in - GroupMemberInfoView(groupInfo: groupInfo, member: member) + .sheet(item: $selectedMember, onDismiss: { connectionStats = nil }) { member in + GroupMemberInfoView(groupInfo: groupInfo, member: member, connectionStats: connectionStats) } .sheet(isPresented: $showGroupProfile) { GroupProfileView(groupId: groupInfo.apiId, groupProfile: groupInfo.groupProfile) diff --git a/apps/ios/Shared/Views/Chat/Group/GroupMemberInfoView.swift b/apps/ios/Shared/Views/Chat/Group/GroupMemberInfoView.swift index 58d66a365..b3759f83f 100644 --- a/apps/ios/Shared/Views/Chat/Group/GroupMemberInfoView.swift +++ b/apps/ios/Shared/Views/Chat/Group/GroupMemberInfoView.swift @@ -14,8 +14,8 @@ struct GroupMemberInfoView: View { @Environment(\.dismiss) var dismiss: DismissAction var groupInfo: GroupInfo var member: GroupMember + var connectionStats: ConnectionStats? @State private var alert: GroupMemberInfoViewAlert? - @State private var connectionStats: ConnectionStats? enum GroupMemberInfoViewAlert: Identifiable { case removeMemberAlert @@ -67,14 +67,6 @@ struct GroupMemberInfoView: View { case .removeMemberAlert: return removeMemberAlert() } } - .task { - do { - let stats = try await apiGroupMemberInfo(groupInfo.apiId, member.groupMemberId) - await MainActor.run { connectionStats = stats } - } catch let error { - logger.error("apiGroupMemberInfo error: \(responseError(error))") - } - } } private func groupMemberInfoHeader() -> some View {