import Foundation
import UIKit
import TelegramPresentationData
import TelegramUIPreferences

struct WebSearchInterfaceInnerState: Equatable {
    let scope: WebSearchScope
    let query: String
}

struct WebSearchInterfaceState: Equatable {
    let state: WebSearchInterfaceInnerState?
    let presentationData: PresentationData
    let gifProvider: String?
    
    init (presentationData: PresentationData) {
        self.state = nil
        self.presentationData = presentationData
        self.gifProvider = nil
    }
    
    init(state: WebSearchInterfaceInnerState?, presentationData: PresentationData, gifProvider: String? = nil) {
        self.state = state
        self.presentationData = presentationData
        self.gifProvider = gifProvider
    }
    
    func withUpdatedScope(_ scope: WebSearchScope) -> WebSearchInterfaceState {
        return WebSearchInterfaceState(state: WebSearchInterfaceInnerState(scope: scope, query: self.state?.query ?? ""), presentationData: self.presentationData, gifProvider: self.gifProvider)
    }
    
    func withUpdatedQuery(_ query: String) -> WebSearchInterfaceState {
        return WebSearchInterfaceState(state: WebSearchInterfaceInnerState(scope: self.state?.scope ?? .images, query: query), presentationData: self.presentationData, gifProvider: self.gifProvider)
    }
    
    func withUpdatedPresentationData(_ presentationData: PresentationData) -> WebSearchInterfaceState {
        return WebSearchInterfaceState(state: self.state, presentationData: presentationData, gifProvider: self.gifProvider)
    }
    
    func withUpdatedGifProvider(_ gifProvider: String?) -> WebSearchInterfaceState {
        return WebSearchInterfaceState(state: self.state, presentationData: self.presentationData, gifProvider: gifProvider)
    }
}