Commit 071c1424 by Dmitry Stepanets

Finished GraphQL integration

parent fa853f3c
...@@ -398,16 +398,16 @@ extension ShortsViewController: ViewModelDelegate { ...@@ -398,16 +398,16 @@ extension ShortsViewController: ViewModelDelegate {
//MARK:- ShortsItemCell Delegate //MARK:- ShortsItemCell Delegate
extension ShortsViewController: ShortsItemCellDelegate { extension ShortsViewController: ShortsItemCellDelegate {
private func bottomPart(of sourceImage: UIImage) -> UIImage? { private func bottomPart(of sourceImage: UIImage) -> UIImage? {
let dy: CGFloat = 10 //10pt from bottom let dy: CGFloat = 10 * sourceImage.scale //10pt from bottom
let area = CGRect(x: 0, let area = CGRect(x: 0,
y: sourceImage.size.height - dy, y: sourceImage.size.height * sourceImage.scale - dy,
width: sourceImage.size.width, width: sourceImage.size.width * sourceImage.scale,
height: dy) height: dy)
guard let crop = sourceImage.cgImage?.cropping(to: area) else { guard let crop = sourceImage.cgImage?.cropping(to: area) else {
return nil return nil
} }
return UIImage(cgImage: crop, scale: UIScreen.main.scale, orientation: .up) return UIImage(cgImage: crop)
} }
func averageColor(for short:ShortsItem, shortImage: UIImage, completion: @escaping (UIColor?, String?) -> Void) { func averageColor(for short:ShortsItem, shortImage: UIImage, completion: @escaping (UIColor?, String?) -> Void) {
......
...@@ -47,8 +47,6 @@ public class InMobiGraphQLSource: ShortSource { ...@@ -47,8 +47,6 @@ public class InMobiGraphQLSource: ShortSource {
{"query":"query { weatherCardObjectCollection(where: { AND: [ { expiredAt_gte: \\"\(dateString)\\" } ], }) { items { shortsCategories, sourceUrl, buttonText, publishedAt mediaArrayObjectCollection { items { ... on WImageObject { title, summary image } } } sys { id } } } }"} {"query":"query { weatherCardObjectCollection(where: { AND: [ { expiredAt_gte: \\"\(dateString)\\" } ], }) { items { shortsCategories, sourceUrl, buttonText, publishedAt mediaArrayObjectCollection { items { ... on WImageObject { title, summary image } } } sys { id } } } }"}
""" """
do {
// let jsonData = try JSONEncoder().encode(graphQLString)
guard let bodyData = graphQLString.data(using: .utf8) else { guard let bodyData = graphQLString.data(using: .utf8) else {
completion(nil, InMobiGraphQLSourceError.dataEncodingError("Invalid GraphQL body")) completion(nil, InMobiGraphQLSourceError.dataEncodingError("Invalid GraphQL body"))
...@@ -84,11 +82,6 @@ public class InMobiGraphQLSource: ShortSource { ...@@ -84,11 +82,6 @@ public class InMobiGraphQLSource: ShortSource {
} }
dataTask.resume() dataTask.resume()
} }
catch {
self.log.error("Encoding error: \(error)")
completion(nil, InMobiGraphQLSourceError.dataEncodingError(error.localizedDescription))
}
}
private func toAppModel(item: WeatherCardItem) -> ShortsItem { private func toAppModel(item: WeatherCardItem) -> ShortsItem {
let lowImageSize = CGSize(width: 440, height: 783) let lowImageSize = CGSize(width: 440, height: 783)
...@@ -122,18 +115,12 @@ public class InMobiGraphQLSource: ShortSource { ...@@ -122,18 +115,12 @@ public class InMobiGraphQLSource: ShortSource {
return ShortsItem(id: item.id, return ShortsItem(id: item.id,
images: baseImages, images: baseImages,
overlayImages: overlayImages, overlayImages: overlayImages,
updatedAtInSecs: 0,
startsAtInSecs: 0,
endsAtInSecs: 0,
shareURL: item.sourceUrl, shareURL: item.sourceUrl,
title: item.mediaArrayObjectCollection.items.first?.title ?? "", title: item.mediaArrayObjectCollection.items.first?.title ?? "",
summaryText: item.mediaArrayObjectCollection.items.first?.summary ?? "", summaryText: item.mediaArrayObjectCollection.items.first?.summary ?? "",
sourceName: "", sourceName: "",
heartCount: 0,
shortURL: item.sourceUrl, shortURL: item.sourceUrl,
ctaText: item.buttonText, ctaText: item.buttonText,
ctaURL: item.sourceUrl, ctaURL: item.sourceUrl)
likeCount: 0,
shareCount: 0)
} }
} }
...@@ -128,18 +128,12 @@ public class InMobiShortSource: ShortSource { ...@@ -128,18 +128,12 @@ public class InMobiShortSource: ShortSource {
ShortsItem(id: glanceDetails.id, ShortsItem(id: glanceDetails.id,
images: glanceDetails.image.supportedImages.map{ .init(width: $0.width, height: $0.height, url: $0.url) }, images: glanceDetails.image.supportedImages.map{ .init(width: $0.width, height: $0.height, url: $0.url) },
overlayImages: glanceDetails.overlayImage.supportedImages.map{ .init(width: $0.width, height: $0.height, url: $0.url) }, overlayImages: glanceDetails.overlayImage.supportedImages.map{ .init(width: $0.width, height: $0.height, url: $0.url) },
updatedAtInSecs: glanceDetails.updatedAtInSecs,
startsAtInSecs: glanceDetails.startsAtInSecs,
endsAtInSecs: glanceDetails.endsAtInSecs,
shareURL: glanceDetails.encodedShareURL, shareURL: glanceDetails.encodedShareURL,
title: glanceDetails.peekData.title, title: glanceDetails.peekData.title,
summaryText: glanceDetails.peek.articlePeek.summary, summaryText: glanceDetails.peek.articlePeek.summary,
sourceName: glanceDetails.peekData.sourceName, sourceName: glanceDetails.peekData.sourceName,
heartCount: glanceDetails.peekData.heartCount,
shortURL: glanceDetails.peekData.encodedShortURL, shortURL: glanceDetails.peekData.encodedShortURL,
ctaText: glanceDetails.peekData.ctaText, ctaText: glanceDetails.peekData.ctaText,
ctaURL: glanceDetails.peek.articlePeek.cta.encodedUrl, ctaURL: glanceDetails.peek.articlePeek.cta.encodedUrl)
likeCount: glanceDetails.glanceInteractionDetails.likeCount,
shareCount: glanceDetails.glanceInteractionDetails.shareCount)
} }
} }
...@@ -23,42 +23,30 @@ public struct ShortsItem { ...@@ -23,42 +23,30 @@ public struct ShortsItem {
public let id: String public let id: String
public let images: [ShortsItemImage] public let images: [ShortsItemImage]
public let overlayImages: [ShortsItemImage] public let overlayImages: [ShortsItemImage]
public let updatedAtInSecs: TimeInterval
public let startsAtInSecs: TimeInterval
public let endsAtInSecs: TimeInterval
public let shareURL: URL? public let shareURL: URL?
public let title: String public let title: String
public let summaryText: String public let summaryText: String
public let sourceName: String public let sourceName: String
public let heartCount: Int
public let shortURL: URL? public let shortURL: URL?
public let ctaText: String public let ctaText: String
public let ctaURL: URL? public let ctaURL: URL?
public let likeCount: Int
public let shareCount: Int
public var isLiked: Bool = false public var isLiked: Bool = false
public var viewDate: Date? public var viewDate: Date?
public init(id: String, images: [ShortsItemImage], overlayImages: [ShortsItemImage], updatedAtInSecs: TimeInterval, startsAtInSecs: TimeInterval, endsAtInSecs: TimeInterval, shareURL: URL?, title: String, summaryText: String, sourceName: String, heartCount: Int, shortURL: URL?, ctaText: String, ctaURL: URL?, likeCount: Int, shareCount: Int) { public init(id: String, images: [ShortsItemImage], overlayImages: [ShortsItemImage], shareURL: URL?, title: String, summaryText: String, sourceName: String, shortURL: URL?, ctaText: String, ctaURL: URL?) {
self.id = id self.id = id
self.images = images self.images = images
self.overlayImages = overlayImages self.overlayImages = overlayImages
self.updatedAtInSecs = updatedAtInSecs
self.startsAtInSecs = startsAtInSecs
self.endsAtInSecs = endsAtInSecs
self.shareURL = shareURL self.shareURL = shareURL
self.title = title self.title = title
self.summaryText = summaryText self.summaryText = summaryText
self.sourceName = sourceName self.sourceName = sourceName
self.heartCount = heartCount
self.shortURL = shortURL self.shortURL = shortURL
self.ctaText = ctaText self.ctaText = ctaText
self.ctaURL = ctaURL self.ctaURL = ctaURL
self.likeCount = likeCount
self.shareCount = shareCount
} }
public func getImage(for width:CGFloat) -> ShortsItemImage? { public func getImage(for width: CGFloat) -> ShortsItemImage? {
guard !self.images.isEmpty && width > 0 else { guard !self.images.isEmpty && width > 0 else {
return nil return nil
} }
...@@ -73,7 +61,7 @@ public struct ShortsItem { ...@@ -73,7 +61,7 @@ public struct ShortsItem {
return image return image
} }
public func getOverlayImage(for width:CGFloat) -> ShortsItemImage? { public func getOverlayImage(for width: CGFloat) -> ShortsItemImage? {
guard !self.overlayImages.isEmpty && width > 0 else { guard !self.overlayImages.isEmpty && width > 0 else {
return nil return nil
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment