Save title emoji against document

This commit is contained in:
Tom Moor
2017-07-29 15:06:17 -07:00
parent 4311810aa8
commit cfcdae8aa0
4 changed files with 46 additions and 6 deletions

View File

@ -22,19 +22,35 @@
"precommit": "lint-staged"
},
"lint-staged": {
"*.js": ["eslint --fix", "git add"]
"*.js": [
"eslint --fix",
"git add"
]
},
"jest": {
"verbose": false,
"roots": ["frontend"],
"roots": [
"frontend"
],
"moduleNameMapper": {
"^.*[.](s?css|css)$": "<rootDir>/__mocks__/styleMock.js",
"^.*[.](gif|ttf|eot|svg)$": "<rootDir>/__test__/fileMock.js"
},
"moduleFileExtensions": ["js", "jsx", "json"],
"moduleDirectories": ["node_modules"],
"modulePaths": ["frontend"],
"setupFiles": ["<rootDir>/setupJest.js", "<rootDir>/__mocks__/window.js"]
"moduleFileExtensions": [
"js",
"jsx",
"json"
],
"moduleDirectories": [
"node_modules"
],
"modulePaths": [
"frontend"
],
"setupFiles": [
"<rootDir>/setupJest.js",
"<rootDir>/__mocks__/window.js"
]
},
"engines": {
"node": ">= 7.6"
@ -69,6 +85,7 @@
"debug": "2.2.0",
"dotenv": "^4.0.0",
"emoji-name-map": "1.1.2",
"emoji-regex": "^6.5.1",
"eslint": "^3.19.0",
"eslint-config-react-app": "^0.6.2",
"eslint-import-resolver-webpack": "^0.3.1",

View File

@ -0,0 +1,12 @@
module.exports = {
up: (queryInterface, Sequelize) => {
queryInterface.addColumn('documents', 'emoji', {
type: Sequelize.STRING,
allowNull: true,
});
},
down: (queryInterface, _Sequelize) => {
queryInterface.removeColumn('documents', 'emoji');
},
};

View File

@ -2,6 +2,7 @@
import slug from 'slug';
import _ from 'lodash';
import randomstring from 'randomstring';
import emojiRegex from 'emoji-regex';
import isUUID from 'validator/lib/isUUID';
import { DataTypes, sequelize } from '../sequelize';
@ -34,6 +35,14 @@ const createUrlId = doc => {
return (doc.urlId = doc.urlId || randomstring.generate(10));
};
const extractEmoji = doc => {
const regex = emojiRegex();
const match = regex.exec(doc.title);
if (match.length) return match[0];
return null;
};
const beforeSave = async doc => {
doc.html = convertToMarkdown(doc.text);
doc.preview = truncateMarkdown(doc.text, 160);
@ -53,6 +62,7 @@ const beforeSave = async doc => {
// We'll add the current user as revision hasn't been generated yet
ids.push(doc.lastModifiedById);
doc.collaboratorIds = _.uniq(ids);
doc.emoji = extractEmoji(doc);
return doc;
};

View File

@ -22,6 +22,7 @@ async function present(ctx: Object, document: Document, options: ?Options) {
text: document.text,
html: document.html,
preview: document.preview,
emoji: document.emoji,
createdAt: document.createdAt,
createdBy: presentUser(ctx, document.createdBy),
updatedAt: document.updatedAt,