ios: group preference to prohibit files and media (#2611)
* ios: group preference to prohibit files and media * style
This commit is contained in:
committed by
GitHub
parent
77b3870654
commit
3e370a7c16
@@ -264,7 +264,7 @@ struct ComposeView: View {
|
||||
default: previewView()
|
||||
}
|
||||
HStack (alignment: .bottom) {
|
||||
Button {
|
||||
let b = Button {
|
||||
showChooseSource = true
|
||||
} label: {
|
||||
Image(systemName: "paperclip")
|
||||
@@ -274,6 +274,17 @@ struct ComposeView: View {
|
||||
.frame(width: 25, height: 25)
|
||||
.padding(.bottom, 12)
|
||||
.padding(.leading, 12)
|
||||
if case let .group(g) = chat.chatInfo,
|
||||
!g.fullGroupPreferences.files.on {
|
||||
b.disabled(true).onTapGesture {
|
||||
AlertManager.shared.showAlertMsg(
|
||||
title: "Files and media prohibited!",
|
||||
message: "Only group owners can enable files and media."
|
||||
)
|
||||
}
|
||||
} else {
|
||||
b
|
||||
}
|
||||
ZStack(alignment: .leading) {
|
||||
SendMessageView(
|
||||
composeState: $composeState,
|
||||
|
||||
@@ -27,6 +27,8 @@ struct GroupPreferencesView: View {
|
||||
featureSection(.directMessages, $preferences.directMessages.enable)
|
||||
featureSection(.reactions, $preferences.reactions.enable)
|
||||
featureSection(.voice, $preferences.voice.enable)
|
||||
// TODO uncomment in 5.3
|
||||
// featureSection(.files, $preferences.files.enable)
|
||||
|
||||
if groupInfo.canEdit {
|
||||
Section {
|
||||
|
||||
@@ -667,10 +667,11 @@ public enum ChatFeature: String, Decodable, Feature {
|
||||
|
||||
public enum GroupFeature: String, Decodable, Feature {
|
||||
case timedMessages
|
||||
case directMessages
|
||||
case fullDelete
|
||||
case reactions
|
||||
case voice
|
||||
case directMessages
|
||||
case files
|
||||
|
||||
public var id: Self { self }
|
||||
|
||||
@@ -688,6 +689,7 @@ public enum GroupFeature: String, Decodable, Feature {
|
||||
case .fullDelete: return NSLocalizedString("Delete for everyone", comment: "chat feature")
|
||||
case .reactions: return NSLocalizedString("Message reactions", comment: "chat feature")
|
||||
case .voice: return NSLocalizedString("Voice messages", comment: "chat feature")
|
||||
case .files: return NSLocalizedString("Files and media", comment: "chat feature")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -698,6 +700,7 @@ public enum GroupFeature: String, Decodable, Feature {
|
||||
case .fullDelete: return "trash.slash"
|
||||
case .reactions: return "face.smiling"
|
||||
case .voice: return "mic"
|
||||
case .files: return "doc"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -708,6 +711,7 @@ public enum GroupFeature: String, Decodable, Feature {
|
||||
case .fullDelete: return "trash.slash.fill"
|
||||
case .reactions: return "face.smiling.fill"
|
||||
case .voice: return "mic.fill"
|
||||
case .files: return "doc.fill"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -746,6 +750,11 @@ public enum GroupFeature: String, Decodable, Feature {
|
||||
case .on: return "Allow to send voice messages."
|
||||
case .off: return "Prohibit sending voice messages."
|
||||
}
|
||||
case .files:
|
||||
switch enabled {
|
||||
case .on: return "Allow to send files and media."
|
||||
case .off: return "Prohibit sending files and media."
|
||||
}
|
||||
}
|
||||
} else {
|
||||
switch self {
|
||||
@@ -774,6 +783,11 @@ public enum GroupFeature: String, Decodable, Feature {
|
||||
case .on: return "Group members can send voice messages."
|
||||
case .off: return "Voice messages are prohibited in this group."
|
||||
}
|
||||
case .files:
|
||||
switch enabled {
|
||||
case .on: return "Group members can send files and media."
|
||||
case .off: return "Files and media are prohibited in this group."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -912,19 +926,22 @@ public struct FullGroupPreferences: Decodable, Equatable {
|
||||
public var fullDelete: GroupPreference
|
||||
public var reactions: GroupPreference
|
||||
public var voice: GroupPreference
|
||||
public var files: GroupPreference
|
||||
|
||||
public init(
|
||||
timedMessages: TimedMessagesGroupPreference,
|
||||
directMessages: GroupPreference,
|
||||
fullDelete: GroupPreference,
|
||||
reactions: GroupPreference,
|
||||
voice: GroupPreference
|
||||
voice: GroupPreference,
|
||||
files: GroupPreference
|
||||
) {
|
||||
self.timedMessages = timedMessages
|
||||
self.directMessages = directMessages
|
||||
self.fullDelete = fullDelete
|
||||
self.reactions = reactions
|
||||
self.voice = voice
|
||||
self.files = files
|
||||
}
|
||||
|
||||
public static let sampleData = FullGroupPreferences(
|
||||
@@ -932,7 +949,8 @@ public struct FullGroupPreferences: Decodable, Equatable {
|
||||
directMessages: GroupPreference(enable: .off),
|
||||
fullDelete: GroupPreference(enable: .off),
|
||||
reactions: GroupPreference(enable: .on),
|
||||
voice: GroupPreference(enable: .on)
|
||||
voice: GroupPreference(enable: .on),
|
||||
files: GroupPreference(enable: .on)
|
||||
)
|
||||
}
|
||||
|
||||
@@ -942,19 +960,22 @@ public struct GroupPreferences: Codable {
|
||||
public var fullDelete: GroupPreference?
|
||||
public var reactions: GroupPreference?
|
||||
public var voice: GroupPreference?
|
||||
public var files: GroupPreference?
|
||||
|
||||
public init(
|
||||
timedMessages: TimedMessagesGroupPreference?,
|
||||
directMessages: GroupPreference?,
|
||||
fullDelete: GroupPreference?,
|
||||
reactions: GroupPreference?,
|
||||
voice: GroupPreference?
|
||||
voice: GroupPreference?,
|
||||
files: GroupPreference?
|
||||
) {
|
||||
self.timedMessages = timedMessages
|
||||
self.directMessages = directMessages
|
||||
self.fullDelete = fullDelete
|
||||
self.reactions = reactions
|
||||
self.voice = voice
|
||||
self.files = files
|
||||
}
|
||||
|
||||
public static let sampleData = GroupPreferences(
|
||||
@@ -962,7 +983,8 @@ public struct GroupPreferences: Codable {
|
||||
directMessages: GroupPreference(enable: .off),
|
||||
fullDelete: GroupPreference(enable: .off),
|
||||
reactions: GroupPreference(enable: .on),
|
||||
voice: GroupPreference(enable: .on)
|
||||
voice: GroupPreference(enable: .on),
|
||||
files: GroupPreference(enable: .on)
|
||||
)
|
||||
}
|
||||
|
||||
@@ -972,7 +994,8 @@ public func toGroupPreferences(_ fullPreferences: FullGroupPreferences) -> Group
|
||||
directMessages: fullPreferences.directMessages,
|
||||
fullDelete: fullPreferences.fullDelete,
|
||||
reactions: fullPreferences.reactions,
|
||||
voice: fullPreferences.voice
|
||||
voice: fullPreferences.voice,
|
||||
files: fullPreferences.files
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user