Skip to content

Instantly share code, notes, and snippets.

@xiangyu-sun
Last active June 20, 2023 15:51
Show Gist options
  • Save xiangyu-sun/59d558ca5b80c37d1388a342e2696309 to your computer and use it in GitHub Desktop.
Save xiangyu-sun/59d558ca5b80c37d1388a342e2696309 to your computer and use it in GitHub Desktop.
enum EventModel {}
extension EventModel {
struct StoreImpression: Equatable {
public let position: Int
public let filterData: AppliedFilters?
public let searchId: String
public let deliveryFeeCurrency: String
public let pricingId: Int?
public let rankingType: EventModel.RankingType?
public init(
position: Int,
filterData: EventModel.AppliedFilters?,
searchId: String,
deliveryFeeCurrency: String,
rankingType: EventModel.RankingType?,
pricingId: Int?
) {
self.position = position
self.filterData = filterData
self.searchId = searchId
self.deliveryFeeCurrency = deliveryFeeCurrency
self.pricingId = pricingId
self.rankingType = rankingType
}
}
enum RankingType: String, Equatable {
case marketplaceOptimization = "MO"
case legacy = "Legacy"
case hyperlocal = "Hyperlocal"
}
struct AppliedFilters: Equatable {
let selectedFilters: SelectedFilters
let prime: Bool
let personalizedFilterType: EventModel.PersonalizedFilterType
let origin: EventModel.AppliedFiltersOrigin
let toggleValue: Bool
let personalizedFilterPosition: Int?
let categoryID: Int?
init(
selectedFilters: SelectedFilters,
prime: Bool,
personalizedFilterType: EventModel.PersonalizedFilterType,
origin: EventModel.AppliedFiltersOrigin,
toggleValue: Bool,
personalizedFilterPosition: Int?,
categoryID: Int?
) {
self.selectedFilters = selectedFilters
self.prime = prime
self.personalizedFilterType = personalizedFilterType
self.origin = origin
self.toggleValue = toggleValue
self.personalizedFilterPosition = personalizedFilterPosition
self.categoryID = categoryID
}
}
}
extension EventModel {
struct SelectedFilters: Equatable {
let sortingId: Int?
let type: String?
let pricingId: Int?
init(sortingId: Int?, type: String?, pricingId: Int? = nil) {
self.sortingId = sortingId
self.type = type
self.pricingId = pricingId
}
}
}
extension EventModel {
enum PersonalizedFilterType: String {
case user
case city
case none
}
}
extension EventModel {
enum AppliedFiltersOrigin: String {
case topFiltersComponent
case filtersScreen
case primeToggle
case pickupToggle
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment