Skip to content

Commit

Permalink
Convert indentation from 4 spaces to 2 spaces
Browse files Browse the repository at this point in the history
  • Loading branch information
murphyne committed Sep 10, 2019
1 parent 76fdce6 commit 2b3e21f
Showing 1 changed file with 134 additions and 134 deletions.
268 changes: 134 additions & 134 deletions dtf-expand.user.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,31 +9,53 @@
// ==/UserScript==

;(async function dtfExpandFeed () {
"use strict";

//We need the pageWrapper to acquire feedContainer
const pageWrapper = document.getElementById('page_wrapper');
if (!pageWrapper) {
//It seems that a pageWrapper is always present on the page.
//Yet, if we are unable to find it, we can't continue.
console.error('ExpandDTF: pageWrapper not found');
return;
}

//While you browse the site, feedContainer can be deleted or added.
//That's why we need to track DOM mutations in pageWrapper.
const pageWrapperObserver = new MutationObserver(pageWrapperCallback);
pageWrapperObserver.observe(pageWrapper, {childList: true});

const feedContainerObserver = new MutationObserver(feedContainerCallback);

//More info on the lifetime of MutationObserver
//https://stackoverflow.com/q/35253565

//Check if feedContainer is already present on the page
const feedContainer = pageWrapper.getElementsByClassName('feed__container')[0];
if (feedContainer) {
console.log('ExpandDTF: feedContainer present %o', feedContainer);
"use strict";

//We need the pageWrapper to acquire feedContainer
const pageWrapper = document.getElementById('page_wrapper');
if (!pageWrapper) {
//It seems that a pageWrapper is always present on the page.
//Yet, if we are unable to find it, we can't continue.
console.error('ExpandDTF: pageWrapper not found');
return;
}

//While you browse the site, feedContainer can be deleted or added.
//That's why we need to track DOM mutations in pageWrapper.
const pageWrapperObserver = new MutationObserver(pageWrapperCallback);
pageWrapperObserver.observe(pageWrapper, {childList: true});

const feedContainerObserver = new MutationObserver(feedContainerCallback);

//More info on the lifetime of MutationObserver
//https://stackoverflow.com/q/35253565

//Check if feedContainer is already present on the page
const feedContainer = pageWrapper.getElementsByClassName('feed__container')[0];
if (feedContainer) {
console.log('ExpandDTF: feedContainer present %o', feedContainer);

//Augment existing feed items
const feedItems = Array.from(feedContainer.getElementsByClassName('feed__item'));
augmentFeedItems(feedItems);

//Wait for new feed items
feedContainerObserver.disconnect();
feedContainerObserver.observe(feedContainer, {childList: true});
}

function pageWrapperCallback (mutations) {
outer_loop:
for (let i = 0; i < mutations.length; i++) {
const mutation = mutations[i];
for (let j = 0; j < mutation.addedNodes.length; j++) {
const node = mutation.addedNodes[j];

if (node.nodeType !== Node.ELEMENT_NODE) continue;
const feedContainer = node.getElementsByClassName('feed__container')[0];
if (!feedContainer) continue;

console.log('ExpandDTF: feedContainer found %o', feedContainer);

//Augment existing feed items
const feedItems = Array.from(feedContainer.getElementsByClassName('feed__item'));
Expand All @@ -42,151 +64,129 @@
//Wait for new feed items
feedContainerObserver.disconnect();
feedContainerObserver.observe(feedContainer, {childList: true});
}

function pageWrapperCallback (mutations) {
outer_loop:
for (let i = 0; i < mutations.length; i++) {
const mutation = mutations[i];
for (let j = 0; j < mutation.addedNodes.length; j++) {
const node = mutation.addedNodes[j];

if (node.nodeType !== Node.ELEMENT_NODE) continue;
const feedContainer = node.getElementsByClassName('feed__container')[0];
if (!feedContainer) continue;

console.log('ExpandDTF: feedContainer found %o', feedContainer);

//Augment existing feed items
const feedItems = Array.from(feedContainer.getElementsByClassName('feed__item'));
augmentFeedItems(feedItems);

//Wait for new feed items
feedContainerObserver.disconnect();
feedContainerObserver.observe(feedContainer, {childList: true});

break outer_loop;
}
}
break outer_loop;
}
}
}

function pageWrapperCallbackGenerator (mutations) {
for (let node of traverseAddedNodes(mutations)) {
function pageWrapperCallbackGenerator (mutations) {
for (let node of traverseAddedNodes(mutations)) {

if (node.nodeType !== Node.ELEMENT_NODE) continue;
const feedContainer = node.getElementsByClassName('feed__container')[0];
if (!feedContainer) continue;
if (node.nodeType !== Node.ELEMENT_NODE) continue;
const feedContainer = node.getElementsByClassName('feed__container')[0];
if (!feedContainer) continue;

console.log('ExpandDTF: feedContainer found %o', feedContainer);
console.log('ExpandDTF: feedContainer found %o', feedContainer);

//Augment existing feed items
const feedItems = Array.from(feedContainer.getElementsByClassName('feed__item'));
augmentFeedItems(feedItems);
//Augment existing feed items
const feedItems = Array.from(feedContainer.getElementsByClassName('feed__item'));
augmentFeedItems(feedItems);

//Wait for new feed items
feedContainerObserver.disconnect();
feedContainerObserver.observe(feedContainer, {childList: true});
//Wait for new feed items
feedContainerObserver.disconnect();
feedContainerObserver.observe(feedContainer, {childList: true});

break;
}
break;
}
}

function feedContainerCallback (mutations) {
for (let i = 0; i < mutations.length; i++) {
const mutation = mutations[i];
for (let j = 0; j < mutation.addedNodes.length; j++) {
const node = mutation.addedNodes[j];

function feedContainerCallback (mutations) {
for (let i = 0; i < mutations.length; i++) {
const mutation = mutations[i];
for (let j = 0; j < mutation.addedNodes.length; j++) {
const node = mutation.addedNodes[j];

//Augment new feed items
const feedItems = Array.from(node.getElementsByClassName('feed__item'));
augmentFeedItems(feedItems);
}
}
//Augment new feed items
const feedItems = Array.from(node.getElementsByClassName('feed__item'));
augmentFeedItems(feedItems);
}
}
}

function feedContainerCallbackGenerator (mutations) {
for (let node of traverseAddedNodes(mutations)) {
function feedContainerCallbackGenerator (mutations) {
for (let node of traverseAddedNodes(mutations)) {

//Augment new feed items
const feedItems = Array.from(node.getElementsByClassName('feed__item'));
augmentFeedItems(feedItems);
}
//Augment new feed items
const feedItems = Array.from(node.getElementsByClassName('feed__item'));
augmentFeedItems(feedItems);
}

function* traverseAddedNodes (mutations) {
for (let i = 0; i < mutations.length; i++) {
const mutation = mutations[i];
for (let j = 0; j < mutation.addedNodes.length; j++) {
const node = mutation.addedNodes[j];
yield node;
}
}
}

function* traverseAddedNodes (mutations) {
for (let i = 0; i < mutations.length; i++) {
const mutation = mutations[i];
for (let j = 0; j < mutation.addedNodes.length; j++) {
const node = mutation.addedNodes[j];
yield node;
}
}
}
})();

function toChunks (arr, chunkSize) {
const result = [];
for (let i = 0; i < arr.length; i += chunkSize) {
result.push(arr.slice(i, i + chunkSize));
}
return result;
const result = [];
for (let i = 0; i < arr.length; i += chunkSize) {
result.push(arr.slice(i, i + chunkSize));
}
return result;
}

async function augmentFeedItems (items) {
for (let chunk of toChunks(items, 3)) {
const promises = chunk.map(function (feedItem) {
return augmentWithContent(feedItem)
.catch(function (reason) { return reason; });
});
await Promise.all(promises);

//Apparently quiz module is initialized before augmentation fulfills.
//Here, we force the module to initialize again after the augmentation.
window.Air.get("module.quiz").init();
}
for (let chunk of toChunks(items, 3)) {
const promises = chunk.map(function (feedItem) {
return augmentWithContent(feedItem)
.catch(function (reason) { return reason; });
});
await Promise.all(promises);

//Apparently quiz module is initialized before augmentation fulfills.
//Here, we force the module to initialize again after the augmentation.
window.Air.get("module.quiz").init();
}
}

async function augmentWithContent (item) {
console.log('ExpandDTF: item %o', item);
console.log('ExpandDTF: item %o', item);

var itemContent = item.getElementsByClassName('content')[0];
var itemHeader = item.getElementsByClassName('content-header')[0];
var itemTitle = item.getElementsByClassName('content-header__title')[0];
var itemLink = item.getElementsByClassName('content-feed__link')[0];
var itemContent = item.getElementsByClassName('content')[0];
var itemHeader = item.getElementsByClassName('content-header')[0];
var itemTitle = item.getElementsByClassName('content-header__title')[0];
var itemLink = item.getElementsByClassName('content-feed__link')[0];

var responseContent = await retrieveContentFromApi(itemLink.href);
var responseContent = await retrieveContentFromApi(itemLink.href);

itemContent.remove();
itemHeader.insertAdjacentElement('afterend', responseContent);
itemLink.classList.remove('content-feed__link');
itemHeader.insertAdjacentElement('beforeend', itemLink);
itemLink.insertAdjacentElement('afterbegin', itemTitle);
itemContent.remove();
itemHeader.insertAdjacentElement('afterend', responseContent);
itemLink.classList.remove('content-feed__link');
itemHeader.insertAdjacentElement('beforeend', itemLink);
itemLink.insertAdjacentElement('afterbegin', itemTitle);
}

async function retrieveContentFromSite (itemLink) {
var response = await fetch(itemLink);
var responseText = await response.text();
var responseDoc = new DOMParser().parseFromString(responseText, 'text/html');
var responseContent = responseDoc.getElementsByClassName('content--full')[0];
var response = await fetch(itemLink);
var responseText = await response.text();
var responseDoc = new DOMParser().parseFromString(responseText, 'text/html');
var responseContent = responseDoc.getElementsByClassName('content--full')[0];

responseContent.getElementsByClassName('l-fa-center')[0] &&
responseContent.getElementsByClassName('l-fa-center')[0].remove();
responseContent.getElementsByClassName('l-fa-center')[0] &&
responseContent.getElementsByClassName('l-fa-center')[0].remove();

responseContent.classList.remove('content--full');
responseContent.classList.add('content--short');
responseContent.classList.remove('content--full');
responseContent.classList.add('content--short');

return responseContent;
return responseContent;
}

async function retrieveContentFromApi (itemLink) {
var response = await fetch(`https://api.dtf.ru/v1.8/entry/locate?url=${itemLink}`);
var responseJson = await response.json();
var responseText = responseJson.result.entryContent.html;
var responseDoc = new DOMParser().parseFromString(responseText, 'text/html');
var responseContent = responseDoc.getElementsByClassName('content--full')[0];
var response = await fetch(`https://api.dtf.ru/v1.8/entry/locate?url=${itemLink}`);
var responseJson = await response.json();
var responseText = responseJson.result.entryContent.html;
var responseDoc = new DOMParser().parseFromString(responseText, 'text/html');
var responseContent = responseDoc.getElementsByClassName('content--full')[0];

responseContent.classList.remove('content--full');
responseContent.classList.add('content--short');
responseContent.classList.remove('content--full');
responseContent.classList.add('content--short');

return responseContent;
return responseContent;
}

0 comments on commit 2b3e21f

Please sign in to comment.