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 {