Files
omnivore/apple/OmnivoreKit/Sources/Models/DataModels/NewUserProfile.swift
2022-12-06 13:35:46 +08:00

53 lines
1.0 KiB
Swift

import Foundation
import Utils
public struct NewUserProfile: Codable {
public let username: String
public let name: String
public let bio: String?
public init(
username: String,
name: String,
bio: String? = nil
) {
self.username = username
self.name = name
self.bio = bio
}
}
public extension NewUserProfile {
static func make(
username: String,
name: String,
bio: String?
) -> Either<NewUserProfile, String> {
let userProfile = NewUserProfile(
username: username,
name: name,
bio: bio
)
if let errorMessage = userProfile.validationErrorMessage {
return .right(errorMessage)
} else {
return .left(userProfile)
}
}
private var validationErrorMessage: String? {
if name.isEmpty {
return "The name field is missing."
}
return nil
}
}
public extension Viewer {
var unwrappedUsername: String { username ?? "" }
var unwrappedName: String { name ?? "" }
var unwrappedUserID: String { userID ?? "" }
}