From 9ffdaf0dacdf6c76dd25fdd574e594fb1dd78a43 Mon Sep 17 00:00:00 2001 From: Andrea Bizzotto Date: Sun, 4 Mar 2018 09:50:37 +0000 Subject: [PATCH 1/5] Add link to SwiftyStoreKit on CocoaPods --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index daffdd12..6060ffd0 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ [![Issues](https://img.shields.io/github/issues/bizz84/SwiftyStoreKit.svg?style=flat)](https://github.com/bizz84/SwiftyStoreKit/issues) [![Cocoapod](http://img.shields.io/cocoapods/v/SwiftyStoreKit.svg?style=flat)](http://cocoadocs.org/docsets/SwiftyStoreKit/) [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) -[![Downloads](https://img.shields.io/cocoapods/dm/SwiftyStoreKit.svg)]() +[![Downloads](https://img.shields.io/cocoapods/dm/SwiftyStoreKit.svg)](https://cocoapods.org/pods/SwiftyStoreKit) [![Twitter](https://img.shields.io/badge/twitter-@biz84-blue.svg?maxAge=2592000)](http://twitter.com/biz84) SwiftyStoreKit is a lightweight In App Purchases framework for iOS 8.0+, tvOS 9.0+ and macOS 10.10+. From c154537799d58a4cf2b24abdff224574f66bc7b6 Mon Sep 17 00:00:00 2001 From: Matt Barker Date: Tue, 3 Apr 2018 15:48:17 -0500 Subject: [PATCH 2/5] added compactMap with InAppReceipt.swift --- SwiftyStoreKit/InAppReceipt.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SwiftyStoreKit/InAppReceipt.swift b/SwiftyStoreKit/InAppReceipt.swift index e6693995..37428a1b 100644 --- a/SwiftyStoreKit/InAppReceipt.swift +++ b/SwiftyStoreKit/InAppReceipt.swift @@ -96,7 +96,7 @@ internal class InAppReceipt { let filteredReceiptsInfo = filterReceiptsInfo(receipts: receipts, withProductIds: [productId]) let nonCancelledReceiptsInfo = filteredReceiptsInfo.filter { receipt in receipt["cancellation_date"] == nil } - let receiptItems = nonCancelledReceiptsInfo.flatMap { ReceiptItem(receiptInfo: $0) } + let receiptItems = nonCancelledReceiptsInfo.compactMap { ReceiptItem(receiptInfo: $0) } // Verify that at least one receipt has the right product id if let firstItem = receiptItems.first { return .purchased(item: firstItem) @@ -133,7 +133,7 @@ internal class InAppReceipt { let receiptDate = getReceiptRequestDate(inReceipt: receipt) ?? date - let receiptItems = nonCancelledReceiptsInfo.flatMap { ReceiptItem(receiptInfo: $0) } + let receiptItems = nonCancelledReceiptsInfo.compactMap { ReceiptItem(receiptInfo: $0) } if nonCancelledReceiptsInfo.count > receiptItems.count { print("receipt has \(nonCancelledReceiptsInfo.count) items, but only \(receiptItems.count) were parsed") From 207b378d5feae30a7303918d2160859cfc3a332e Mon Sep 17 00:00:00 2001 From: Matt Barker Date: Tue, 3 Apr 2018 15:49:25 -0500 Subject: [PATCH 3/5] Added compactMap to InAppReceipt.swift --- SwiftyStoreKit/InAppReceipt.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SwiftyStoreKit/InAppReceipt.swift b/SwiftyStoreKit/InAppReceipt.swift index 37428a1b..808c1e30 100644 --- a/SwiftyStoreKit/InAppReceipt.swift +++ b/SwiftyStoreKit/InAppReceipt.swift @@ -163,7 +163,7 @@ internal class InAppReceipt { return (expirationDate, $0) } } else { - return receiptItems.flatMap { + return receiptItems.compactMap { if let expirationDate = $0.subscriptionExpirationDate { return (expirationDate, $0) } From 0b4e535e154d059d9eca7274fddb54f90acf5ff3 Mon Sep 17 00:00:00 2001 From: Matt Barker Date: Wed, 11 Apr 2018 08:46:57 -0400 Subject: [PATCH 4/5] Added #if swift(>=4.1) notation Thanks to Andrew Bennet for suggestion! --- SwiftyStoreKit/InAppReceipt.swift | 32 ++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/SwiftyStoreKit/InAppReceipt.swift b/SwiftyStoreKit/InAppReceipt.swift index 808c1e30..17a49b54 100644 --- a/SwiftyStoreKit/InAppReceipt.swift +++ b/SwiftyStoreKit/InAppReceipt.swift @@ -96,7 +96,12 @@ internal class InAppReceipt { let filteredReceiptsInfo = filterReceiptsInfo(receipts: receipts, withProductIds: [productId]) let nonCancelledReceiptsInfo = filteredReceiptsInfo.filter { receipt in receipt["cancellation_date"] == nil } - let receiptItems = nonCancelledReceiptsInfo.compactMap { ReceiptItem(receiptInfo: $0) } + #if swift(>=4.1) + let receiptItems = nonCancelledReceiptsInfo.compactMap { ReceiptItem(receiptInfo: $0) } + #else + let receiptItems = nonCancelledReceiptsInfo.flatMap { ReceiptItem(receiptInfo: $0) } + #endif + // Verify that at least one receipt has the right product id if let firstItem = receiptItems.first { return .purchased(item: firstItem) @@ -133,7 +138,11 @@ internal class InAppReceipt { let receiptDate = getReceiptRequestDate(inReceipt: receipt) ?? date - let receiptItems = nonCancelledReceiptsInfo.compactMap { ReceiptItem(receiptInfo: $0) } + #if swift(>=4.1) + let receiptItems = nonCancelledReceiptsInfo.compactMap { ReceiptItem(receiptInfo: $0) } + #else + let receiptItems = nonCancelledReceiptsInfo.flatMap { ReceiptItem(receiptInfo: $0) } + #endif if nonCancelledReceiptsInfo.count > receiptItems.count { print("receipt has \(nonCancelledReceiptsInfo.count) items, but only \(receiptItems.count) were parsed") @@ -163,12 +172,21 @@ internal class InAppReceipt { return (expirationDate, $0) } } else { - return receiptItems.compactMap { - if let expirationDate = $0.subscriptionExpirationDate { - return (expirationDate, $0) + #if swift(>=4.1) + return receiptItems.compactMap { + if let expirationDate = $0.subscriptionExpirationDate { + return (expirationDate, $0) + } + return nil } - return nil - } + #else + return receiptItems.compactMap { + if let expirationDate = $0.subscriptionExpirationDate { + return (expirationDate, $0) + } + return nil + } + #endif } } From e8d5da650cee3fd9ae0696bb50754df00e7ef2db Mon Sep 17 00:00:00 2001 From: Matt Barker Date: Wed, 11 Apr 2018 09:58:08 -0400 Subject: [PATCH 5/5] Fixed typo for compactMap --- SwiftyStoreKit/InAppReceipt.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SwiftyStoreKit/InAppReceipt.swift b/SwiftyStoreKit/InAppReceipt.swift index 17a49b54..e86abbf6 100644 --- a/SwiftyStoreKit/InAppReceipt.swift +++ b/SwiftyStoreKit/InAppReceipt.swift @@ -180,7 +180,7 @@ internal class InAppReceipt { return nil } #else - return receiptItems.compactMap { + return receiptItems.flatMap { if let expirationDate = $0.subscriptionExpirationDate { return (expirationDate, $0) }