added markdown support
authorunknown <ajbura@gmail.com>
Mon, 9 Aug 2021 09:14:06 +0000 (14:44 +0530)
committerunknown <ajbura@gmail.com>
Mon, 9 Aug 2021 09:14:06 +0000 (14:44 +0530)
package-lock.json
package.json
src/client/state/RoomsInput.js

index 18dc493e84dc0388a975c7d3713a7b1d4c0b60f9..517c11cfa43202f2bd7d30f36ee5f98219522f06 100644 (file)
       "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
       "dev": true
     },
+    "commonmark": {
+      "version": "0.30.0",
+      "resolved": "https://registry.npmjs.org/commonmark/-/commonmark-0.30.0.tgz",
+      "integrity": "sha512-j1yoUo4gxPND1JWV9xj5ELih0yMv1iCWDG6eEQIPLSWLxzCXiFoyS7kvB+WwU+tZMf4snwJMMtaubV0laFpiBA==",
+      "requires": {
+        "entities": "~2.0",
+        "mdurl": "~1.0.1",
+        "minimist": ">=1.2.2",
+        "string.prototype.repeat": "^0.2.0"
+      },
+      "dependencies": {
+        "entities": {
+          "version": "2.0.3",
+          "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz",
+          "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ=="
+        }
+      }
+    },
     "component-emitter": {
       "version": "1.3.0",
       "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
     "minimist": {
       "version": "1.2.5",
       "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
-      "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
-      "dev": true
+      "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
     },
     "minipass": {
       "version": "3.1.3",
         "side-channel": "^1.0.4"
       }
     },
+    "string.prototype.repeat": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-0.2.0.tgz",
+      "integrity": "sha1-q6Nt4I3O5qWjN9SbLqHaGyj8Ds8="
+    },
     "string.prototype.trimend": {
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz",
index bb288edd8b9f96b33d9ddcc61120cf212485d24a..d12a01674fd710557ff027421711ba8abab9dd4f 100644 (file)
@@ -19,6 +19,7 @@
     "@tippyjs/react": "^4.2.5",
     "babel-polyfill": "^6.26.0",
     "browser-encrypt-attachment": "^0.3.0",
+    "commonmark": "^0.30.0",
     "dateformat": "^4.5.1",
     "emojibase-data": "^6.2.0",
     "flux": "^4.0.1",
index eb704a7787dc222f480c9108b03153fca58a2a7b..970bd62142c54fcae1178487a3b309ee327ac381 100644 (file)
@@ -1,6 +1,8 @@
 import EventEmitter from 'events';
+import { Parser, HtmlRenderer } from 'commonmark';
 import encrypt from 'browser-encrypt-attachment';
 import cons from './cons';
+import settings from './settings';
 
 function getImageDimension(file) {
   return new Promise((resolve) => {
@@ -78,6 +80,13 @@ function getVideoThumbnail(video, width, height, mimeType) {
   });
 }
 
+function getFormatedBody(markdown) {
+  const reader = new Parser();
+  const writer = new HtmlRenderer();
+  const parsed = reader.parse(markdown);
+  return writer.render(parsed);
+}
+
 class RoomsInput extends EventEmitter {
   constructor(mx) {
     super();
@@ -163,6 +172,10 @@ class RoomsInput extends EventEmitter {
         body: input.message,
         msgtype: 'm.text',
       };
+      if (settings.isMarkdown) {
+        content.format = 'org.matrix.custom.html';
+        content.formatted_body = getFormatedBody(input.message);
+      }
       this.matrixClient.sendMessage(roomId, content);
     }