From 5c70536f67700f8fba8e376897779e4d9c930375 Mon Sep 17 00:00:00 2001 From: CorePrime95 Date: Sun, 29 Oct 2017 22:52:18 +0100 Subject: [PATCH 1/4] Added render functions for text --- src/js/services/correspondentListService.js | 160 ++++++++++++++++++++ 1 file changed, 160 insertions(+) diff --git a/src/js/services/correspondentListService.js b/src/js/services/correspondentListService.js index 91a445b59..a901bbdb8 100644 --- a/src/js/services/correspondentListService.js +++ b/src/js/services/correspondentListService.js @@ -35,11 +35,170 @@ angular.module('copayApp.services').factory('correspondentListService', function $rootScope.totalNewMsgCnt = lodash.sum(lodash.values(counters)); }, true); + + //This function generates a html string from the font render parameters + function renderFont(parameters) { + var htmlstring = ""; + + if (parameters.length > 0) { + htmlstring = " 0) { + //Switch by type of render item + switch (parameters[0]) { + case "font": + htmlstring = renderFont(parameters); + break; + case "/font": + htmlstring = ""; + break; + case "b": + htmlstring = ""; + break; + case "/b": + htmlstring = ""; + break; + case "i": + htmlstring = ""; + break; + case "/i": + htmlstring = ""; + break; + case "u": + htmlstring = ""; + break; + case "/u": + htmlstring = ""; + break; + case "sup": + htmlstring = ""; + break; + case "/sup": + htmlstring = ""; + break; + case "sub": + htmlstring = ""; + break; + case "/sub": + htmlstring = ""; + break; + case "mark": + htmlstring = ""; + break; + case "/mark": + htmlstring = ""; + break; + case "del": + htmlstring = ""; + break; + case "/del": + htmlstring = ""; + break; + default: + htmlstring = ""; + } + } + return htmlstring; + } + + //This function parses a string for the rendertag + //It replaces one occurrence of the rendertag with its html equivalent + function parseAndRender(text, renderTag) { + //Search for start + var RenderTagStart = text.indexOf("{" + renderTag); + + if (RenderTagStart > -1) { + //Search for end + var RenderTagEnd = text.indexOf("}", RenderTagStart); + + if (RenderTagEnd > -1) { + + //Get what we want to parse + var toParse = text.substring(RenderTagStart + 1, RenderTagEnd); + + //Get parameters + var RenderParameters = toParse.split(" "); + + //Get replacement string + var replacementstring = handleRenderParameters(RenderParameters); + + if(replacementstring !== "") + { + text = text.replace(text.substring(RenderTagStart, RenderTagEnd + 1), replacementstring); + } + } + } + return text; + } + + //This function iterates through the text string until all rendertags have been replaced with their html counterparts + function loopParseandRender(text, rendertags) { + var toRender = rendertags.split(","); + + //parse and render tags until everything replaced + for (var i = 0; i < toRender.length; i++) { + var oldtext = ""; + while (oldtext !== text) { + oldtext = text; + text = parseAndRender(text, String(toRender[i])); + } + } + return text; + } + + //This functions looks for Rendertags and replaces them with the corresponding html items + function applyRenderOptions(text){ + return loopParseandRender(text, "font,/font,b,/b,i,/i,u,/u,sup,/sup,sub,/sub,mark,/mark,del,/del"); + } + function addIncomingMessageEvent(from_address, body, message_counter){ var walletGeneral = require('byteballcore/wallet_general.js'); walletGeneral.readMyAddresses(function(arrMyAddresses){ body = highlightActions(escapeHtml(body), arrMyAddresses); body = text2html(body); + body = applyRenderOptions(body); console.log("body with markup: "+body); addMessageEvent(true, from_address, body, message_counter); }); @@ -415,6 +574,7 @@ angular.module('copayApp.services').factory('correspondentListService', function if (message.is_incoming) { message.message = highlightActions(escapeHtml(message.message), arrMyAddresses); message.message = text2html(message.message); + message.message = applyRenderOptions(message.message); } else { message.message = formatOutgoingMessage(message.message); } From 3e20eb5c6eb5d6591282feeb355c24ee7029717f Mon Sep 17 00:00:00 2001 From: CorePrime95 Date: Mon, 30 Oct 2017 12:38:41 +0100 Subject: [PATCH 2/4] More font sanity --- src/js/services/correspondentListService.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/js/services/correspondentListService.js b/src/js/services/correspondentListService.js index a901bbdb8..27c744169 100644 --- a/src/js/services/correspondentListService.js +++ b/src/js/services/correspondentListService.js @@ -50,7 +50,7 @@ angular.module('copayApp.services').factory('correspondentListService', function if (parameters[i].substring(0, 6) == "size=\"") { end = parameters[i].indexOf("\"", 6); //Sanity check: Font size bigger then 3 digits not allowed - if (end <= 9) { + if ( (end > -1) && (end <= 9) ) { var value = parameters[i].substring(6, end); htmlstring += " size=\"" + value + "\""; } @@ -69,8 +69,8 @@ angular.module('copayApp.services').factory('correspondentListService', function //face="verdana" parameter if (parameters[i].substring(0, 6) == "face=\"") { end = parameters[i].indexOf("\"", 6); - //Sanity check: font name max 50 chars - if (end <= 56) { + //Sanity check: font name max 30 chars + if ( (end>-1) && (end <= 36) ) { var value = parameters[i].substring(6, end); htmlstring += " face=\"" + value + "\""; } From 096abc3207fd37fd0bb375e753d0782a10111ec1 Mon Sep 17 00:00:00 2001 From: CorePrime95 Date: Sat, 18 Nov 2017 16:33:54 +0100 Subject: [PATCH 3/4] added offerCommand function --- src/js/controllers/correspondentDevice.js | 16 ++++++++++++++++ src/js/services/correspondentListService.js | 2 ++ 2 files changed, 18 insertions(+) diff --git a/src/js/controllers/correspondentDevice.js b/src/js/controllers/correspondentDevice.js index d7c344230..1d25423bf 100644 --- a/src/js/controllers/correspondentDevice.js +++ b/src/js/controllers/correspondentDevice.js @@ -884,6 +884,22 @@ angular.module('copayApp.controllers').controller('correspondentDeviceController console.log("will send command "+command); $scope.message = command; $scope.send(); + //set focus back to input + if (document.chatForm && document.chatForm.message) + { + document.chatForm.message.focus(); + } + }; + + // offer a command by pasting the command to send in the chatbox + $scope.offerCommand = function(command, description){ + console.log("will offer command "+command); + appendText(command); + //set focus back to input + if (document.chatForm && document.chatForm.message) + { + document.chatForm.message.focus(); + } }; $scope.openExternalLink = function(url){ diff --git a/src/js/services/correspondentListService.js b/src/js/services/correspondentListService.js index 27c744169..387420791 100644 --- a/src/js/services/correspondentListService.js +++ b/src/js/services/correspondentListService.js @@ -282,6 +282,8 @@ angular.module('copayApp.services').factory('correspondentListService', function return ''+objPaymentRequest.amountStr+''; }).replace(/\[(.+?)\]\(command:(.+?)\)/g, function(str, description, command){ return ''+description+''; + }).replace(/\[(.+?)\]\(offercommand:(.+?)\)/g, function(str, description, command){ + return ''+description+''; }).replace(/\[(.+?)\]\(payment:(.+?)\)/g, function(str, description, paymentJsonBase64){ var arrMovements = getMovementsFromJsonBase64PaymentRequest(paymentJsonBase64, true); if (!arrMovements) From 782ca4609cdfd69719fc7cecdb7ba3af0a5e49ee Mon Sep 17 00:00:00 2001 From: CorePrime95 Date: Sat, 18 Nov 2017 20:01:38 +0100 Subject: [PATCH 4/4] Added text alignments --- src/js/services/correspondentListService.js | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/js/services/correspondentListService.js b/src/js/services/correspondentListService.js index 387420791..6f9e005e3 100644 --- a/src/js/services/correspondentListService.js +++ b/src/js/services/correspondentListService.js @@ -136,6 +136,18 @@ angular.module('copayApp.services').factory('correspondentListService', function case "/del": htmlstring = ""; break; + case "alignleft": + htmlstring = "
"; + break; + case "alignright": + htmlstring = "
"; + break; + case "aligncenter": + htmlstring = "
"; + break; + case "/align": + htmlstring = "
"; + break; default: htmlstring = ""; } @@ -190,7 +202,7 @@ angular.module('copayApp.services').factory('correspondentListService', function //This functions looks for Rendertags and replaces them with the corresponding html items function applyRenderOptions(text){ - return loopParseandRender(text, "font,/font,b,/b,i,/i,u,/u,sup,/sup,sub,/sub,mark,/mark,del,/del"); + return loopParseandRender(text, "font,/font,b,/b,i,/i,u,/u,sup,/sup,sub,/sub,mark,/mark,del,/del,alignleft,alignright,aligncenter,/align"); } function addIncomingMessageEvent(from_address, body, message_counter){