Last active
March 12, 2020 15:08
-
-
Save w0rldart/98c6b7f9571018c1c939fe77347b69a7 to your computer and use it in GitHub Desktop.
Scroll to the last message on Meetup
This file contains hidden or 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 Scroll Meetup Messages | |
// @namespace https://meetup.net/ | |
// @version 0.2 | |
// @description Script to scroll to the last message in your Inbox, and last member on a Meetup Group | |
// @author Alex B | |
// @match https://secure.meetup.com/messages/* | |
// @match https://www.meetup.com/*/members/ | |
// @grant none | |
// @require http://code.jquery.com/jquery-latest.js | |
// ==/UserScript== | |
let interval | |
$(document).ready(function(){ | |
'use strict'; | |
const currentUrl = window.location.href | |
const scrollButtonId = 'scroll-down' | |
function generateScrollButton(type, message) { | |
return '<a href="#" data-type="' + type + '" id="' + scrollButtonId + '" style="padding: 5px; background: #fff; border: 1px solid red; font-size: 13px;">' + message + '</a>' | |
} | |
if (currentUrl.match(/meetup\.com\/messages/)) { | |
$('.ffbox-flex').append(generateScrollButton('messages', 'Scroll Messages')); | |
} else if (currentUrl.match(/meetup\.com\/.*\/members/)) { | |
$('#member-list-card-id .groupMembersList-sort').parent().append(generateScrollButton('members', 'Scroll Members')); | |
} | |
$('#' + scrollButtonId).on('click', function() { | |
if ($(this).data('type') == 'messages') { | |
checkForMessages() | |
} else if($(this).data('type') == 'members') { | |
scrollMembers() | |
} | |
}) | |
function scrollMembers() { | |
console.log('bananas') | |
let interval = setInterval(() => { | |
let membersBlock = $('.groupPageWrapper') | |
let clickyButton = $('.infiniteScrollLoadMoreButton') | |
// If there's no loading icon and no Load More Conversations button, clear interval | |
if (! membersBlock.find('.loading.loading--cover.loading--partialCover').length !== 0 && $.contains(window.document, clickyButton[0])) { | |
console.log('need to load more') | |
scrollAndLoadMore(messagesBox, clickyButton) | |
} else { | |
clearInterval(interval) | |
} | |
}, 1500); | |
} | |
function checkForMessages() { | |
let interval = setInterval(() => { | |
let messagesBox = $('.convoList.j-active-list') | |
let clickyButton = $('#load-more-conversations') | |
// If there's no loading icon and no Load More Conversations button, clear interval | |
if (! messagesBox.find('.j-loadingConversations').length !== 0 && $.contains(window.document, clickyButton[0])) { | |
scrollAndLoadMore(messagesBox, clickyButton) | |
} else { | |
clearInterval(interval) | |
} | |
/* | |
if (messagesBox.find('.spinning.icon-refresh').length == 0 && ! $.contains(window.document, clickyButton[0])) { | |
clearInterval(interval) | |
} else { | |
scrollMessages(messagesBox, clickyButton) | |
} | |
*/ | |
}, 2000); | |
} | |
function scrollAndLoadMore(contentBlock, clickyButton) { | |
console.log(contentBlock, clickyButton) | |
contentBlock.scrollTop(contentBlock.prop("scrollHeight")); | |
if (clickyButton.length > 0) { | |
clickyButton[0].click(); | |
} | |
contentBlock.delay(5000).scrollTop(contentBlock.prop("scrollHeight")); | |
} | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment