update dependencies, fixes to support new authentication features
[websub-hub] / src / template / root-html.js
index fc655c01200b2f94cacec37d82d7847d044ca108..575d4bcbdf439c0287f1bc565e15fb4d10834ab0 100644 (file)
@@ -1,11 +1,18 @@
 'use strict';
 
 const th = require('./template-helper');
+const { sessionNavLinks } = require('@squeep/authentication-module');
 
-function hAppSection(pageTitle) {
-  return `      <section class="h-app hidden">
+/**
+ *
+ * @param {string} pageTitle page title
+ * @param {string} logoUrl logo url
+ * @returns {string} element
+ */
+function hAppSection(pageTitle, logoUrl) {
+  return `      <section hidden class="h-app">
         <h2>h-app Information for IndieAuth Logins</h2>
-        <img src="static/favicon.ico" class="u-logo">
+        <img src="${logoUrl}" class="u-logo">
         <a href="" class="u-url p-name">${pageTitle}</a>
         <p class="p-summary">
           This is a WebSub Hub service, facilitating content distribution.
@@ -14,6 +21,9 @@ function hAppSection(pageTitle) {
       </section>`;
 }
 
+/**
+ * @returns {string} element
+ */
 function aboutSection() {
   return `      <section class="about">
         <h2>What</h2>
@@ -29,6 +39,12 @@ function aboutSection() {
       </section>`;
 }
 
+/**
+ *
+ * @param {boolean} isPublicHub is public hub
+ * @param {string} hubURL hub url
+ * @returns {string} html
+ */
 function usageSection(isPublicHub, hubURL) {
   const usageContent = isPublicHub ? `      <h2>Public Hub</h2>
       <p>
@@ -121,6 +137,11 @@ ${usageContent}
       </section>`;
 }
 
+/**
+ *
+ * @param {string} contactHTML html
+ * @returns {string} html
+ */
 function contactSection(contactHTML) {
   let section = '';
   if (contactHTML) {
@@ -133,33 +154,37 @@ ${contactHTML}
 
 /**
  * 
- * @param {Object} ctx
- * @param {Object} options
- * @param {Object} options.manager
- * @param {String} options.adminContactHTML
- * @param {String} options.manager.pageTitle
- * @param {String} options.manager.publicHub
- * @param {Object} options.dingus
- * @param {String} options.dingus.selfBaseUrl
- * @returns {String}
+ * @param {object} ctx context
+ * @param {object} options options
+ * @param {object} options.manager manager options
+ * @param {string} options.adminContactHTML html
+ * @param {string} options.manager.pageTitle title
+ * @param {string} options.manager.publicHub is public
+ * @param {object} options.dingus dingus options
+ * @param {string} options.dingus.selfBaseUrl url
+ * @returns {string} html
  */
 module.exports = (ctx, options) => {
+  const pagePathLevel = 0;
   const pageTitle = options.manager.pageTitle;
   const isPublicHub = options.manager.publicHub;
   const contactHTML = options.adminContactHTML;
   const footerEntries = options.manager.footerEntries;
   const hubURL = options.dingus.selfBaseUrl || '<s>https://hub.example.com/</s>';
-  const headElements = [];
-  const navLinks = [{
-    href: 'admin/',
-    text: 'Admin',
-  }];
-  const mainContent = [
+  const htmlOptions = {
+    pageIdentifier: 'root',
+    pageTitle,
+    logoUrl: options.manager.logoUrl,
+    footerEntries,
+    navLinks: [],
+  };
+  th.navLinks(pagePathLevel, ctx, htmlOptions);
+  sessionNavLinks(pagePathLevel, ctx, htmlOptions);
+  const content = [
     aboutSection(),
     usageSection(isPublicHub, hubURL),
     contactSection(contactHTML),
-    hAppSection(pageTitle),
+    hAppSection(pageTitle, options.manager.logoUrl),
   ];
-  return th.htmlTemplate(ctx, 0, pageTitle, headElements, navLinks, mainContent, footerEntries,
-  );
+  return th.htmlPage(pagePathLevel, ctx, htmlOptions, content);
 };
\ No newline at end of file