1
0
mirror of https://github.com/chylex/TweetDuck.git synced 2025-04-30 14:34:09 +02:00

Refactor highlighted column/tweet variables

This commit is contained in:
chylex 2018-08-09 18:13:45 +02:00
parent e31696d843
commit 561aec5ef0

View File

@ -2,12 +2,12 @@
// //
// Variable: Current highlighted column jQuery & data objects. // Variable: Current highlighted column jQuery & data objects.
// //
let highlightedColumnEle, highlightedColumnObj; let highlightedColumn = null;
// //
// Variable: Currently highlighted tweet jQuery & data objects. // Variable: Currently highlighted tweet jQuery & data objects.
// //
let highlightedTweetEle, highlightedTweetObj; let highlightedTweet = null;
// //
// Variable: Array of functions called after the website app is loaded. // Variable: Array of functions called after the website app is loaded.
@ -626,8 +626,8 @@
$(document.body).delegate("a", "contextmenu", function(){ $(document.body).delegate("a", "contextmenu", function(){
let me = $(this)[0]; let me = $(this)[0];
if (me.classList.contains("js-media-image-link") && highlightedTweetObj){ if (me.classList.contains("js-media-image-link") && highlightedTweet){
let tweet = highlightedTweetObj.hasMedia() ? highlightedTweetObj : highlightedTweetObj.quotedTweet; let tweet = highlightedTweet.obj.hasMedia() ? highlightedTweet.obj : highlightedTweet.obj.quotedTweet;
let media = tweet.getMedia().find(media => media.mediaId === me.getAttribute("data-media-entity-id")); let media = tweet.getMedia().find(media => media.mediaId === me.getAttribute("data-media-entity-id"));
if ((media.isVideo && media.service === "twitter") || media.isAnimatedGif){ if ((media.isVideo && media.service === "twitter") || media.isAnimatedGif){
@ -685,14 +685,31 @@
throw 2 if !ensurePropertyExists(TD, "services", "ChirpBase", "TWEET"); throw 2 if !ensurePropertyExists(TD, "services", "ChirpBase", "TWEET");
const updateHighlightedColumn = function(ele){ const updateHighlightedColumn = function(ele){
highlightedColumnEle = ele; let obj = ele ? TD.controller.columnManager.get(ele.attr("data-column")) : null;
highlightedColumnObj = ele ? TD.controller.columnManager.get(ele.attr("data-column")) : null;
return !!highlightedColumnObj; if (obj){
highlightedColumn = { ele, obj };
return true;
}
else{
highlightedColumn = null;
return false;
}
}; };
const updateHighlightedTweet = function(ele, obj){ const updateHighlightedTweet = function(ele){
highlightedTweetEle = ele; if (ele && ele[0].hasAttribute("data-account-key") && (highlightedColumn || updateHighlightedColumn(ele.closest("section.js-column")))){
highlightedTweetObj = obj; let wrap = highlightedColumn.obj.findChirp(ele.attr("data-key"));
let obj = highlightedColumn.obj.findChirp(ele.attr("data-tweet-id")) || wrap;
if (obj){
highlightedTweet = { ele, obj, wrap };
return true;
}
}
highlightedTweet = null;
return false;
}; };
const processMedia = function(chirp){ const processMedia = function(chirp){
@ -701,7 +718,7 @@
app.delegate("section.js-column", { app.delegate("section.js-column", {
mouseenter: function(){ mouseenter: function(){
if (!highlightedColumnObj){ if (!highlightedColumn){
updateHighlightedColumn($(this)); updateHighlightedColumn($(this));
} }
}, },
@ -711,13 +728,17 @@
}, },
contextmenu: function(){ contextmenu: function(){
let tweet = highlightedTweetObj; return if !highlightedTweet;
if (tweet && tweet.chirpType === TD.services.ChirpBase.TWEET){ let tweet = highlightedTweet.obj;
let quote = tweet.quotedTweet;
if (tweet.chirpType === TD.services.ChirpBase.TWEET){
let tweetUrl = tweet.getChirpURL(); let tweetUrl = tweet.getChirpURL();
let quoteUrl = tweet.quotedTweet ? tweet.quotedTweet.getChirpURL() : ""; let quoteUrl = quote && quote.getChirpURL();
let chirpAuthors = tweet.quotedTweet ? [ tweet.getMainUser().screenName, tweet.quotedTweet.getMainUser().screenName ].join(";") : tweet.getMainUser().screenName;
let chirpImages = tweet.hasImage() ? processMedia(tweet) : tweet.quotedTweet && tweet.quotedTweet.hasImage() ? processMedia(tweet.quotedTweet) : ""; let chirpAuthors = quote ? [ tweet.getMainUser().screenName, quote.getMainUser().screenName ].join(";") : tweet.getMainUser().screenName;
let chirpImages = tweet.hasImage() ? processMedia(tweet) : quote && quote.hasImage() ? processMedia(quote) : "";
$TD.setRightClickedChirp(tweetUrl || "", quoteUrl || "", chirpAuthors, chirpImages); $TD.setRightClickedChirp(tweetUrl || "", quoteUrl || "", chirpAuthors, chirpImages);
} }
@ -726,17 +747,11 @@
app.delegate("article.js-stream-item", { app.delegate("article.js-stream-item", {
mouseenter: function(){ mouseenter: function(){
let me = $(this); updateHighlightedTweet($(this));
return if !me[0].hasAttribute("data-account-key") || (!highlightedColumnObj && !updateHighlightedColumn(me.closest("section.js-column")));
let tweet = highlightedColumnObj.findChirp(me.attr("data-tweet-id")) || highlightedColumnObj.findChirp(me.attr("data-key"));
return if !tweet;
updateHighlightedTweet(me, tweet);
}, },
mouseleave: function(){ mouseleave: function(){
updateHighlightedTweet(null, null); updateHighlightedTweet(null);
} }
}); });
}); });
@ -746,11 +761,10 @@
// //
execSafe(function setupTweetScreenshot(){ execSafe(function setupTweetScreenshot(){
window.TDGF_triggerScreenshot = function(){ window.TDGF_triggerScreenshot = function(){
return if !highlightedTweetObj || !highlightedColumnObj; return if !highlightedTweet || !highlightedColumn;
let chirp = highlightedColumnObj.findChirp(highlightedTweetEle.attr("data-key")) || highlightedTweetObj; let columnWidth = highlightedColumn.ele.width();
let chirp = highlightedTweet.wrap || highlightedTweet.obj;
let columnWidth = highlightedColumnEle.width();
let html = $(chirp.render({ let html = $(chirp.render({
withFooter: false, withFooter: false,
@ -759,7 +773,7 @@
isFavorite: false, isFavorite: false,
isRetweeted: false, // keeps retweet mark above tweet isRetweeted: false, // keeps retweet mark above tweet
isPossiblySensitive: false, isPossiblySensitive: false,
mediaPreviewSize: highlightedColumnObj.getMediaPreviewSize() mediaPreviewSize: highlightedColumn.obj.getMediaPreviewSize()
})); }));
html.find("footer").last().remove(); // apparently withTweetActions breaks for certain tweets, nice html.find("footer").last().remove(); // apparently withTweetActions breaks for certain tweets, nice
@ -861,10 +875,8 @@
}; };
const tryCloseHighlightedColumn = function(){ const tryCloseHighlightedColumn = function(){
if (highlightedColumnEle){ let column = highlightedColumn && highlightedColumn.ele.closest(".js-column");
let column = highlightedColumnEle.closest(".js-column"); return column && ((column.is(".is-shifted-2") && tryClickSelector(".js-tweet-social-proof-back", column)) || (column.is(".is-shifted-1") && tryClickSelector(".js-column-back", column)));
return (column.is(".is-shifted-2") && tryClickSelector(".js-tweet-social-proof-back", column)) || (column.is(".is-shifted-1") && tryClickSelector(".js-column-back", column));
}
}; };
window.TDGF_onMouseClickExtra = function(button){ window.TDGF_onMouseClickExtra = function(button){
@ -880,8 +892,8 @@
$(".is-shifted-1 .js-column-back").click(); $(".is-shifted-1 .js-column-back").click();
} }
else if (button === 2){ // forward button else if (button === 2){ // forward button
if (highlightedTweetEle){ if (highlightedTweet){
highlightedTweetEle.children().first().click(); highlightedTweet.ele.children().first().click();
} }
} }
}; };
@ -1183,7 +1195,7 @@
let src = !e.ctrlKey && getGifLink($(this).closest(".js-media-gif-container").find("video")); let src = !e.ctrlKey && getGifLink($(this).closest(".js-media-gif-container").find("video"));
if (src){ if (src){
window.TDGF_playVideo(src, getUsername(highlightedTweetObj)); window.TDGF_playVideo(src, getUsername(highlightedTweet.obj));
} }
else{ else{
$TD.openBrowser(getVideoTweetLink($(this))); $TD.openBrowser(getVideoTweetLink($(this)));