Explorar o código

:tada: able to send markdown message now

Song %!s(int64=4) %!d(string=hai) anos
pai
achega
25f120d197
Modificáronse 4 ficheiros con 41 adicións e 38 borrados
  1. 1 1
      common/message.js
  2. 2 1
      common/wechat.js
  3. 18 4
      routers/message.js
  4. 20 32
      views/article.ejs

+ 1 - 1
common/message.js

@@ -1,6 +1,6 @@
 const { pushWeChatMessage } = require('./wechat');
 const { pushEmailMessage } = require('./email');
-const Message = require('../models/message').Message;
+const { Message } = require('../models');
 
 async function processMessage(userPrefix, message) {
   if (message.email) {

+ 2 - 1
common/wechat.js

@@ -45,7 +45,8 @@ async function pushWeChatMessage(userPrefix, message) {
     template_id: user.wechatTemplateId,
   };
   if (message.content) {
-    request_data.url = `${config.href}${userPrefix}/${message.id}`;
+    request_data.url = `${config.href}message/${message.id}`;
+    console.debug(`http://localhost:3000/message/${message.id}`);
   }
   request_data.data = { text: { value: message.description } };
   let requestUrl = `https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=${access_token}`;

+ 18 - 4
routers/message.js

@@ -1,4 +1,6 @@
 const express = require('express');
+const { Message } = require('../models');
+const { md2html } = require('../common/utils');
 
 const router = express.Router();
 
@@ -10,11 +12,23 @@ router.get('/delete/:id', (req, res, next) => {
   });
 });
 
-router.get('/:id', (req, res, next) => {
+router.get('/:id', async (req, res, next) => {
   const id = req.params.id;
-  // TODO: show article
-  req.query.description = req.params.description;
-  res.render('article');
+  try {
+    let message = await Message.findOne({
+      where: {
+        id: id,
+      },
+    });
+    if (message) {
+      message.content = md2html(message.content);
+      res.render('article', {
+        message,
+      });
+    }
+  } catch (e) {
+    res.status(404);
+  }
 });
 
 module.exports = router;

+ 20 - 32
views/article.ejs

@@ -1,34 +1,22 @@
-<%- include('./partials/header') %>
-
-<div class="normal-container">
-    <div class="columns is-desktop">
-        <div class="column">
-            <article id="article">
-                <%- include('./partials/page-info') %>
-                <%-page.converted_content%>
-                <p class="copyright"><strong>Links: <a href="<%-page.link%>"><%-page.link%></a></strong></p>
-                <%- config.copyright %>
-                <%- config.ad %>
-            </article>
-        </div>
-        <div class="column is-one-fifth-fullhd">
-            <aside class="menu toc">
-                <p class="menu-label">
-                    Table of Content
-                </p>
-                <ul class="menu-list" id="toc">
-                </ul>
-            </aside>
-        </div>
+<!DOCTYPE html>
+<html lang="zh">
+<head>
+    <meta charset="UTF-8"/>
+    <meta name="viewport" content="width=device-width, initial-scale=1"/>
+    <title><%= message.title %></title>
+    <meta name="theme-color" content="#ffffff"/>
+    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/css/bulma.min.css">
+    <link rel="stylesheet" href="/public/main.css">
+</head>
+<body>
+<div class="container" style="max-width: 960px">
+    <div style="margin: 16px 16px">
+        <h1 class="title"><%= message.title %></h1>
+        <h2 class="subtitle"><%- message.description %></h2>
+        <article id="article">
+            <%- message.content %>
+        </article>
     </div>
-    <%- include('./partials/prev-next') %>
-    <%- include('./partials/comment') %>
 </div>
-
-<script>
-  (function() {
-    generateTOC();
-  })();
-</script>
-
-<%- include('./partials/footer') %>
+</body>
+</html>