* Update chat.scss --skip-ci * Fix height issue * Add highlighting * Implement bannged user handling for chat * Add scroll obsever * Limit initial messages load count & max messages * Add new message alert when scrolled * Add link to usernames in chat * Implement channel clearing feature * Update parserOptions * Implement banning feature for chat app WIP * Add policy for ChatChannelsController * Fix arugment error * Update user_not_authorized to handle JSON request * Update specs for updated user_not_authorized * Update font-weight for windows os
50 lines
1.5 KiB
JavaScript
50 lines
1.5 KiB
JavaScript
export function getUserDataAndCsrfToken() {
|
|
const promise = new Promise((resolve, reject) => {
|
|
let i = 0;
|
|
const waitingOnUserData = setInterval(() => {
|
|
let userData = null;
|
|
const dataUserAttribute = document.body.getAttribute('data-user');
|
|
const meta = document.querySelector("meta[name='csrf-token']");
|
|
if (
|
|
dataUserAttribute &&
|
|
dataUserAttribute !== 'undefined' &&
|
|
dataUserAttribute !== undefined &&
|
|
meta &&
|
|
meta.content !== 'undefined' &&
|
|
meta.content !== undefined
|
|
) {
|
|
userData = JSON.parse(dataUserAttribute);
|
|
}
|
|
i += 1;
|
|
if (userData) {
|
|
clearInterval(waitingOnUserData);
|
|
resolve(userData);
|
|
} else if (i === 3000) {
|
|
clearInterval(waitingOnUserData);
|
|
reject(new Error("Couldn't find user data on page."));
|
|
}
|
|
}, 5);
|
|
});
|
|
return promise;
|
|
}
|
|
|
|
export function scrollToBottom() {
|
|
const element = document.getElementById('messagelist');
|
|
element.scrollTop = element.scrollHeight;
|
|
}
|
|
|
|
export function setupObserver(callback) {
|
|
const sentinel = document.querySelector('#messagelist__sentinel');
|
|
const somethingObserver = new IntersectionObserver(callback);
|
|
somethingObserver.observe(sentinel);
|
|
}
|
|
|
|
export function hideMessages(messages, userId) {
|
|
const newMessages = messages.map((message) => {
|
|
if (message.user_id === userId) {
|
|
return Object.assign({ hidden: true }, message);
|
|
}
|
|
return message;
|
|
});
|
|
return newMessages;
|
|
}
|