Skip to content

Instantly share code, notes, and snippets.

@passcod
Created May 20, 2018 06:11
Show Gist options
  • Save passcod/d571e33ec18bb96d481cc7995633cc5a to your computer and use it in GitHub Desktop.
Save passcod/d571e33ec18bb96d481cc7995633cc5a to your computer and use it in GitHub Desktop.
// ==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);
@passcod
Copy link
Author

passcod commented May 9, 2022

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment