49 lines
1.3 KiB
JavaScript
49 lines
1.3 KiB
JavaScript
'use strict';
|
|
|
|
const config = require('config');
|
|
const yaml = require('js-yaml');
|
|
|
|
const interpolate = require('../interpolate');
|
|
const textToStream = require('./textToStream');
|
|
const save = require('./save');
|
|
|
|
async function writeToIndex(posts, profilePaths, user, args) {
|
|
const filepath = interpolate(config.library.index.file, user, null, false);
|
|
const now = new Date();
|
|
|
|
const newAndUpdatedEntries = posts.concat(user.indexed.updated, args.indexIgnored ? user.indexed.ignored : []).map((post) => {
|
|
const entryPost = {
|
|
id: post.id,
|
|
subreddit: post.subreddit,
|
|
permalink: post.permalink,
|
|
url: post.url,
|
|
hostId: post.host.id,
|
|
date: post.datetime,
|
|
indexed: now,
|
|
title: post.title,
|
|
};
|
|
|
|
if (post.previewFallback) {
|
|
entryPost.preview = true;
|
|
}
|
|
|
|
return entryPost;
|
|
});
|
|
|
|
const data = {
|
|
profile: {
|
|
image: profilePaths.image,
|
|
description: profilePaths.description,
|
|
},
|
|
posts: newAndUpdatedEntries.concat(user.indexed.original),
|
|
};
|
|
|
|
if (!data.profile.image && !data.profile.description && !data.posts.length) {
|
|
return;
|
|
}
|
|
|
|
return save(filepath, textToStream(yaml.safeDump(data)));
|
|
}
|
|
|
|
module.exports = writeToIndex;
|