diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +node_modules diff --git a/app/index.js b/app/index.js index fbdbe6e..8fa153c 100644 --- a/app/index.js +++ b/app/index.js @@ -1,6 +1,13 @@ -let server = require("./lib/express"); +let server; require("./lib/ssb"); -require("./lib/electron"); + +setTimeout(() => { + server = require("./lib/express"); +}, 500); + +setTimeout(() => { + require("./lib/electron"); +}, 1000); if (process.env.NODE_ENV !== "production") { const chokidar = require("chokidar"); @@ -13,7 +20,7 @@ if (process.env.NODE_ENV !== "production") { Object.keys(require.cache).forEach((id) => { if (/[\/\\]lib[\/\\]/.test(id)) delete require.cache[id]; }); - server.close(); + if (server) server.close(); server = require("./lib/express"); BrowserWindow.getAllWindows()[0].reload(); }); diff --git a/app/lib/express.js b/app/lib/express.js index 1559e7e..15cb53c 100644 --- a/app/lib/express.js +++ b/app/lib/express.js @@ -1,22 +1,45 @@ const express = require("express"); const app = express(); const port = 3000; +const bodyParser = require("body-parser"); +const pull = require("pull-stream"); +const Client = require("ssb-client"); +let ssbServer; +let ssbKeys; +Client((err, server) => { + if (err) throw err; + ssbServer = server; + ssbServer.whoami((err, keys) => { + if (err) throw err; + ssbKeys = keys; + }); +}); + +app.use(bodyParser.json()); +app.use(bodyParser.urlencoded({ extended: true })); app.set("view engine", "ejs"); - app.use(express.static("public")); app.get("/", (_req, res) => { - res.render("index", { message: "Hello there21!" }); + pull( + ssbServer.createFeedStream(), + pull.collect((err, msgs) => { + const posts = msgs.map((x) => x.value.content); + + res.render("index", { posts, profile: ssbKeys }); + }) + ); }); app.post("/publish", (req, res) => { - console.log("req.body", req.body); - res.redirect("/"); + ssbServer.publish({ type: "post", text: req.body.message }, (err, msg) => { + res.redirect("/"); + }); }); -const server = app.listen(port, () => +const expressServer = app.listen(port, () => console.log(`Example app listening at http://localhost:${port}`) ); -module.exports = server; +module.exports = expressServer; diff --git a/app/views/index.ejs b/app/views/index.ejs index 7213b5a..4b4e9ef 100644 --- a/app/views/index.ejs +++ b/app/views/index.ejs @@ -10,6 +10,11 @@ -

<%= message %>

+

+ Whoami: <%= profile.id %> +

+ <% posts.map(post => { %> +
<%= post.text %>
+ <% }) %>