Closed larryonoff closed 3 years ago
Just implemented it myself. Please check. I can make pull request from it.
// MARK: - PaywallModel
extension PaywallModel: CustomStringConvertible {
public override var description: String {
let keysAndValues: [String: Any] = [
"developerId": developerId,
"variationId": variationId,
"revision": revision,
"isPromo": isPromo,
"products": products,
"visualPaywall": visualPaywall,
"customPayload": customPayload
].compactMapValues { $0 }
return keysAndValues
.map { "\($0.key): \($0.value)" }
.joined(separator: ", ")
}
}
// MARK: - ProductModel
extension ProductModel: CustomStringConvertible {
public override var description: String {
let keysAndValues: [String: Any] = [
"vendorProductId": vendorProductId,
"introductoryOfferEligibility": introductoryOfferEligibility,
"promotionalOfferEligibility": promotionalOfferEligibility,
"promotionalOfferId": promotionalOfferId,
"localizedDescription": localizedDescription,
"localizedTitle": localizedTitle,
"price": price,
"currencyCode": currencyCode,
"currencySymbol": currencySymbol,
"regionCode": regionCode,
"subscriptionPeriod": subscriptionPeriod,
"introductoryDiscount": introductoryDiscount,
"subscriptionGroupIdentifier": subscriptionGroupIdentifier,
"discounts": discounts,
"localizedPrice": localizedPrice,
"discounts": discounts,
"localizedSubscriptionPeriod": localizedSubscriptionPeriod
].compactMapValues { $0 }
return keysAndValues
.map { "\($0.key): \($0.value)" }
.joined(separator: ", ")
}
}
extension ProductModel.PeriodUnit: CustomStringConvertible {
public var description: String {
switch self {
case .day:
return "day"
case .week:
return "week"
case .month:
return "month"
case .year:
return "year"
case .unknown:
return "unknown"
}
}
}
extension ProductSubscriptionPeriodModel: CustomStringConvertible {
public override var description: String {
let keysAndValues: [String: Any] = [
"unit": unit,
"numberOfUnits": numberOfUnits
].compactMapValues { $0 }
return keysAndValues
.map { "\($0.key): \($0.value)" }
.joined(separator: ", ")
}
}
extension ProductDiscountModel: CustomStringConvertible {
public override var description: String {
let keysAndValues: [String: Any] = [
"price": price,
"identifier": identifier,
"subscriptionPeriod": subscriptionPeriod,
"numberOfPeriods": numberOfPeriods,
"paymentMode": paymentMode,
"localizedPrice": localizedPrice,
"localizedSubscriptionPeriod": localizedSubscriptionPeriod,
"localizedNumberOfPeriods": localizedNumberOfPeriods
].compactMapValues { $0 }
return keysAndValues
.map { "\($0.key): \($0.value)" }
.joined(separator: ", ")
}
}
extension ProductDiscountModel.PaymentMode: CustomStringConvertible {
public var description: String {
switch self {
case .payAsYouGo:
return "payAsYouGo"
case .payUpFront:
return "payUpFront"
case .freeTrial:
return "freeTrial"
case .unknown:
return "unknown"
}
}
}
// MARK: - PromoModel
extension PromoModel: CustomStringConvertible {
public override var description: String {
let keysAndValues: [String: Any] = [
"promoType": promoType,
"variationId": variationId,
"expiresAt": expiresAt,
"paywall": paywall
].compactMapValues { $0 }
return keysAndValues
.map { "\($0.key): \($0.value)" }
.joined(separator: ", ")
}
}
// MARK: - PurchaserInfoModel
extension PurchaserInfoModel: CustomStringConvertible {
public override var description: String {
let keysAndValues: [String: Any] = [
"paidAccessLevels": paidAccessLevels,
"subscriptions": subscriptions,
"nonSubscriptions": nonSubscriptions
].compactMapValues { $0 }
return keysAndValues
.map { "\($0.key): \($0.value)" }
.joined(separator: ", ")
}
}
extension PaidAccessLevelsInfoModel: CustomStringConvertible {
public override var description: String {
let keysAndValues: [String: Any] = [
"id": id,
"isActive": isActive,
"vendorProductId": vendorProductId,
"store": store,
"activatedAt": activatedAt,
"renewedAt": renewedAt,
"expiresAt": expiresAt,
"isLifetime": isLifetime,
"activeIntroductoryOfferType": activeIntroductoryOfferType,
"activePromotionalOfferType": activePromotionalOfferType,
"willRenew": willRenew,
"isInGracePeriod": isInGracePeriod,
"unsubscribedAt": unsubscribedAt,
"billingIssueDetectedAt": billingIssueDetectedAt
].compactMapValues { $0 }
return keysAndValues
.map { "\($0.key): \($0.value)" }
.joined(separator: ", ")
}
}
extension SubscriptionsInfoModel: CustomStringConvertible {
public override var description: String {
let keysAndValues: [String: Any] = [
"isActive": isActive,
"vendorProductId": vendorProductId,
"store": store,
"activatedAt": activatedAt,
"renewedAt": renewedAt,
"expiresAt": expiresAt,
"startsAt": startsAt,
"isLifetime": isLifetime,
"activeIntroductoryOfferType": activeIntroductoryOfferType,
"activePromotionalOfferType": activePromotionalOfferType,
"willRenew": willRenew,
"isInGracePeriod": isInGracePeriod,
"unsubscribedAt": unsubscribedAt,
"billingIssueDetectedAt": billingIssueDetectedAt,
"isSandbox": isSandbox,
"billingIssueDetectedAt": billingIssueDetectedAt,
"vendorTransactionId": vendorTransactionId,
"vendorOriginalTransactionId": vendorOriginalTransactionId
].compactMapValues { $0 }
return keysAndValues
.map { "\($0.key): \($0.value)" }
.joined(separator: ", ")
}
}
extension NonSubscriptionsInfoModel: CustomStringConvertible {
public override var description: String {
let keysAndValues: [String: Any] = [
"purchaseId": purchaseId,
"vendorProductId": vendorProductId,
"store": store,
"purchasedAt": purchasedAt,
"isOneTime": isOneTime,
"isSandbox": isSandbox,
"vendorTransactionId": vendorTransactionId,
"vendorOriginalTransactionId": vendorOriginalTransactionId
].compactMapValues { $0 }
return keysAndValues
.map { "\($0.key): \($0.value)" }
.joined(separator: ", ")
}
}
@larryonoff sure, feel free to create PR. We'll review and add in upcoming release in case everything's fine.
@Skifcha Done. https://github.com/adaptyteam/AdaptySDK-iOS/pull/8
@larryonoff let's close this one then and continue in PR, do you mind?
@Skifcha sure!
closing issue in favor PR #8
Please extend Model Objects with CustomStringConvertible to simplify debugging.
Now it prints e.g.
<Adapty.PurchaserInfoModel: 0x2832cbd80>
.