Refactor to extract mobile routes to a separate file

This commit is contained in:
Rogerio Chaves 2020-04-25 08:43:48 +02:00
parent ba3c85d917
commit 207287fbc8
No known key found for this signature in database
GPG Key ID: E6AF5440509B1D94
2 changed files with 102 additions and 89 deletions

View File

@ -27,6 +27,7 @@ const sgMail = require("@sendgrid/mail");
const ejs = require("ejs");
const cookieEncrypter = require("cookie-encrypter");
const expressLayouts = require("express-ejs-layouts");
const mobileRoutes = require("./mobile-routes");
let ssbServer;
let mode = process.env.MODE || "client";
@ -42,6 +43,8 @@ Client(ssbSecret, ssbConfig, async (err, server) => {
if (err) throw err;
ssbServer = server;
mobileRoutes.setSsbServer(server);
queries.progress(
ssbServer,
({ rate, feeds, incompleteFeeds, progress, total }) => {
@ -155,6 +158,7 @@ app.use((_req, res, next) => {
});
const router = asyncRouter(app);
mobileRoutes.setupRoutes(router);
router.get("/", { public: true }, async (req, res) => {
if (!req.context.profile) {
@ -177,52 +181,6 @@ router.get("/", { public: true }, async (req, res) => {
});
});
router.get("/mobile", async (req, res) => {
if (!isPhone(req)) {
return res.redirect("/");
}
const posts = await queries.getPosts(ssbServer, req.context.profile);
res.render("mobile/home", {
posts,
profile: req.context.profile,
layout: "mobile/_layout",
});
});
router.get("/mobile/secrets", async (req, res) => {
if (!isPhone(req)) {
return res.redirect("/");
}
const [friends, secretMessages] = await Promise.all([
queries.getFriends(ssbServer, req.context.profile),
queries.getSecretMessages(ssbServer, req.context.profile),
]);
res.render("mobile/secrets", {
friends,
secretMessages,
profile: req.context.profile,
layout: "mobile/_layout",
});
});
router.get("/mobile/friends", async (req, res) => {
if (!isPhone(req)) {
return res.redirect("/");
}
const friends = await queries.getFriends(ssbServer, req.context.profile);
res.render("mobile/friends", {
friends,
profile: req.context.profile,
layout: "mobile/_layout",
});
});
router.get("/login", { public: true }, (_req, res) => {
res.render("login", { mode });
});
@ -364,33 +322,6 @@ router.get("/profile/:id(*)", async (req, res) => {
res.render("profile", { profile, posts, friends, friendshipStatus });
});
router.get("/mobile/profile/:id(*)", async (req, res) => {
const id = req.params.id;
if (id == req.context.profile.id) {
return res.redirect("/");
}
if (!isPhone(req)) {
return res.redirect(`/profile/${id}`);
}
const [profile, posts, friends, friendshipStatus] = await Promise.all([
queries.getProfile(ssbServer, id),
queries.getPosts(ssbServer, { id }),
queries.getFriends(ssbServer, { id }),
queries.getFriendshipStatus(ssbServer, req.context.profile.id, id),
]);
res.render("mobile/profile", {
profile,
posts,
friends,
friendshipStatus,
layout: "mobile/_layout",
});
});
router.post("/profile/:id(*)/add_friend", async (req, res) => {
const id = req.params.id;
if (id == req.context.profile.id) {
@ -611,22 +542,6 @@ router.get("/communities/:name", async (req, res) => {
});
});
router.get("/mobile/communities/:name", async (req, res) => {
const name = req.params.name;
if (!isPhone(req)) {
return res.redirect(`/communities/${name}`);
}
const posts = await queries.getCommunityPosts(ssbServer, name);
res.render("mobile/communities/community", {
community: { name },
posts,
layout: "mobile/_layout",
});
});
router.get("/communities/:name/new", async (req, res) => {
const community = await communityData(req);

98
app/lib/mobile-routes.js Normal file
View File

@ -0,0 +1,98 @@
const queries = require("./queries");
const { isPhone } = require("./utils");
let ssbServer;
module.exports.setSsbServer = (server) => {
ssbServer = server;
};
module.exports.setupRoutes = (router) => {
router.get("/mobile", async (req, res) => {
if (!isPhone(req)) {
return res.redirect("/");
}
const posts = await queries.getPosts(ssbServer, req.context.profile);
res.render("mobile/home", {
posts,
profile: req.context.profile,
layout: "mobile/_layout",
});
});
router.get("/mobile/secrets", async (req, res) => {
if (!isPhone(req)) {
return res.redirect("/");
}
const [friends, secretMessages] = await Promise.all([
queries.getFriends(ssbServer, req.context.profile),
queries.getSecretMessages(ssbServer, req.context.profile),
]);
res.render("mobile/secrets", {
friends,
secretMessages,
profile: req.context.profile,
layout: "mobile/_layout",
});
});
router.get("/mobile/friends", async (req, res) => {
if (!isPhone(req)) {
return res.redirect("/");
}
const friends = await queries.getFriends(ssbServer, req.context.profile);
res.render("mobile/friends", {
friends,
profile: req.context.profile,
layout: "mobile/_layout",
});
});
router.get("/mobile/profile/:id(*)", async (req, res) => {
const id = req.params.id;
if (id == req.context.profile.id) {
return res.redirect("/");
}
if (!isPhone(req)) {
return res.redirect(`/profile/${id}`);
}
const [profile, posts, friends, friendshipStatus] = await Promise.all([
queries.getProfile(ssbServer, id),
queries.getPosts(ssbServer, { id }),
queries.getFriends(ssbServer, { id }),
queries.getFriendshipStatus(ssbServer, req.context.profile.id, id),
]);
res.render("mobile/profile", {
profile,
posts,
friends,
friendshipStatus,
layout: "mobile/_layout",
});
});
router.get("/mobile/communities/:name", async (req, res) => {
const name = req.params.name;
if (!isPhone(req)) {
return res.redirect(`/communities/${name}`);
}
const posts = await queries.getCommunityPosts(ssbServer, name);
res.render("mobile/communities/community", {
community: { name },
posts,
layout: "mobile/_layout",
});
});
};