Skip to content

Instantly share code, notes, and snippets.

@w0rldart
Last active March 12, 2020 15:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save w0rldart/98c6b7f9571018c1c939fe77347b69a7 to your computer and use it in GitHub Desktop.
Save w0rldart/98c6b7f9571018c1c939fe77347b69a7 to your computer and use it in GitHub Desktop.
Scroll to the last message on Meetup
// ==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