Tweet constructor
Default constructor for JSON map
Implementation
Tweet(Map<String, dynamic> items) {
id = items["id"];
source = RegExp(">[A-Z.a-z ]*<").stringMatch(items["source"]) ?? "";
source = source.length > 3 ? source.substring(1, source.length - 1) : "";
var range = items["display_text_range"];
body = items["full_text"].toString().substring(range[0], range[1]);
favoriteCount = items["favorite_count"] ?? 0;
retweetCount = items["retweet_count"] ?? 0;
retweeted = items["retweeted"] ?? false;
favorited = items["favorited"] ?? false;
replyToId = items["in_reply_to_status_id"] ?? 0;
try {
String time = items["created_at"];
time = time.substring(0, 19) + time.substring(25);
timestamp = new DateFormat("EEE MMM dd HH:mm:ss yyyy").parseUTC(time).millisecondsSinceEpoch.abs();
} catch (e) {}
var user = (items["user"]) as Map<String, dynamic>;
tag = user["screen_name"];
fullName = user["name"];
profileUrl = user["profile_image_url_https"];
verified = user["verified"] ?? false;
var retweetStatus = (items["retweeted_status"]) as Map<String, dynamic>?;
isRetweet = retweetStatus != null;
if (isRetweet) {
try {
originalId = retweetStatus?["id"] ?? 0;
favoriteCount = retweetStatus?["favorite_count"] ?? 0;
originalBody = retweetStatus?["full_text"];
var originalUser = retweetStatus?["user"];
originalTag = originalUser["screen_name"];
originalName = originalUser["name"];
originalProfileUrl = originalUser["profile_image_url_https"];
var originalEntities = (retweetStatus?["entities"]) as Map<String, dynamic>;
var originalMedia = (originalEntities["media"]) as List<dynamic>?;
List<String?> originalMedias = [];
if (originalMedia != null && originalMedia.isNotEmpty) originalMedia.forEach((item) => originalMedias.add(item["media_url_https"]));
originalImages = originalMedias.join("::");
} catch (e) {}
}
var quotedStatus = (items["quoted_status"]) as Map<String, dynamic>?;
isQuote = quotedStatus != null;
if (isQuote) {
try {
originalId = quotedStatus!["id"] ?? 0;
originalBody = quotedStatus["full_text"];
var originalUser = quotedStatus["user"];
originalTag = originalUser["screen_name"];
originalName = originalUser["name"];
originalProfileUrl = originalUser["profile_image_url_https"];
var originalEntities = (quotedStatus["entities"]) as Map<String, dynamic>;
var originalMedia = (originalEntities["media"]) as List<dynamic>?;
List<String?> originalMedias = [];
if (originalMedia != null && originalMedia.isNotEmpty) originalMedia.forEach((item) => originalMedias.add(item["media_url_https"]));
originalImages = originalMedias.join("::");
} catch (e) {}
}
var entities = (items["entities"]) as Map<String, dynamic>;
var urls = (entities["urls"] as List<dynamic>?);
var media = (entities["media"] as List<dynamic>?);
try {
if (urls != null && urls.isNotEmpty) urls.forEach((url) => body = body!.replaceFirst(url["url"], url["expanded_url"]));
} catch (e) {
print(e);
}
List<String?> medias = [];
if (media != null && media.isNotEmpty) media.forEach((item) => medias.add(item["media_url_https"]));
images = medias.join("::");
}