import Foundation
import Localization

public struct RecommendUser: Equatable, Identifiable {
    public enum Reason: String {
        case popular
        case followingYou = "following_you"
        case youMightKnow = "you_might_know"
        case fromYourContacts = "from_your_contacts"
        case unknown

        public var title: String {
            switch self {
            case .popular: L10n.APIClient.recommendPopularUser
            case .followingYou: L10n.APIClient.recommendFollowingUser
            case .youMightKnow: L10n.APIClient.recommendMightKnowUser
            case .fromYourContacts: L10n.APIClient.recommendContactsUser
            case .unknown: L10n.APIClient.recommendUnknownUser
            }
        }
    }

    public var id: String { user.id }
    public var user: SimpleProfile
    public let reason: Reason
}

extension RecommendUser {
    init(_ remote: GenAPI.RecommendUser) throws {
        user = try SimpleProfile(remote.user)
        reason = Reason(rawValue: remote.reason.rawValue) ?? .unknown
    }
}
