mirror of
https://github.com/chylex/TweetDuck.git
synced 2025-04-13 09:15:47 +02:00
Implement top tier account bamboozle scheme
This commit is contained in:
parent
70ba006e4d
commit
00b212944c
@ -9,6 +9,7 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using TweetDuck.Core.Management;
|
||||
using TweetDuck.Core.Notification;
|
||||
using TweetDuck.Core.Other;
|
||||
|
||||
namespace TweetDuck.Core.Handling{
|
||||
@ -81,7 +82,7 @@ public virtual void OnBeforeContextMenu(IWebBrowser browserControl, IBrowser bro
|
||||
model.AddItem(MenuSaveMedia, TextSave("video"));
|
||||
model.AddSeparator();
|
||||
}
|
||||
else if ((parameters.TypeFlags.HasFlag(ContextMenuType.Media) && parameters.HasImageContents) || hasTweetImage){
|
||||
else if (((parameters.TypeFlags.HasFlag(ContextMenuType.Media) && parameters.HasImageContents) || hasTweetImage) && parameters.SourceUrl != TweetNotification.AppLogoLink){
|
||||
model.AddItem(MenuViewImage, "View image in photo viewer");
|
||||
model.AddItem(MenuOpenMediaUrl, TextOpen("image"));
|
||||
model.AddItem(MenuCopyMediaUrl, TextCopy("image"));
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Support
|
||||
|
||||
[Follow the developer](https://twitter.com/chylexmc) | [Support via PayPal](https://paypal.me/chylex) | [Support via Patreon](https://www.patreon.com/chylex)
|
||||
[Follow TweetDuck on Twitter](https://twitter.com/TryMyAwesomeApp) | [Support via PayPal](https://paypal.me/chylex) | [Support via Patreon](https://www.patreon.com/chylex)
|
||||
|
||||
# Build Instructions
|
||||
|
||||
|
@ -446,21 +446,6 @@
|
||||
data.setData("text/html", `<a href="${url}">${url}</a>`);
|
||||
});
|
||||
|
||||
if (ensurePropertyExists(TD, "services", "TwitterUser", "prototype", "fromJSONObject")){
|
||||
const prevFunc = TD.services.TwitterUser.prototype.fromJSONObject;
|
||||
|
||||
TD.services.TwitterUser.prototype.fromJSONObject = function(){
|
||||
let obj = prevFunc.apply(this, arguments);
|
||||
let e = arguments[0].entities;
|
||||
|
||||
if (e && e.url && e.url.urls && e.url.urls.length && e.url.urls[0].expanded_url){
|
||||
obj.url = e.url.urls[0].expanded_url;
|
||||
}
|
||||
|
||||
return obj;
|
||||
};
|
||||
}
|
||||
|
||||
if (ensurePropertyExists(TD, "services", "TwitterMedia", "prototype", "fromMediaEntity")){
|
||||
const prevFunc = TD.services.TwitterMedia.prototype.fromMediaEntity;
|
||||
|
||||
@ -480,6 +465,66 @@
|
||||
};
|
||||
}
|
||||
|
||||
//
|
||||
// Block: Bypass t.co in user profiles and setup a top tier account bamboozle scheme.
|
||||
//
|
||||
(function(){
|
||||
const realDisplayName = "TweetDuck";
|
||||
const realAvatar = "https://ton.twimg.com/tduck/avatar";
|
||||
const accountId = "957608948189880320";
|
||||
|
||||
if (ensurePropertyExists(TD, "services", "TwitterUser", "prototype", "fromJSONObject")){
|
||||
const prevFunc = TD.services.TwitterUser.prototype.fromJSONObject;
|
||||
|
||||
TD.services.TwitterUser.prototype.fromJSONObject = function(){
|
||||
let obj = prevFunc.apply(this, arguments);
|
||||
let e = arguments[0].entities;
|
||||
|
||||
if (obj.id === accountId){
|
||||
obj.name = realDisplayName;
|
||||
obj.emojifiedName = realDisplayName;
|
||||
obj.profileImageURL = realAvatar;
|
||||
obj.url = "https://tweetduck.chylex.com";
|
||||
|
||||
obj.entities.url.urls = [{
|
||||
url: obj.url,
|
||||
expanded_url: obj.url,
|
||||
display_url: "tweetduck.chylex.com",
|
||||
indices: [ 0, 23 ]
|
||||
}];
|
||||
}
|
||||
else if (e && e.url && e.url.urls && e.url.urls.length && e.url.urls[0].expanded_url){
|
||||
obj.url = e.url.urls[0].expanded_url;
|
||||
}
|
||||
|
||||
return obj;
|
||||
};
|
||||
}
|
||||
|
||||
if (ensurePropertyExists(TD, "services", "TwitterClient", "prototype", "typeaheadSearch")){
|
||||
const prevFunc = TD.services.TwitterClient.prototype.typeaheadSearch;
|
||||
|
||||
TD.services.TwitterClient.prototype.typeaheadSearch = function(data, onSuccess, onError){
|
||||
if (data.query && data.query.toLowerCase().endsWith("tweetduck")){
|
||||
data.query = "TryMyAwesomeApp";
|
||||
}
|
||||
|
||||
return prevFunc.call(this, data, function(result){
|
||||
for(let user of result.users){
|
||||
if (user.id_str === accountId){
|
||||
user.name = realDisplayName;
|
||||
user.profile_image_url = realAvatar;
|
||||
user.profile_image_url_https = realAvatar;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
onSuccess.apply(this, arguments);
|
||||
}, onError);
|
||||
};
|
||||
}
|
||||
})();
|
||||
|
||||
//
|
||||
// Block: Include additional information in context menus.
|
||||
//
|
||||
@ -507,7 +552,6 @@
|
||||
//
|
||||
// Block: Hook into the notification sound effect.
|
||||
//
|
||||
|
||||
HTMLAudioElement.prototype.play = prependToFunction(HTMLAudioElement.prototype.play, function(){
|
||||
return $TDX.muteNotifications;
|
||||
});
|
||||
|
@ -44,10 +44,6 @@
|
||||
margin-top: 15px;
|
||||
}
|
||||
|
||||
#td-introduction-modal p:last-child {
|
||||
margin-top: 18px;
|
||||
}
|
||||
|
||||
#td-introduction-modal footer {
|
||||
padding: 10px 0;
|
||||
}
|
||||
@ -82,10 +78,10 @@
|
||||
<div class="mdl-inner">
|
||||
<div class="mdl-content">
|
||||
<p>Thank you for downloading TweetDuck!</p>
|
||||
<p><a id="td-introduction-follow" href="#">Follow @TryMyAwesomeApp</a> for latest news and updates about the app.</p>
|
||||
<div class="main-menu"></div>
|
||||
<p><strong>Right-click anywhere</strong> or click <strong>Settings – TweetDuck</strong> in the left panel to open the main menu. You can also right-click links, tweets, images and videos, and desktop notifications to access their respective context menus.</p>
|
||||
<p>Click <strong>Show Guide</strong> to see awesome features TweetDuck offers, or view the guide later by going to <strong>About TweetDuck</strong> and clicking the help button on top.</p>
|
||||
<p>Follow the developer <a id="td-introduction-follow" href="#">@chylexmc</a> for latest news & updates about the app, and some occasional rants.</p>
|
||||
</div>
|
||||
<footer class="txt-right">
|
||||
<div class="anondata">
|
||||
@ -106,7 +102,7 @@
|
||||
onSuccess(tdUser);
|
||||
}
|
||||
else{
|
||||
TD.controller.clients.getPreferredClient().getUsersByIds([ "572571847" ], users => onSuccess(users[0]), onError);
|
||||
TD.controller.clients.getPreferredClient().getUsersByIds([ "957608948189880320" ], users => onSuccess(users[0]), onError);
|
||||
}
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user