[iOS] Admin Dashboard - Allowed Tags Cleanup (#1489)

* Enable if AllowedTags exist instead of just blockedTags

* Separation

* cleanup

---------

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
This commit is contained in:
Joe Kribs 2025-04-14 18:49:05 -06:00 committed by GitHub
parent 8c4fde87f1
commit a585bbda5f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 26 additions and 21 deletions

View File

@ -42,6 +42,11 @@ struct EditServerUserAccessTagsView: View {
@State @State
private var error: Error? private var error: Error?
private var hasTags: Bool {
viewModel.user.policy?.blockedTags?.isEmpty == true &&
viewModel.user.policy?.allowedTags?.isEmpty == true
}
private var allowedTags: [TagWithAccess] { private var allowedTags: [TagWithAccess] {
viewModel.user.policy?.allowedTags? viewModel.user.policy?.allowedTags?
.sorted() .sorted()
@ -103,20 +108,16 @@ struct EditServerUserAccessTagsView: View {
} }
.navigationBarMenuButton( .navigationBarMenuButton(
isLoading: viewModel.backgroundStates.contains(.refreshing), isLoading: viewModel.backgroundStates.contains(.refreshing),
isHidden: isEditing || ( isHidden: isEditing || hasTags
viewModel.user.policy?.blockedTags?.isEmpty == true
)
) { ) {
Button(L10n.add, systemImage: "plus") { Button(L10n.add, systemImage: "plus") {
router.route(to: \.userAddAccessTag, viewModel) router.route(to: \.userAddAccessTag, viewModel)
} }
if viewModel.user.policy?.blockedTags?.isNotEmpty == true {
Button(L10n.edit, systemImage: "checkmark.circle") { Button(L10n.edit, systemImage: "checkmark.circle") {
isEditing = true isEditing = true
} }
} }
}
.onReceive(viewModel.events) { event in .onReceive(viewModel.events) { event in
switch event { switch event {
case let .error(eventError): case let .error(eventError):
@ -179,6 +180,7 @@ struct EditServerUserAccessTagsView: View {
} }
} else { } else {
if allowedTags.isNotEmpty { if allowedTags.isNotEmpty {
Section {
DisclosureGroup(L10n.allowed) { DisclosureGroup(L10n.allowed) {
ForEach( ForEach(
allowedTags, allowedTags,
@ -187,7 +189,9 @@ struct EditServerUserAccessTagsView: View {
) )
} }
} }
}
if blockedTags.isNotEmpty { if blockedTags.isNotEmpty {
Section {
DisclosureGroup(L10n.blocked) { DisclosureGroup(L10n.blocked) {
ForEach( ForEach(
blockedTags, blockedTags,
@ -199,15 +203,16 @@ struct EditServerUserAccessTagsView: View {
} }
} }
} }
}
// MARK: - Select/Remove All Button // MARK: - Select/Remove All Button
@ViewBuilder @ViewBuilder
private var navigationBarSelectView: some View { private var navigationBarSelectView: some View {
let isAllSelected = selectedTags.count == blockedTags.count let isAllSelected = selectedTags.count == blockedTags.count + allowedTags.count
Button(isAllSelected ? L10n.removeAll : L10n.selectAll) { Button(isAllSelected ? L10n.removeAll : L10n.selectAll) {
selectedTags = isAllSelected ? [] : Set(blockedTags) selectedTags = isAllSelected ? [] : Set(blockedTags + allowedTags)
} }
.buttonStyle(.toolbarPill) .buttonStyle(.toolbarPill)
.disabled(!isEditing) .disabled(!isEditing)