import Errors
import Foundation
import GenAPI
import Localization

public enum APIClipUpdateError: Error {
    case moderationError(MetadataEditErrorSchema)
}

extension APIClipUpdateError: PresentableError {
    public var localizedTitle: String {
        switch self {
        case let .moderationError(metadata):
            return metadata.errorType.localizedTitle
        }
    }

    public var localizedMessage: String? {
        switch self {
        case let .moderationError(metadata):
            return metadata.moderationErrorMessage
        }
    }
}

extension MetadataEditErrorSchema.ErrorType: @retroactive Equatable {
    fileprivate var localizedTitle: String {
        switch self {
        case .captionTooLong: L10n.APIClient.captionTooLong
        case .imageModerationError: L10n.APIClient.imageModerationError
        case .imageUploadError: L10n.APIClient.imageUploadError
        case .promptTooLong: L10n.APIClient.promptTooLong
        case .textModerationError: L10n.APIClient.textModerationError
        case .titleTooLong: L10n.APIClient.titleTooLong
        default: L10n.APIClient.error
        }
    }
}
