// I M P O R T S
import { html } from 'hono/html'
// U T I L S
import apiPage from "./views/api.js";
import fetchMetadata from "./helpers/fetch-metadata.js";
import lbrytvAPI from "./helpers/lbrytv-sdk.js";
import { generateGitHubFeed } from "./helpers/github.js";
import { URL } from "url";
// P R O G R A M
export default async(socket, action) => {
if (typeof socket !== "object" && typeof action !== "object")
return;
switch(true) {
case action.message === "fetch metadata":
fetchMetadata(action, socket);
break;
case action.message === "landed on homepage":
generateGitHubFeed(result => {
send(socket, {
html: result,
message: "updated html",
selector: "#github-feed"
});
});
break;
case action.message === "landed on playground":
generateContent(1, result => {
send(socket, {
html: result,
message: "updated html",
selector: "#playground-loader"
});
});
break;
case action.message === "request for playground, example 1":
generateContent(1, result => {
send(socket, {
html: result,
message: "updated html",
selector: "#playground-loader"
});
});
break;
case action.message === "request for playground, example 2":
generateMemeCreator(socket);
break;
case action.message === "request for playground, example 3":
generateContent(3, result => {
send(socket, {
html: result,
message: "updated html",
selector: "#playground-loader"
});
});
break;
case action.message === "view different documentation version":
send(socket, {
element: "div",
html: await apiPage({
params: {
wildcard: action.version.split("-")[0]
},
tag: action.version.split("-")[1]
}),
message: "replace html",
parentElement: "main",
selector: ".__slate"
});
break;
default:
break;
}
};
// H E L P E R S
function generateContent(exampleNumber, displayTrendingContent) {
if (exampleNumber === 1) {
return lbrytvAPI.getTrending()
.then(response => {
const renderedContentCollection = [];
const urlsToResolve = [];
response.forEach(r => {
urlsToResolve.push(r.canonical_url);
});
lbrytvAPI.resolve(urlsToResolve)
.then(resolveResponse => {
if (resolveResponse !== null) {
const responses = Object.values(resolveResponse);
for (const r in responses) {
const part = responses[r];
if (part.value && part.value.thumbnail && part.value.thumbnail.url) {
renderedContentCollection.push(`
`);
const memeCreator = html`