Logo

Input Data

The SDK supports custom input data for destination-specific behavior, including custom back-button actions.

EcoInputData

public enum EcoInputData {
    case birbonusCabinet(BirbonusCabinetInputData? = nil)
    case benefits
    case bravoClub
    case subscription
}

BirbonusCabinetInputData

Use BirbonusCabinetInputData to customize the back actions of the Birbonus Cabinet and category screens.

public struct BirbonusCabinetInputData {
    public let cabinetBackAction: (() -> Void)?
    public let categoryBackAction: (() -> Void)?

    public init(
        cabinetBackAction: (() -> Void)? = nil,
        categoryBackAction: (() -> Void)? = nil
    )
}

Initializing the Coordinator with Input Data

let inputData = BirbonusCabinetInputData(
    cabinetBackAction: {
        print("Custom cabinet back action")
        // Add custom navigation logic.
    },
    categoryBackAction: {
        print("Custom category back action")
        // Add custom navigation logic.
    }
)

let coordinator = EcoCoordinator(
    router: navigationController,
    configurator: configurator,
    inputData: .birbonusCabinet(inputData)
)

Updating Input Data at Runtime

let newInputData = BirbonusCabinetInputData(
    cabinetBackAction: {
        navigationController.popToRootViewController(animated: true)
    }
)

coordinator.update(
    inputData: .birbonusCabinet(newInputData)
)