Bug fixes

This commit is contained in:
2025-03-19 01:55:58 -06:00
parent 292180b204
commit bbad8d6948
5 changed files with 195 additions and 166 deletions

View File

@ -34,7 +34,9 @@ struct InviteCodesView: View {
Text("No invite codes found")
.foregroundColor(.secondary)
Button("Refresh") {
refreshInviteCodes()
Task {
await viewModel.refreshInviteCodes()
}
}
.padding()
}
@ -49,7 +51,8 @@ struct InviteCodesView: View {
.contextMenu {
Button(role: .destructive) {
Task {
await viewModel.pdsService.disableInviteCode(code.id)
// After disabling the code, refresh the list
await viewModel.disableInviteCode(code.id)
}
} label: {
Label("Disable Code", systemImage: "xmark.circle")
@ -71,6 +74,10 @@ struct InviteCodesView: View {
Toggle("Show Disabled Codes (\(disabledCodes.count))", isOn: $showDisabledCodes)
.padding()
.background(Color(.systemBackground))
.onChange(of: showDisabledCodes) { _ in
// Refresh UI when toggle changes
viewModel.refreshUI()
}
}
}
}
@ -81,6 +88,7 @@ struct InviteCodesView: View {
isCreatingCode = true
Task {
await viewModel.pdsService.createInviteCode()
await viewModel.refreshInviteCodes()
isCreatingCode = false
}
} label: {
@ -92,43 +100,18 @@ struct InviteCodesView: View {
}
.disabled(isCreatingCode)
}
ToolbarItem(placement: .navigationBarLeading) {
Button {
refreshInviteCodes()
} label: {
if isRefreshing {
ProgressView()
} else {
Label("Refresh", systemImage: "arrow.clockwise")
}
}
.disabled(isRefreshing)
}
}
.refreshable {
await viewModel.pdsService.fetchInviteCodes()
print("⏳ Pull-to-refresh: Fetching invite codes")
await viewModel.refreshInviteCodes()
print("✅ Pull-to-refresh completed")
}
}
.task {
// Only fetch if we don't already have data
if viewModel.inviteCodes.isEmpty && !viewModel.isLoading {
await viewModel.pdsService.fetchInviteCodes()
}
}
.onAppear {
// Always attempt to refresh when view appears
if !viewModel.isLoading {
refreshInviteCodes()
}
}
}
private func refreshInviteCodes() {
isRefreshing = true
Task {
await viewModel.pdsService.fetchInviteCodes()
isRefreshing = false
print("⏳ Task: Fetching invite codes")
// Always fetch on initial load
await viewModel.refreshInviteCodes()
print("✅ Task fetch completed")
}
}
}

View File

@ -22,7 +22,9 @@ struct UserListView: View {
Text("No users found")
.foregroundColor(.secondary)
Button("Refresh") {
refreshUsers()
Task {
await viewModel.refreshUsers()
}
}
.padding()
}
@ -70,22 +72,10 @@ struct UserListView: View {
}
}
.navigationTitle("Users")
.toolbar {
ToolbarItem(placement: .navigationBarTrailing) {
Button {
refreshUsers()
} label: {
if isRefreshing {
ProgressView()
} else {
Label("Refresh", systemImage: "arrow.clockwise")
}
}
.disabled(isRefreshing)
}
}
.refreshable {
await viewModel.pdsService.fetchUsers()
print("⏳ Pull-to-refresh: Fetching users")
await viewModel.refreshUsers()
print("✅ Pull-to-refresh completed")
}
.sheet(isPresented: $showingEditSheet) {
if let user = editingUser {
@ -105,6 +95,7 @@ struct UserListView: View {
Task {
if await viewModel.pdsService.editUserHandle(userId: user.id, newHandle: newHandle) {
showingEditSheet = false
await viewModel.refreshUsers() // Refresh to show updated handle
}
}
}
@ -123,7 +114,7 @@ struct UserListView: View {
if let user = selectedUser {
Task {
await viewModel.pdsService.suspendUser(userId: user.id, reason: suspensionReason)
await viewModel.pdsService.fetchUsers() // Refresh after suspension
await viewModel.refreshUsers() // Refresh after suspension
}
}
}
@ -138,7 +129,7 @@ struct UserListView: View {
if let user = selectedUser {
Task {
await viewModel.pdsService.reactivateUser(userId: user.id)
await viewModel.pdsService.fetchUsers() // Refresh after reactivation
await viewModel.refreshUsers() // Refresh after reactivation
}
}
}
@ -149,24 +140,10 @@ struct UserListView: View {
}
}
.task {
// Only fetch if we don't already have data
if viewModel.users.isEmpty && !viewModel.isLoading {
await viewModel.pdsService.fetchUsers()
}
}
.onAppear {
// Always attempt to refresh when view appears
if !viewModel.isLoading {
refreshUsers()
}
}
}
private func refreshUsers() {
isRefreshing = true
Task {
await viewModel.pdsService.fetchUsers()
isRefreshing = false
print("⏳ Task: Fetching users")
// Always fetch on initial load
await viewModel.refreshUsers()
print("✅ Task fetch completed")
}
}
}