From 2d617984579bbcc4d6906a5fc9cdc58e9862fa88 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Fri, 17 Apr 2020 11:20:22 -0500 Subject: [PATCH] Changed to using extended tweets. --- .../Account/FeedProvider/Twitter/Tweet.swift | 18 ++---------- .../Twitter/TwitterFeedProvider.swift | 28 ++++++++----------- 2 files changed, 14 insertions(+), 32 deletions(-) diff --git a/Frameworks/Account/FeedProvider/Twitter/Tweet.swift b/Frameworks/Account/FeedProvider/Twitter/Tweet.swift index c01734593..6e8aecbdc 100644 --- a/Frameworks/Account/FeedProvider/Twitter/Tweet.swift +++ b/Frameworks/Account/FeedProvider/Twitter/Tweet.swift @@ -12,34 +12,20 @@ struct Tweet: Codable { let createdAt: Date? let idStr: String? - let text: String? + let fullText: String? let displayTextRange: [Int]? let user: TwitterUser let truncated: Bool let retweeted: Bool - let extendedTweet: ExtendedTweet? enum CodingKeys: String, CodingKey { case createdAt = "created_at" case idStr = "id_str" - case text = "text" + case fullText = "full_text" case displayTextRange = "display_text_range" case user = "user" case truncated = "truncated" case retweeted = "retweeted" - case extendedTweet = "extended_tweet" - } - -} - -struct ExtendedTweet: Codable { - - let fullText: String? - let displayTextRange: [Int]? - - enum CodingKeys: String, CodingKey { - case fullText = "full_text" - case displayTextRange = "display_text_range" } } diff --git a/Frameworks/Account/FeedProvider/Twitter/TwitterFeedProvider.swift b/Frameworks/Account/FeedProvider/Twitter/TwitterFeedProvider.swift index 4cf6a75ed..4626b6cd8 100644 --- a/Frameworks/Account/FeedProvider/Twitter/TwitterFeedProvider.swift +++ b/Frameworks/Account/FeedProvider/Twitter/TwitterFeedProvider.swift @@ -216,7 +216,7 @@ private extension TwitterFeedProvider { func retrieveTweets(api: String, completion: @escaping (Result<[Tweet], Error>) -> Void) { let url = "\(Self.apiBase)\(api)" - let parameters = [String: Any]() + let parameters = ["tweet_mode": "extended"] client.get(url, parameters: parameters) { result in switch result { @@ -225,6 +225,12 @@ private extension TwitterFeedProvider { let dateFormatter = DateFormatter() dateFormatter.dateFormat = Self.dateFormat decoder.dateDecodingStrategy = .formatted(dateFormatter) + let jsonString = String(data: response.data, encoding: .utf8) + + let url = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!.appendingPathComponent("twitter.json") + print("******** writing to: \(url.path)") + try? jsonString?.write(toFile: url.path, atomically: true, encoding: .utf8) + do { let tweets = try decoder.decode([Tweet].self, from: response.data) completion(.success(tweets)) @@ -277,22 +283,12 @@ private extension TwitterFeedProvider { } func makeTweetText(_ tweet: Tweet) -> String? { - if tweet.truncated, let extendedText = tweet.extendedTweet?.fullText { - if let displayRange = tweet.extendedTweet?.displayTextRange, displayRange.count > 1 { - let startIndex = extendedText.index(extendedText.startIndex, offsetBy: displayRange[0]) - let endIndex = extendedText.index(extendedText.startIndex, offsetBy: displayRange[1]) - return String(extendedText[startIndex...endIndex]) - } else { - return extendedText - } + if let text = tweet.fullText, let displayRange = tweet.displayTextRange, displayRange.count > 1, + let startIndex = text.index(text.startIndex, offsetBy: displayRange[0], limitedBy: text.endIndex), + let endIndex = text.index(text.startIndex, offsetBy: displayRange[1], limitedBy: text.endIndex) { + return String(text[startIndex..