Skip to content

Commit

Permalink
Tweak Moderation Settings (#1691)
Browse files Browse the repository at this point in the history
  • Loading branch information
Sjmarf authored Feb 1, 2025
1 parent 303869f commit 38c773c
Show file tree
Hide file tree
Showing 5 changed files with 82 additions and 11 deletions.
6 changes: 5 additions & 1 deletion Mlem.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -232,6 +232,7 @@
03A630F42D4976EB009A47A6 /* ShieldsBadgeView+Logic.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03A630F32D4976EB009A47A6 /* ShieldsBadgeView+Logic.swift */; };
03A6315E2D4D1A1B009A47A6 /* DefaultFeedSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03A6315D2D4D1A1B009A47A6 /* DefaultFeedSettingsView.swift */; };
03A631602D4D1CBB009A47A6 /* HapticSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03A6315F2D4D1CBB009A47A6 /* HapticSettingsView.swift */; };
03A6316D2D4E3D24009A47A6 /* ModeratorActionSeparationSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03A6316C2D4E3D24009A47A6 /* ModeratorActionSeparationSettingsView.swift */; };
03A82FA12C0D1E8500D01A5C /* ApiClient+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03A82FA02C0D1E8500D01A5C /* ApiClient+Extensions.swift */; };
03A82FA32C0D1F2400D01A5C /* View+ExternalApiWarning.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03A82FA22C0D1F2400D01A5C /* View+ExternalApiWarning.swift */; };
03AB484F2CBAE33500567FF9 /* MarkdownWithLinkList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03AB484E2CBAE33500567FF9 /* MarkdownWithLinkList.swift */; };
Expand Down Expand Up @@ -728,9 +729,10 @@
03A630EE2D497143009A47A6 /* TappableLinksSettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TappableLinksSettingsView.swift; sourceTree = "<group>"; };
03A630F02D497674009A47A6 /* ShieldsBadgeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShieldsBadgeView.swift; sourceTree = "<group>"; };
03A630F32D4976EB009A47A6 /* ShieldsBadgeView+Logic.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ShieldsBadgeView+Logic.swift"; sourceTree = "<group>"; };
03A6315C2D4D15F1009A47A6 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; lastKnownFileType = text; path = PrivacyInfo.xcprivacy; sourceTree = "<group>"; };
03A6315D2D4D1A1B009A47A6 /* DefaultFeedSettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DefaultFeedSettingsView.swift; sourceTree = "<group>"; };
03A6315F2D4D1CBB009A47A6 /* HapticSettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HapticSettingsView.swift; sourceTree = "<group>"; };
03A6315C2D4D15F1009A47A6 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; lastKnownFileType = text; path = PrivacyInfo.xcprivacy; sourceTree = "<group>"; };
03A6316C2D4E3D24009A47A6 /* ModeratorActionSeparationSettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ModeratorActionSeparationSettingsView.swift; sourceTree = "<group>"; };
03A82FA02C0D1E8500D01A5C /* ApiClient+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ApiClient+Extensions.swift"; sourceTree = "<group>"; };
03A82FA22C0D1F2400D01A5C /* View+ExternalApiWarning.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "View+ExternalApiWarning.swift"; sourceTree = "<group>"; };
03AB484E2CBAE33500567FF9 /* MarkdownWithLinkList.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MarkdownWithLinkList.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -1088,6 +1090,7 @@
03A630EE2D497143009A47A6 /* TappableLinksSettingsView.swift */,
03A630EC2D497005009A47A6 /* ExternalLinkSettingsView.swift */,
038028D72CACAB960091A8A2 /* ModeratorSettingsView.swift */,
03A6316C2D4E3D24009A47A6 /* ModeratorActionSeparationSettingsView.swift */,
03BF11C42D3D3AFB00CC1F66 /* PostReadIndicatorSettingsView.swift */,
CDBFCB692C04EFFE008CD468 /* PostSettingsView.swift */,
037F783E2D3BD05500D4E180 /* PostSettingsView+PostSizePicker.swift */,
Expand Down Expand Up @@ -2602,6 +2605,7 @@
030E95E72C80A20A0045BC2C /* View+NavigationTransition.swift in Sources */,
CD45CB0D2D1880E8008BC729 /* FiltersSettingsView.swift in Sources */,
038028FF2CB72AC90091A8A2 /* ReasonShortcutView.swift in Sources */,
03A6316D2D4E3D24009A47A6 /* ModeratorActionSeparationSettingsView.swift in Sources */,
03FE14062BF9445F00A8377F /* CloseButtonView.swift in Sources */,
03D2A6422C011F4A00ED4FF2 /* AccountListRowBody.swift in Sources */,
03134A5A2BEC2253002662CC /* AvatarStackView.swift in Sources */,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
//
// ModeratorActionSeparationSettingsView.swift
// Mlem
//
// Created by Sjmarf on 2025-02-01.
//

import SwiftUI

struct ModeratorActionSeparationSettingsView: View {
@Setting(\.moderatorActionGrouping) var moderatorActionGrouping

var body: some View {
Form {
SettingsHeaderView(
title: "Moderator Actions",
description: "Customize how moderator actions are separated from regular actions in context menus."
) {}
Section {
Picker("Separate Actions Using", systemImage: Icons.menuItems, selection: $moderatorActionGrouping) {
ForEach(ModeratorActionGrouping.allCases, id: \.self) { item in
Label(String(localized: item.label), systemImage: item.systemImage)
}
}
.pickerStyle(.inline)
.labelsHidden()
}
}
.labelStyle(.conditional)
.contentMargins(.top, 16)
}
}
43 changes: 33 additions & 10 deletions Mlem/App/Views/Root/Tabs/Settings/ModeratorSettingsView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -8,21 +8,28 @@
import SwiftUI

struct ModeratorSettingsView: View {
@Environment(Palette.self) var palette

@Setting(\.moderatorActionGrouping) var moderatorActionGrouping
@Setting(\.showAllModActions) var showAllModActions
@Setting(\.tabInboxBadgeIncludedTypes) var tabInboxBadgeIncludedTypes

var body: some View {
Form {
SettingsHeaderView(
title: "Moderation",
description: "Manage settings related to content moderation.",
systemImage: Icons.moderationFill
)
.tint(palette.moderation)
Section {
Picker("Separate Actions Using", systemImage: Icons.menuItems, selection: $moderatorActionGrouping) {
Text("Divider")
.tag(ModeratorActionGrouping.divider)
Text("Disclosure Group")
.tag(ModeratorActionGrouping.disclosureGroup)
Text("Separate Menu")
.tag(ModeratorActionGrouping.separateMenu)
}
NavigationLink(
"Moderator Actions",
value: .init(localized: moderatorActionGrouping.label),
fallbackValue: "",
systemImage: Icons.menuItems,
destination: .settings(.separateModeratorActions)
)
}
Section {
Toggle("Show All Actions in Feed", systemImage: Icons.menuCircle, isOn: $showAllModActions)
Expand All @@ -40,11 +47,11 @@ struct ModeratorSettingsView: View {
}
}
.labelStyle(.conditional)
.navigationTitle("Moderation")
.contentMargins(.top, 16)
}
}

enum ModeratorActionGrouping: String, Codable {
enum ModeratorActionGrouping: String, Codable, CaseIterable {
case divider, disclosureGroup, separateMenu

init?(rawValue: String) {
Expand All @@ -60,4 +67,20 @@ enum ModeratorActionGrouping: String, Codable {
return nil
}
}

var label: LocalizedStringResource {
switch self {
case .divider: "Divider"
case .disclosureGroup: "Disclosure Group"
case .separateMenu: "Separate Menu"
}
}

var systemImage: String {
switch self {
case .divider: "minus"
case .disclosureGroup: Icons.dropDown
case .separateMenu: Icons.moderation
}
}
}
3 changes: 3 additions & 0 deletions Mlem/App/Views/Shared/Navigation/SettingsPage.swift
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ enum SettingsPage: Hashable {
case about, advanced, developer, errorLog
case postInteractionBar, commentInteractionBar, replyInteractionBar
case moderation
case separateModeratorActions
case licences, document(Document)

@ViewBuilder
Expand Down Expand Up @@ -119,6 +120,8 @@ enum SettingsPage: Hashable {
FiltersSettingsView()
case .moderation:
ModeratorSettingsView()
case .separateModeratorActions:
ModeratorActionSeparationSettingsView()
case .subscriptionList:
SubscriptionListSettingsView()
case .tabBar:
Expand Down
9 changes: 9 additions & 0 deletions Mlem/Localizable.xcstrings
Original file line number Diff line number Diff line change
Expand Up @@ -770,6 +770,9 @@
}
}
}
},
"Customize how moderator actions are separated from regular actions in context menus." : {

},
"Customize how often Mlem plays haptic feedback." : {
"localizations" : {
Expand Down Expand Up @@ -1317,6 +1320,9 @@
},
"Manage how Mlem interacts with Lemmy instances and other websites." : {

},
"Manage settings related to content moderation." : {

},
"Manage your overall setup for Mlem." : {

Expand Down Expand Up @@ -1398,6 +1404,9 @@
},
"Moderator" : {

},
"Moderator Actions" : {

},
"Moderator was appointed" : {

Expand Down

0 comments on commit 38c773c

Please sign in to comment.