Files
bluesky-client/JS/script.js
T
2024-11-25 19:12:54 -05:00

107 lines
3.5 KiB
JavaScript

document.addEventListener('scroll', bottomscrolled);
async function bottomscrolled(e) {
const scrollPosition = window.scrollY + window.innerHeight,
pageHeight = document.documentElement.scrollHeight,
atbottom = (scrollPosition >= pageHeight);
if (!atbottom) return;
// get the current div
const targetDiv = document.querySelector('.content.active')
switch (targetDiv.id) {
case 'posts': window.electronAPI.getnewposts();
break;
case 'replies': window.electronAPI.getReplies()
break;
case 'likes': window.electronAPI.getnewlikes();
break;
case 'media':
window.electronAPI.getnewmedia();
break;
default: console.log(`unknown scroll div ID ${targetDiv.id}`);
}
}
// function to toggle the active section
function showSection(sectionId) {
// hide all sections
document.querySelectorAll('.content').forEach((content) => {
content.classList.remove('active');
});
// remove active class from all buttons
document.querySelectorAll('.tab-buttons button').forEach((button) => {
button.classList.remove('active');
});
// show the selected section and activate the button
document.getElementById(sectionId).classList.add('active');
document.getElementById(sectionId + 'Btn').classList.add('active');
createDropdown();
}
function createDropdown() {
document.querySelector('.dropdown')?.remove();
const activeDiv = document.querySelector('.content.active');
if (activeDiv.id === 'replies') return;
const dropdown = document.createElement('div');
dropdown.classList.add('dropdown');
const button = document.createElement('button');
button.classList.add('dropdown-button');
button.textContent = 'Layout: Compact';
const content = document.createElement('div');
content.classList.add('dropdown-content');
content.id = 'layoutDropdown';
const options = [
{ text: 'Large', value: 'large' },
{ text: 'Relaxed', value: 'relaxed' },
{ text: 'Compact', value: 'compact', selected: true }
];
options.forEach(({ text, value, selected }) => {
const link = document.createElement('a');
link.href = '#';
link.dataset.value = value;
link.textContent = text;
if (selected) link.classList.add('selected');
link.addEventListener('click', togglerelaxed);
content.appendChild(link);
})
dropdown.append(button, content);
activeDiv.prepend(dropdown);
}
// function to handle layout selection
function togglerelaxed(e) {
e.preventDefault(); // prevent the default anchor behavior
const container = document.querySelector('.content.active [class*="cards-container"]'),
value = e.target.getAttribute('data-value');
if (!container) return console.warn('container not found!');
if (value === 'compact') {
container.classList.remove('cards-container-relaxed');
container.classList.add('cards-container');
} else {
container.style.gridTemplateColumns = (value?.trim() !== 'large') ? 'repeat(auto-fill, minmax(280px, 1fr))' : 'none';
container.classList.remove('cards-container');
container.classList.add('cards-container-relaxed');
}
// update dropdown button text to reflect current selection
document.querySelector('.dropdown-button').textContent = `Layout: ${value.charAt(0).toUpperCase() + value.slice(1)}`;
}
document.addEventListener('DOMContentLoaded', createDropdown);