123456789101112131415161718192021222324252627282930313233343536373839404142 |
- const switchToLatest = async () => {
- const waitForElements = async (els) => {
- return new Promise(async (resolve, reject) => {
- let counter = 0;
- while (true) {
- if (counter === 100) {
- return reject();
- }
-
- for (let el of els) {
- if (document.querySelector(el)) {
- return resolve(els.map((el) => document.querySelector(el)));
- }
- }
-
- await new Promise((resolve, _reject) => requestAnimationFrame(resolve));
-
- counter += 1;
- }
- });
- };
-
- const topTweetsOffSelector = '[aria-label="Top Tweets off"]';
- const topTweetsOnSelector = '[aria-label="Top Tweets on"]';
- const latestTweetsSelector = 'div[role="menuitem"]';
-
- waitForElements([topTweetsOnSelector, topTweetsOffSelector])
- .then((els) => {
- const [topTweetsOn, _topTweetsOff] = els;
- if (topTweetsOn) {
- topTweetsOn.click();
- waitForElements([latestTweetsSelector])
- .then((els) => {
- els.filter((el) => !!el).forEach((el) => el.click());
- })
- .catch(() => {});
- }
- })
- .catch(() => {});
- };
-
- switchToLatest();
|