From fe882084cb5fe561b1862e74a2a7bdb976ff74e7 Mon Sep 17 00:00:00 2001 From: Jozielio Santiago Date: Sat, 27 Jan 2018 17:33:23 -0300 Subject: [PATCH] created utils --- app/index.ts | 23 +++++++++++------------ app/utils.ts | 25 +++++++++++++++++++++++++ package.json | 6 +++--- 3 files changed, 39 insertions(+), 15 deletions(-) create mode 100644 app/utils.ts diff --git a/app/index.ts b/app/index.ts index 874b4f5..ab27ddc 100644 --- a/app/index.ts +++ b/app/index.ts @@ -1,4 +1,7 @@ import moment from 'moment'; +import Message from './model/message.model'; +import { messageFactory } from './utils'; + import './styles/modules/MessageBox.scss'; import './styles/modules/MessagesArea.scss'; @@ -7,19 +10,15 @@ const logo: any = require('./images/especializa_logo.jpg'); console.log('Index started again'); -const Message = function(text) { - this.text = text; - this.created = Date.now(); -}; - ( document.getElementById('send')).onclick = () => { - const m = new Message( - ( document.getElementById('message')).value, - ); - ( document.getElementById('messages')).innerHTML += template({ - m, - relativeTime: moment(m.created).fromNow(), - }); + messageFactory((document.getElementById('message')).value) + .then((m: Message) => { + ( document.getElementById('messages')) + .innerHTML += template({ + m, + relativeTime: moment(m.created).fromNow(), + }); + }); }; ( document.getElementById('logo')).src = logo; diff --git a/app/utils.ts b/app/utils.ts new file mode 100644 index 0000000..b1eb61e --- /dev/null +++ b/app/utils.ts @@ -0,0 +1,25 @@ +import { Promise } from 'ts-promise'; +import ImageMessage from './model/image-message.model'; +import Message from './model/message.model'; + +function messageFactory(text: string): Promise { + const giphy: RegExp = /\/giphy ('.*'|\w+)/; + if (giphy.test(text)) { + const match: string = (text.match(giphy) as string[])[1]; + return fetch('http://api.giphy.com/v1/gifs/search?' + + `q=${match}&api_key=dc6zaTOxFJmzC`, { + method: 'GET', + mode: 'cors', + }) + .then((response: Response) => response.json()) + .then((result: any) => { + const replaced = text.replace(giphy, + ``); + return new ImageMessage(replaced, undefined, result.data[0].embed_url); + }) + .catch(() => new Message(text)) as Promise; + } + return Promise.resolve(new Message(text)); +} + +export { messageFactory }; diff --git a/package.json b/package.json index c6ed38e..dfd48e6 100644 --- a/package.json +++ b/package.json @@ -60,8 +60,8 @@ "style-loader": "^0.13.1", "tslint": "^4.5.1", "typescript": "^2.2.1", - "uglifyjs": "^2.4.10", - "uglifyjs-webpack-plugin": "^0.2.1", + "uglifyjs": "^2.4.11", + "uglifyjs-webpack-plugin": "^1.1.6", "url-loader": "^0.5.7", "webpack": "^2.2.1", "webpack-dev-middleware": "^1.10.0", @@ -69,7 +69,7 @@ }, "dependencies": { "moment": "^2.17.1", - "ts-promise": "^0.3.4", + "ts-promise": "^1.0.0", "whatwg-fetch": "^2.0.3" } }