fix: enable live reloading title of doc (#1507)

* fix: enable live reloading title of doc

* fix: removing unnecessary reload statements

* fix: only title change should trigger a live reload

* fix: adding more properties that triggers a live reload

* fix: refactoring
This commit is contained in:
Tushar Sharma 2019-05-27 13:18:01 +05:30 committed by Endi
parent ef1af0a5be
commit bff9a53095

View file

@ -89,6 +89,10 @@ function execute(port, host) {
MetadataBlog = require(join('..', 'core', 'MetadataBlog.js')); MetadataBlog = require(join('..', 'core', 'MetadataBlog.js'));
} }
function reloadTranslations() {
removeModuleAndChildrenFromCache('./translation.js');
}
function requestFile(url, res, notFoundCallback) { function requestFile(url, res, notFoundCallback) {
request.get(url, (error, response, body) => { request.get(url, (error, response, body) => {
if (!error) { if (!error) {
@ -116,18 +120,31 @@ function execute(port, host) {
app.get(routing.docs(siteConfig), (req, res, next) => { app.get(routing.docs(siteConfig), (req, res, next) => {
const url = decodeURI(req.path.toString().replace(siteConfig.baseUrl, '')); const url = decodeURI(req.path.toString().replace(siteConfig.baseUrl, ''));
const metadata = const metakey = Object.keys(Metadata).find(
Metadata[ id => Metadata[id].permalink === url,
Object.keys(Metadata).find(id => Metadata[id].permalink === url) );
];
let metadata = Metadata[metakey];
const file = docs.getFile(metadata); const file = docs.getFile(metadata);
if (!file) { if (!file) {
next(); next();
return; return;
} }
const {rawContent, metadata: rawMetadata} = metadataUtils.extractMetadata(
file,
);
// if any of the followings is changed, reload the metadata
const reloadTriggers = ['sidebar_label', 'hide_title', 'title'];
if (reloadTriggers.some(key => metadata[key] !== rawMetadata[key])) {
reloadMetadata();
extractTranslations();
reloadTranslations();
metadata = Metadata[metakey];
}
reloadSiteConfig(); reloadSiteConfig();
const rawContent = metadataUtils.extractMetadata(file).rawContent;
removeModuleAndChildrenFromCache('../core/DocsLayout.js'); removeModuleAndChildrenFromCache('../core/DocsLayout.js');
const mdToHtml = metadataUtils.mdToHtml(Metadata, siteConfig); const mdToHtml = metadataUtils.mdToHtml(Metadata, siteConfig);
res.send(docs.getMarkup(rawContent, mdToHtml, metadata, siteConfig)); res.send(docs.getMarkup(rawContent, mdToHtml, metadata, siteConfig));