AlmostSimpleChat fork: rebrand + Twimoji emoji
This commit is contained in:
1 parent
0d0d231fae
commit
0da0c2426d
2 files changed
+66
-11
No files matched your search
@@ -767,6 +767,9 @@ MainAssistant.prototype.handleItemRendered = function(listWidget, itemModel, ite
|
||||
itemNode.innerHTML = this.parseShareSpaceLinks(itemNode.innerHTML);
|
||||
itemNode.innerHTML = this.parseImgurLinks(itemNode.innerHTML);
|
||||
}
|
||||
if (appModel.AppSettingsCurrent["ShowEmojis"]) {
|
||||
itemNode.innerHTML = this.renderTwimoji(itemNode.innerHTML);
|
||||
}
|
||||
if (itemNode.innerHTML.indexOf("</span> </div>") != -1) {
|
||||
itemNode.innerHTML = itemModel.message;
|
||||
Mojo.Log.warn("**** EMPTY MESSAGE RENDERED! " + JSON.stringify(itemModel));
|
||||
@@ -818,7 +821,7 @@ MainAssistant.prototype.checkForUpdates = function() {
|
||||
systemModel.GetInstalledApps(function(response) {
|
||||
if (response && response.apps) {
|
||||
for (var a = 0; a < response.apps.length; a++) {
|
||||
if (response.apps[a].id == "com.jonandnic.simplechat") {
|
||||
if (response.apps[a].id == "com.notalexnoyle.simplechat") {
|
||||
oldFound = true;
|
||||
}
|
||||
}
|
||||
@@ -883,6 +886,58 @@ MainAssistant.prototype.unescapeEntities = function(str) {
|
||||
return str;
|
||||
}
|
||||
|
||||
MainAssistant.prototype.renderTwimoji = function(html) {
|
||||
if (!html) return html;
|
||||
var parts = html.split(/(<[^>]+>)/g);
|
||||
for (var i = 0; i < parts.length; i++) {
|
||||
if (parts[i].indexOf("<") !== 0) {
|
||||
parts[i] = this.replaceEmojis(parts[i]);
|
||||
}
|
||||
}
|
||||
return parts.join("");
|
||||
}
|
||||
|
||||
MainAssistant.prototype.replaceEmojis = function(text) {
|
||||
if (!text) return text;
|
||||
return text.replace(this.getEmojiRegex(), function(match) {
|
||||
return this.buildTwimojiSpan(match);
|
||||
}.bind(this));
|
||||
}
|
||||
|
||||
MainAssistant.prototype.buildTwimojiSpan = function(emojiText) {
|
||||
var codepoints = [];
|
||||
for (var i = 0; i < emojiText.length; i++) {
|
||||
var code = emojiText.charCodeAt(i);
|
||||
if (code >= 0xD800 && code <= 0xDBFF && i + 1 < emojiText.length) {
|
||||
var high = code;
|
||||
var low = emojiText.charCodeAt(i + 1);
|
||||
if (low >= 0xDC00 && low <= 0xDFFF) {
|
||||
code = ((high - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000;
|
||||
i++;
|
||||
}
|
||||
}
|
||||
codepoints.push(code.toString(16));
|
||||
}
|
||||
var className = "emoji" + codepoints.join("");
|
||||
return "<span name=\"emoji\" class=\"emoji-outer emoji-sizer\"><span class=\"emoji-inner " + className + "\">" + emojiText + "</span></span>";
|
||||
}
|
||||
|
||||
MainAssistant.prototype.getEmojiRegex = function() {
|
||||
if (this.emojiRegex) {
|
||||
return this.emojiRegex;
|
||||
}
|
||||
var basicEmoji = "[\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9-\\u21AA\\u231A-\\u231B\\u2328\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA-\\u25FE\\u2600-\\u27BF\\u2934-\\u2935\\u2B05-\\u2B55\\u3030\\u303D\\u3297\\u3299]";
|
||||
var surrogateEmoji = "[\\uD83C-\\uDBFF][\\uDC00-\\uDFFF]";
|
||||
var emojiChar = "(?:" + basicEmoji + "|" + surrogateEmoji + ")";
|
||||
var variation = "[\\uFE0E\\uFE0F]?";
|
||||
var modifier = "(?:\\uD83C[\\uDFFB-\\uDFFF])?";
|
||||
var zwj = "(?:\\u200D" + emojiChar + variation + modifier + ")*";
|
||||
var keycap = "[#*0-9]\\uFE0F?\\u20E3";
|
||||
var flag = "\\uD83C[\\uDDE6-\\uDDFF]\\uD83C[\\uDDE6-\\uDDFF]";
|
||||
this.emojiRegex = new RegExp(flag + "|" + keycap + "|" + emojiChar + variation + modifier + zwj, "g");
|
||||
return this.emojiRegex;
|
||||
}
|
||||
|
||||
MainAssistant.prototype.replaceImageLinks = function(str) {
|
||||
if (typeof btoa === 'undefined')
|
||||
return str;
|
||||
@@ -1088,4 +1143,4 @@ MainAssistant.prototype.cleanup = function(event) {
|
||||
a result of being popped off the scene stack */
|
||||
var appController = Mojo.Controller.getAppController();
|
||||
appController.closeAllStages();
|
||||
};
|
||||
};
|
||||
+9
-9
@@ -1,14 +1,14 @@
|
||||
{
|
||||
"id": "com.palm.app.jonandnic.simplechat",
|
||||
"version": "1.9.0",
|
||||
"vendor": "Jon W",
|
||||
"id": "com.palm.app.notalexnoyle.almostsimplechat",
|
||||
"version": "1.9.1",
|
||||
"vendor": "NotAlexNoyle",
|
||||
"type": "web",
|
||||
"main": "index.html",
|
||||
"noWindow": true,
|
||||
"title": "SimpleChat",
|
||||
"appMuseumTitle": "webOS SimpleChat",
|
||||
"title": "AlmostSimpleChat",
|
||||
"appMuseumTitle": "Almost webOS SimpleChat",
|
||||
"icon": "icon.png",
|
||||
"pageTitle": "webOS SimpleChat",
|
||||
"pageTitle": "Almost webOS SimpleChat",
|
||||
"startupMessage": "<img src='icon.png' style='float:left; margin-right:8px'>Welcome to SimpleChat! We're so excited you're here chatting with us more than 10 years after this platform was supposed to have died!<br>You can also join this chat from Discord: <a href='http://www.webosarchive.org/discord'>webosarchive.org/discord</a> or view the log on the web: <a href='http://chat.webosarchive.org'>chat.webosarchive.org</a>",
|
||||
"serviceURL": "http://chat.webosarchive.org/",
|
||||
"splashicon": "icon-256x256.png",
|
||||
@@ -16,10 +16,10 @@
|
||||
"universalSearch" : {
|
||||
"action": {
|
||||
"displayName": "New Share",
|
||||
"url": "com.palm.app.jonandnic.simplechat",
|
||||
"url": "com.palm.app.notalexnoyle.almostsimplechat",
|
||||
"launchParam": {
|
||||
"newshare": "#{searchTerms}"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user