ripunzel/src/save/writeToIndex.js

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;