Added demo mode for app review

This commit is contained in:
2025-03-19 12:23:49 -06:00
parent bbad8d6948
commit dc17130468
5 changed files with 294 additions and 22 deletions

View File

@ -83,12 +83,22 @@ struct InviteCodesView: View {
}
.navigationTitle("Invite Codes")
.toolbar {
ToolbarItem(placement: .navigationBarLeading) {
if viewModel.demoMode {
Text("DEMO MODE")
.font(.caption)
.padding(5)
.background(Color.green.opacity(0.2))
.foregroundColor(.green)
.cornerRadius(4)
}
}
ToolbarItem(placement: .navigationBarTrailing) {
Button {
isCreatingCode = true
Task {
await viewModel.pdsService.createInviteCode()
await viewModel.refreshInviteCodes()
await viewModel.createInviteCode()
isCreatingCode = false
}
} label: {

View File

@ -64,11 +64,32 @@ struct LoginView: View {
.cornerRadius(8)
}
Button("Toggle Debug Info") {
Divider()
.padding(.vertical, 10)
.padding(.horizontal, 40)
Button {
enterDemoMode()
} label: {
HStack {
Image(systemName: "rectangle.fill.on.rectangle.fill.circle")
.imageScale(.medium)
Text("Enter Demo Mode")
}
.frame(maxWidth: .infinity)
.padding()
}
.background(Color.green)
.foregroundColor(.white)
.cornerRadius(10)
.padding(.horizontal, 40)
Button("Show Debug Info") {
showingDebugInfo.toggle()
}
.font(.caption)
.padding(.top, 20)
.foregroundColor(.secondary)
.padding(.top, 10)
if showingDebugInfo {
ScrollView {
@ -99,6 +120,11 @@ struct LoginView: View {
}
}
private func enterDemoMode() {
debugLogs.append("Entering demo mode...")
viewModel.enableDemoMode()
}
private func login() {
isLoggingIn = true

View File

@ -72,6 +72,18 @@ struct UserListView: View {
}
}
.navigationTitle("Users")
.toolbar {
ToolbarItem(placement: .navigationBarLeading) {
if viewModel.demoMode {
Text("DEMO MODE")
.font(.caption)
.padding(5)
.background(Color.green.opacity(0.2))
.foregroundColor(.green)
.cornerRadius(4)
}
}
}
.refreshable {
print("⏳ Pull-to-refresh: Fetching users")
await viewModel.refreshUsers()
@ -93,9 +105,8 @@ struct UserListView: View {
Button("Save") {
Task {
if await viewModel.pdsService.editUserHandle(userId: user.id, newHandle: newHandle) {
if await viewModel.editUserHandle(userId: user.id, newHandle: newHandle) {
showingEditSheet = false
await viewModel.refreshUsers() // Refresh to show updated handle
}
}
}
@ -112,9 +123,15 @@ struct UserListView: View {
Button("Cancel", role: .cancel) { }
Button("Suspend", role: .destructive) {
if let user = selectedUser {
print("Attempting to suspend user: \(user.id)")
Task {
await viewModel.pdsService.suspendUser(userId: user.id, reason: suspensionReason)
await viewModel.refreshUsers() // Refresh after suspension
let success = await viewModel.suspendUser(userId: user.id)
print("Suspend user result: \(success)")
// Force UI update
await MainActor.run {
viewModel.refreshUI()
}
}
}
}
@ -127,9 +144,15 @@ struct UserListView: View {
Button("Cancel", role: .cancel) { }
Button("Reactivate") {
if let user = selectedUser {
print("Attempting to reactivate user: \(user.id)")
Task {
await viewModel.pdsService.reactivateUser(userId: user.id)
await viewModel.refreshUsers() // Refresh after reactivation
let success = await viewModel.reactivateUser(userId: user.id)
print("Reactivate user result: \(success)")
// Force UI update
await MainActor.run {
viewModel.refreshUI()
}
}
}
}
@ -149,7 +172,7 @@ struct UserListView: View {
}
struct UserRow: View {
let user: PDSUser
@ObservedObject var user: PDSUser
var formattedDate: String {
let formatter = DateFormatter()