Created
May 20, 2018 06:11
-
-
Save passcod/d571e33ec18bb96d481cc7995633cc5a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name BTD from_list mute filter | |
// @namespace http://tampermonkey.net/ | |
// @version 0.1 | |
// @description mm | |
// @author You | |
// @match https://tweetdeck.twitter.com | |
// @grant none | |
// ==/UserScript== | |
setTimeout(function() { | |
'use strict'; | |
const { BTD, TD } = window; | |
const eventuals = new Map(); | |
console.debug('mute from list eventuals', eventuals); // useful to get a handle on the Map for debugging | |
/* | |
function makeTwitterCall(e: absolute url, t: params, i: method, n: ?processor, s: success callback, r: error callback, o: ?feedtype); | |
TD.services.TwitterClient.prototype.getListMembers = function(e: { | |
id: list id, | |
cursor: <unsure, defaults to -1>, | |
count: <unsure, defaults to 20> | |
}, t: success callback, i: error callback); | |
*/ | |
function listMembers (name) { | |
const list = TD.cache.lists.getAll().find(l => l.name === name); | |
if (!list) return Promise.resolve([]); | |
const twitter = TD.controller.clients.getPreferredClient("twitter"); | |
return new Promise((resolve, reject) => twitter.getListMembers({ id: list.id, count: 500 }, resolve, reject)) | |
} | |
function eventuallyCheckForAppartenanceToAList (listname) { | |
const eventually = { | |
members: listMembers(listname).then(data => { | |
eventually.members = data.users; | |
eventually.ready = true; | |
}).catch(console.log), | |
ready: false | |
}; | |
return function (user_id) { | |
if (!eventually.ready) return false; | |
return eventually.members.some(member => member.id === user_id); | |
} | |
} | |
const oldfilters = BTD.filterDropdown(); | |
BTD.Filters.BTD_from_list = { | |
display: { | |
global: true, | |
}, | |
name: 'Users from a List', | |
descriptor: 'tweets posted or retweeted by any user on a list', | |
placeholder: 'name of a list you own', | |
function (filter, tweet) { | |
const key = filter.value + ''; | |
if (!eventuals.has(key)) { | |
eventuals.set(key, eventuallyCheckForAppartenanceToAList(key)); | |
} | |
try { | |
if (!tweet.user || !tweet.user.id) return true; // sometimes those are undefined | |
return !eventuals.get(key)(tweet.user.id); | |
} catch (e) { | |
console.log(e); | |
} finally { | |
return true; | |
} | |
} | |
}; | |
TD.mustaches['settings/global_setting_filter.mustache'] = TD.mustaches[ | |
'settings/global_setting_filter.mustache' | |
].replace(oldfilters, BTD.filterDropdown()); | |
}, 1000); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
It was an experimental BTD plugin for muting all members of a given list. But who are you and why are you asking about gists that are years past dead.