Compare commits
	
		
			No commits in common. "526a57b556f888024f8fc5c580c1c7c44a6b966d" and "9f6beecb49ced0f137982d55212dc8a5516ff2f9" have entirely different histories.
		
	
	
		
			526a57b556
			...
			9f6beecb49
		
	
		
@ -94,6 +94,9 @@
 | 
			
		||||
    },
 | 
			
		||||
    "Email не подтверждён. Подтвердите, чтобы активировать дополнительные проверки." : {
 | 
			
		||||
      "comment" : "Описание необходимости подтверждения email"
 | 
			
		||||
    },
 | 
			
		||||
    "error" : {
 | 
			
		||||
 | 
			
		||||
    },
 | 
			
		||||
    "Fun Fest" : {
 | 
			
		||||
      "comment" : "Fun Fest",
 | 
			
		||||
@ -641,9 +644,6 @@
 | 
			
		||||
    },
 | 
			
		||||
    "Значение сохранено в буфере обмена." : {
 | 
			
		||||
      "comment" : "Сообщение после копирования"
 | 
			
		||||
    },
 | 
			
		||||
    "Идет загрузка..." : {
 | 
			
		||||
 | 
			
		||||
    },
 | 
			
		||||
    "Идея" : {
 | 
			
		||||
      "comment" : "feedback category: idea",
 | 
			
		||||
 | 
			
		||||
@ -25,6 +25,14 @@ struct BlockedUsersView: View {
 | 
			
		||||
                emptyState
 | 
			
		||||
            } else {
 | 
			
		||||
                usersSection
 | 
			
		||||
                if isLoading {
 | 
			
		||||
                    Section {
 | 
			
		||||
                        ProgressView()
 | 
			
		||||
                            .frame(maxWidth: .infinity, alignment: .center)
 | 
			
		||||
                    }
 | 
			
		||||
                } else if errorMessageDown != nil{
 | 
			
		||||
                    Text("error")
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        .navigationTitle(NSLocalizedString("Заблокированные", comment: ""))
 | 
			
		||||
@ -80,60 +88,44 @@ struct BlockedUsersView: View {
 | 
			
		||||
 | 
			
		||||
    private var usersSection: some View {
 | 
			
		||||
        Section(header: Text(NSLocalizedString("Заблокированные", comment: ""))) {
 | 
			
		||||
            ForEach(blockedUsers) { user in
 | 
			
		||||
                userRow(user)
 | 
			
		||||
            }
 | 
			
		||||
            if isLoading {
 | 
			
		||||
                Text("Идет загрузка...")
 | 
			
		||||
                    .foregroundColor(.gray)
 | 
			
		||||
                    .frame(maxWidth: .infinity, alignment: .center)
 | 
			
		||||
                    .listRowBackground(Color.clear)
 | 
			
		||||
                    .listRowSeparator(.hidden)
 | 
			
		||||
            } else if let errorMessage = errorMessageDown {
 | 
			
		||||
                Text(errorMessage)
 | 
			
		||||
                    .foregroundColor(.red)
 | 
			
		||||
                    .frame(maxWidth: .infinity, alignment: .center)
 | 
			
		||||
                    .listRowBackground(Color.clear)
 | 
			
		||||
                    .listRowSeparator(.hidden)
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private func userRow(_ user: BlockedUser) -> some View {
 | 
			
		||||
        HStack(spacing: 12) {
 | 
			
		||||
            Circle()
 | 
			
		||||
                .fill(Color.accentColor.opacity(0.15))
 | 
			
		||||
                .frame(width: 44, height: 44)
 | 
			
		||||
                .overlay(
 | 
			
		||||
                    Text(user.initials)
 | 
			
		||||
                        .font(.headline)
 | 
			
		||||
                        .foregroundColor(.accentColor)
 | 
			
		||||
                )
 | 
			
		||||
            VStack(alignment: .leading, spacing: 4) {
 | 
			
		||||
                Text(user.displayName)
 | 
			
		||||
                    .font(.body)
 | 
			
		||||
                if let handle = user.handle {
 | 
			
		||||
                    Text(handle)
 | 
			
		||||
                        .font(.caption)
 | 
			
		||||
                        .foregroundColor(.secondary)
 | 
			
		||||
            ForEach(blockedUsers) {
 | 
			
		||||
                user in
 | 
			
		||||
                HStack(spacing: 12) {
 | 
			
		||||
                    Circle()
 | 
			
		||||
                        .fill(Color.accentColor.opacity(0.15))
 | 
			
		||||
                        .frame(width: 44, height: 44)
 | 
			
		||||
                        .overlay(
 | 
			
		||||
                            Text(user.initials)
 | 
			
		||||
                                .font(.headline)
 | 
			
		||||
                                .foregroundColor(.accentColor)
 | 
			
		||||
                        )
 | 
			
		||||
                    VStack(alignment: .leading, spacing: 4) {
 | 
			
		||||
                        Text(user.displayName)
 | 
			
		||||
                            .font(.body)
 | 
			
		||||
                        if let handle = user.handle {
 | 
			
		||||
                            Text(handle)
 | 
			
		||||
                                .font(.caption)
 | 
			
		||||
                                .foregroundColor(.secondary)
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                    Spacer()
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            Spacer()
 | 
			
		||||
        }
 | 
			
		||||
        .padding(.vertical, 0)
 | 
			
		||||
        .swipeActions(edge: .trailing) {
 | 
			
		||||
            Button(role: .destructive) {
 | 
			
		||||
                pendingUnblock = user
 | 
			
		||||
                showUnblockConfirmation = true
 | 
			
		||||
            } label: {
 | 
			
		||||
                Label(NSLocalizedString("Разблокировать", comment: ""), systemImage: "person.crop.circle.badge.xmark")
 | 
			
		||||
            }
 | 
			
		||||
            .disabled(removingUserIds.contains(user.id))
 | 
			
		||||
        }
 | 
			
		||||
        .onAppear {
 | 
			
		||||
            if user.id == blockedUsers.last?.id {
 | 
			
		||||
                Task {
 | 
			
		||||
                    await loadBlockedUsers()
 | 
			
		||||
                .padding(.vertical, 0)
 | 
			
		||||
                .swipeActions(edge: .trailing) {
 | 
			
		||||
                    Button(role: .destructive) {
 | 
			
		||||
                        pendingUnblock = user
 | 
			
		||||
                        showUnblockConfirmation = true
 | 
			
		||||
                    } label: {
 | 
			
		||||
                        Label(NSLocalizedString("Разблокировать", comment: ""), systemImage: "person.crop.circle.badge.xmark")
 | 
			
		||||
                    }
 | 
			
		||||
                    .disabled(removingUserIds.contains(user.id))
 | 
			
		||||
                }
 | 
			
		||||
                .onAppear {
 | 
			
		||||
                    if user.id == blockedUsers.last?.id {
 | 
			
		||||
                        Task {
 | 
			
		||||
                            await loadBlockedUsers()
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
@ -193,7 +185,7 @@ struct BlockedUsersView: View {
 | 
			
		||||
            if offset == 0 {
 | 
			
		||||
                loadError = message
 | 
			
		||||
            }
 | 
			
		||||
//            activeAlert = .error(message: message)
 | 
			
		||||
            activeAlert = .error(message: message)
 | 
			
		||||
            errorMessageDown = message
 | 
			
		||||
            if AppConfig.DEBUG { print("[BlockedUsersView] load blocked users failed: \(error)") }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user