Merge branch 'master' into callkit
This commit is contained in:
@@ -553,6 +553,15 @@ final class Chat: ObservableObject, Identifiable {
|
||||
}
|
||||
}
|
||||
|
||||
var userIsObserver: Bool {
|
||||
switch chatInfo {
|
||||
case let .group(groupInfo):
|
||||
let m = groupInfo.membership
|
||||
return m.memberActive && m.memberRole == .observer
|
||||
default: return false
|
||||
}
|
||||
}
|
||||
|
||||
var id: ChatId { get { chatInfo.id } }
|
||||
|
||||
var viewId: String { get { "\(chatInfo.id) \(created.timeIntervalSince1970)" } }
|
||||
|
||||
@@ -291,7 +291,7 @@ struct ComposeView: View {
|
||||
.background(.background)
|
||||
.disabled(!chat.userCanSend)
|
||||
|
||||
if (!chat.userCanSend) {
|
||||
if chat.userIsObserver {
|
||||
Text("you are observer")
|
||||
.italic()
|
||||
.foregroundColor(.secondary)
|
||||
|
||||
@@ -140,7 +140,7 @@ struct AddGroupMembersView: View {
|
||||
private func rolePicker() -> some View {
|
||||
Picker("New member role", selection: $selectedRole) {
|
||||
ForEach(GroupMemberRole.allCases) { role in
|
||||
if role <= groupInfo.membership.memberRole {
|
||||
if role <= groupInfo.membership.memberRole && role != .observer {
|
||||
Text(role.text)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,15 +34,15 @@ struct GroupLinkView: View {
|
||||
Text("You can share a link or a QR code - anybody will be able to join the group. You won't lose members of the group if you later delete it.")
|
||||
.padding(.bottom)
|
||||
if let groupLink = groupLink {
|
||||
HStack {
|
||||
Text("Initial role")
|
||||
Picker("Initial role", selection: $groupLinkMemberRole) {
|
||||
ForEach([GroupMemberRole.member, GroupMemberRole.observer]) { role in
|
||||
Text(role.text)
|
||||
}
|
||||
}
|
||||
}
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
// HStack {
|
||||
// Text("Initial role")
|
||||
// Picker("Initial role", selection: $groupLinkMemberRole) {
|
||||
// ForEach([GroupMemberRole.member, GroupMemberRole.observer]) { role in
|
||||
// Text(role.text)
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// .frame(maxWidth: .infinity, alignment: .leading)
|
||||
QRCode(uri: groupLink)
|
||||
HStack {
|
||||
Button {
|
||||
|
||||
@@ -14,6 +14,8 @@ let interfaceStyles: [UIUserInterfaceStyle] = [.unspecified, .light, .dark]
|
||||
|
||||
let interfaceStyleNames: [LocalizedStringKey] = ["System", "Light", "Dark"]
|
||||
|
||||
let appSettingsURL = URL(string: UIApplication.openSettingsURLString)!
|
||||
|
||||
struct AppearanceSettings: View {
|
||||
@EnvironmentObject var sceneDelegate: SceneDelegate
|
||||
@State private var iconLightTapped = false
|
||||
@@ -24,6 +26,16 @@ struct AppearanceSettings: View {
|
||||
var body: some View {
|
||||
VStack{
|
||||
List {
|
||||
Section(String("Language")) {
|
||||
HStack {
|
||||
Text(currentLanguage)
|
||||
Spacer()
|
||||
Button("Change") {
|
||||
UIApplication.shared.open(appSettingsURL)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Section("App icon") {
|
||||
HStack {
|
||||
updateAppIcon(image: "icon-light", icon: nil, tapped: $iconLightTapped)
|
||||
@@ -62,6 +74,11 @@ struct AppearanceSettings: View {
|
||||
}
|
||||
}
|
||||
|
||||
private var currentLanguage: String {
|
||||
let lang = Bundle.main.preferredLocalizations.first ?? "en"
|
||||
return Locale.current.localizedString(forIdentifier: lang)?.localizedCapitalized ?? lang
|
||||
}
|
||||
|
||||
private func updateAppIcon(image: String, icon: String?, tapped: Binding<Bool>) -> some View {
|
||||
Image(image)
|
||||
.resizable()
|
||||
|
||||
Reference in New Issue
Block a user