//
//  AlertHandler.swift
//  Nextcloud Cookbook iOS Client
//
//  Created by Vincent Meilinger on 18.10.23.
//

import Foundation
import SwiftUI


enum AlertButton: LocalizedStringKey, Identifiable {
    var id: Self {
        return self
    }
    
    case OK = "Ok", DELETE = "Delete", CANCEL = "Cancel"
}



enum AlertType: Error {
    
    case NO_TITLE,
         DUPLICATE,
         UPLOAD_ERROR,
         CONFIRM_DELETE,
         LOGIN_FAILED,
         GENERIC,
         CUSTOM(title: LocalizedStringKey, description: LocalizedStringKey)
    
    var localizedDescription: LocalizedStringKey {
        switch self {
        case .NO_TITLE:
            return "Please enter a recipe name."
        case .DUPLICATE:
            return "A recipe with that name already exists."
        case .UPLOAD_ERROR:
            return "Unable to upload your recipe. Please check your internet connection."
        case .CONFIRM_DELETE:
            return "This action is not reversible!"
        case .LOGIN_FAILED:
            return "Please check your credentials and internet connection."
        case .CUSTOM(title: _, description: let description):
            return description
        default:
            return "An unknown error occured."
        }
    }
    
    var localizedTitle: LocalizedStringKey {
        switch self {
        case .NO_TITLE:
            return "Missing recipe name."
        case .DUPLICATE:
            return "Duplicate recipe."
        case .UPLOAD_ERROR:
            return "Network error."
        case .CONFIRM_DELETE:
            return "Delete recipe?"
        case .LOGIN_FAILED:
            return "Login failed."
        case .CUSTOM(title: let title, description: _):
            return title
        default:
            return "Error."
        }
    }
    
    var alertButtons: [AlertButton] {
        switch self {
        case .CONFIRM_DELETE:
            return [.CANCEL, .DELETE]
        default:
            return [.OK]
        }
    }
}

