diff --git a/apps/messageicons/icons.img b/apps/messageicons/icons.img new file mode 100644 index 000000000..104168357 Binary files /dev/null and b/apps/messageicons/icons.img differ diff --git a/apps/messageicons/icons/bibel.png b/apps/messageicons/icons/bibel.png new file mode 100644 index 000000000..053fcf178 Binary files /dev/null and b/apps/messageicons/icons/bibel.png differ diff --git a/apps/messageicons/icons/bring.png b/apps/messageicons/icons/bring.png new file mode 100644 index 000000000..673d1b7be Binary files /dev/null and b/apps/messageicons/icons/bring.png differ diff --git a/apps/messageicons/icons/default.png b/apps/messageicons/icons/default.png new file mode 100644 index 000000000..1f85079df Binary files /dev/null and b/apps/messageicons/icons/default.png differ diff --git a/apps/messageicons/icons/etar.png b/apps/messageicons/icons/etar.png new file mode 100644 index 000000000..24f0cc587 Binary files /dev/null and b/apps/messageicons/icons/etar.png differ diff --git a/apps/messageicons/icons/generate.js b/apps/messageicons/icons/generate.js new file mode 100755 index 000000000..e857032af --- /dev/null +++ b/apps/messageicons/icons/generate.js @@ -0,0 +1,143 @@ +#!/usr/bin/node + +// Creates lib.js from icons +// npm install png-js + +// default icon must come first in icon_names + +var imageconverter = require("../../../webtools/imageconverter.js"); +var icons = JSON.parse(require("fs").readFileSync(__dirname+"/icon_names.json")); +const imgOptions = { + mode : "1bit", + inverted : true, + transparent : true, + output: "raw" +}; +var PNG = require('png-js'); +var IMAGE_BYTES = 76; + +var iconTests = []; +var iconImages = []; // array of converted icons +var iconIndices = {}; // maps filename -> index in iconImages + +var promises = []; + +icons.forEach(icon => { + var index = iconIndices[icon.icon]; + if (index===undefined) { // need a new icon + index = iconImages.length; + iconIndices[icon.icon] = index; + iconImages.push(""); // placeholder + // create image + console.log("Loading "+icon.icon); + var png = new PNG(require("fs").readFileSync(__dirname+"/"+icon.icon)); + if (png.width!=24 || png.height!=24) { + console.warn(icon.icon+" should be 24x24px"); + } + + promises.push(new Promise(r => { + png.decode(function (pixels) { + var rgba = new Uint8Array(pixels); + var isTransparent = false; + for (var i=0;i { + // Yay, more JS. Why is it so hard to get the bytes??? + iconData.set(Array.prototype.slice.call(Buffer.from(img,"binary")), idx*IMAGE_BYTES) + }); + + console.log("Saving images"); + require("fs").writeFileSync(__dirname+"/../icons.img", Buffer.from(iconData,"binary")); + + console.log("Saving library"); + require("fs").writeFileSync(__dirname+"/../lib.js", `exports.getImage = function(msg) { + if (msg.img) return atob(msg.img); + let s = (("string"=== typeof msg) ? msg : (msg.src || "")).toLowerCase(); + if (msg.id=="music") s="music"; + let match = ${JSON.stringify(","+icons.map(icon=>icon.app+"|"+icon.index).join(",")+",")}.match(new RegExp(\`,\${s}\\\\|(\\\\d+)\`)) + return require("Storage").read("messageicons.img", (match===null)?0:match[1]*${IMAGE_BYTES}, ${IMAGE_BYTES}); +}; + +exports.getColor = function(msg,options) { + options = options||{}; + var st = options.settings || require('Storage').readJSON("messages.settings.json", 1) || {}; + if (options.default===undefined) options.default=g.theme.fg; + if (st.iconColorMode == 'mono') return options.default; + const s = (("string"=== typeof msg) ? msg : (msg.src || "")).toLowerCase(); + return { + // generic colors, using B2-safe colors + // DO NOT USE BLACK OR WHITE HERE, just leave the declaration out and then the theme's fg color will be used + "airbnb": "#ff385c", // https://news.airbnb.com/media-assets/category/brand/ + "mail": "#ff0", + "music": "#f0f", + "phone": "#0f0", + "sms message": "#0ff", + // brands, according to https://www.schemecolor.com/?s (picking one for multicolored logos) + // all dithered on B2, but we only use the color for the icons. (Could maybe pick the closest 3-bit color for B2?) + "bibel": "#54342c", + "bring": "#455a64", + "discord": "#5865f2", // https://discord.com/branding + "etar": "#36a18b", + "facebook": "#1877f2", // https://www.facebook.com/brand/resources/facebookapp/logo + "gmail": "#ea4335", + "gmx": "#1c449b", + "google": "#4285F4", + "google home": "#fbbc05", +// "home assistant": "#41bdf5", // ha-blue is #41bdf5, but that's the background + "instagram": "#ff0069", // https://about.instagram.com/brand/gradient + "lieferando": "#ff8000", + "linkedin": "#0a66c2", // https://brand.linkedin.com/ + "messenger": "#0078ff", + "mastodon": "#563acc", // https://www.joinmastodon.org/branding + "mattermost": "#00f", + "n26": "#36a18b", + "nextbike": "#00f", + "newpipe": "#f00", + "nina": "#e57004", + "opentasks": "#409f8f", + "outlook mail": "#0078d4", // https://developer.microsoft.com/en-us/fluentui#/styles/web/colors/products + "paypal": "#003087", + "pocket": "#ef4154f", // https://blog.getpocket.com/press/ + "post & dhl": "#f2c101", + "reddit": "#ff4500", // https://www.redditinc.com/brand + "signal": "#3a76f0", // https://github.com/signalapp/Signal-Desktop/blob/main/images/signal-logo.svg + "skype": "#0078d4", // https://developer.microsoft.com/en-us/fluentui#/styles/web/colors/products + "slack": "#e51670", + "snapchat": "#ff0", + "steam": "#171a21", + "teams": "#6264a7", // https://developer.microsoft.com/en-us/fluentui#/styles/web/colors/products + "telegram": "#0088cc", + "telegram foss": "#0088cc", + "to do": "#3999e5", + "twitch": "#9146ff", // https://brand.twitch.tv/ + "twitter": "#1d9bf0", // https://about.twitter.com/en/who-we-are/brand-toolkit + "vlc": "#ff8800", + "whatsapp": "#4fce5d", + "wordfeud": "#e7d3c7", + "youtube": "#f00", // https://www.youtube.com/howyoutubeworks/resources/brand-resources/#logos-icons-and-colors + }[s]||options.default; +}; + `); +}); diff --git a/apps/messageicons/icons/gmx.png b/apps/messageicons/icons/gmx.png new file mode 100644 index 000000000..185c90aa3 Binary files /dev/null and b/apps/messageicons/icons/gmx.png differ diff --git a/apps/messageicons/icons/home assistant.png b/apps/messageicons/icons/home assistant.png new file mode 100644 index 000000000..d08932ae8 Binary files /dev/null and b/apps/messageicons/icons/home assistant.png differ diff --git a/apps/messageicons/icons/icon_names.json b/apps/messageicons/icons/icon_names.json new file mode 100644 index 000000000..0085731cc --- /dev/null +++ b/apps/messageicons/icons/icon_names.json @@ -0,0 +1,111 @@ +[ + { "app":"default", "icon":"default.png" }, + { "app":"airbnb", "icon":"airbnb.png" }, + { "app":"alarm", "icon":"alarm.png" }, + { "app":"alarmclockreceiver", "icon":"alarm.png" }, + { "app":"amazon shopping", "icon":"amazon.png" }, + { "app":"bibel", "icon":"bibel.png" }, + { "app":"bitwarden", "icon":"security.png" }, + { "app":"1password", "icon":"security.png" }, + { "app":"lastpass", "icon":"security.png" }, + { "app":"dashlane", "icon":"security.png" }, + { "app":"bring", "icon":"bring.png" }, + { "app":"calendar", "icon":"etar.png" }, + { "app":"etar", "icon":"etar.png" }, + { "app":"chat", "icon":"google chat.png" }, + { "app":"chrome", "icon":"chrome.png" }, + { "app":"corona-warn", "icon":"coronavirus.png" }, + { "app":"bmo", "icon":"bank.png" }, + { "app":"desjardins", "icon":"bank.png" }, + { "app":"rbc mobile", "icon":"bank.png" }, + { "app":"nbc", "icon":"bank.png" }, + { "app":"rabobank", "icon":"bank.png" }, + { "app":"scotiabank", "icon":"bank.png" }, + { "app":"td (canada)", "icon":"bank.png" }, + { "app":"discord", "icon":"discord.png" }, + { "app":"drive", "icon":"google drive.png" }, + { "app":"element", "icon":"matrix element.png" }, + { "app":"facebook", "icon":"facebook.png" }, + { "app":"messenger", "icon":"facebook messenger.png" }, + { "app":"firefox", "icon":"firefox.png" }, + { "app":"firefox beta", "icon":"firefox.png" }, + { "app":"firefox nightly", "icon":"firefox.png" }, + { "app":"f-droid", "icon":"security.png" }, + { "app":"neo store", "icon":"security.png" }, + { "app":"aurora droid", "icon":"security.png" }, + { "app":"github", "icon":"github.png" }, + { "app":"gitlab", "icon":"gitlab.png" }, + { "app":"gmx", "icon":"gmx.png" }, + { "app":"google", "icon":"google.png" }, + { "app":"google home", "icon":"google home.png" }, + { "app":"google play store", "icon":"google play store.png" }, + { "app":"home assistant", "icon":"home assistant.png" }, + { "app":"instagram", "icon":"instagram.png" }, + { "app":"kalender", "icon":"kalender.png" }, + { "app":"keep notes", "icon":"google keep.png" }, + { "app":"lieferando", "icon":"lieferando.png" }, + { "app":"linkedin", "icon":"linkedin.png" }, + { "app":"maps", "icon":"map.png" }, + { "app":"organic maps", "icon":"map.png" }, + { "app":"osmand", "icon":"map.png" }, + { "app":"mastodon", "icon":"mastodon.png" }, + { "app":"fedilab", "icon":"mastodon.png" }, + { "app":"tooot", "icon":"mastodon.png" }, + { "app":"tusky", "icon":"mastodon.png" }, + { "app":"mattermost", "icon":"mattermost.png" }, + { "app":"n26", "icon":"n26.png" }, + { "app":"netflix", "icon":"netflix.png" }, + { "app":"news", "icon":"news.png" }, + { "app":"cbc news", "icon":"news.png" }, + { "app":"rc info", "icon":"news.png" }, + { "app":"reuters", "icon":"news.png" }, + { "app":"ap news", "icon":"news.png" }, + { "app":"la presse", "icon":"news.png" }, + { "app":"nbc news", "icon":"news.png" }, + { "app":"nextbike", "icon":"nextbike.png" }, + { "app":"nina", "icon":"nina.png" }, + { "app":"outlook mail", "icon":"outlook.png" }, + { "app":"paypal", "icon":"paypal.png" }, + { "app":"phone", "icon":"phone.png" }, + { "app":"plex", "icon":"plex.png" }, + { "app":"pocket", "icon":"pocket.png" }, + { "app":"post & dhl", "icon":"delivery.png" }, + { "app":"proton mail", "icon":"protonmail.png" }, + { "app":"reddit", "icon":"reddit.png" }, + { "app":"sync pro", "icon":"reddit.png" }, + { "app":"sync dev", "icon":"reddit.png" }, + { "app":"boost", "icon":"reddit.png" }, + { "app":"infinity", "icon":"reddit.png" }, + { "app":"slide", "icon":"reddit.png" }, + { "app":"signal", "icon":"signal.png" }, + { "app":"skype", "icon":"skype.png" }, + { "app":"slack", "icon":"slack.png" }, + { "app":"snapchat", "icon":"snapchat.png" }, + { "app":"starbucks", "icon":"cafe.png" }, + { "app":"steam", "icon":"steam.png" }, + { "app":"teams", "icon":"teams.png" }, + { "app":"telegram", "icon":"telegram.png" }, + { "app":"telegram foss", "icon":"telegram.png" }, + { "app":"threema", "icon":"threema.png" }, + { "app":"tiktok", "icon":"tiktok.png" }, + { "app":"to do", "icon":"task.png" }, + { "app":"opentasks", "icon":"task.png" }, + { "app":"tasks", "icon":"task.png" }, + { "app":"transit", "icon":"transit.png" }, + { "app":"twitch", "icon":"twitch.png" }, + { "app":"twitter", "icon":"twitter.png" }, + { "app":"uber", "icon":"taxi.png" }, + { "app":"lyft", "icon":"taxi.png" }, + { "app":"vlc", "icon":"vlc.png" }, + { "app":"warnapp", "icon":"warnapp.png" }, + { "app":"whatsapp", "icon":"whatsapp.png" }, + { "app":"wordfeud", "icon":"wordfeud.png" }, + { "app":"youtube", "icon":"youtube.png" }, + { "app":"newpipe", "icon":"youtube.png" }, + { "app":"zoom", "icon":"videoconf.png" }, + { "app":"meet", "icon":"videoconf.png" }, + { "app":"music", "icon":"music.png" }, + { "app":"sms message", "icon":"default.png" }, + { "app":"mail", "icon":"default.png" }, + { "app":"gmail", "icon":"default.png" } +] diff --git a/apps/messageicons/icons/kalender.png b/apps/messageicons/icons/kalender.png new file mode 100644 index 000000000..dd807dd9e Binary files /dev/null and b/apps/messageicons/icons/kalender.png differ diff --git a/apps/messageicons/icons/music.png b/apps/messageicons/icons/music.png new file mode 100644 index 000000000..62f7acfee Binary files /dev/null and b/apps/messageicons/icons/music.png differ diff --git a/apps/messageicons/icons/n26.png b/apps/messageicons/icons/n26.png new file mode 100644 index 000000000..aa441ab8b Binary files /dev/null and b/apps/messageicons/icons/n26.png differ diff --git a/apps/messageicons/icons/nextbike.png b/apps/messageicons/icons/nextbike.png new file mode 100644 index 000000000..467bed8ac Binary files /dev/null and b/apps/messageicons/icons/nextbike.png differ diff --git a/apps/messageicons/icons/nina.png b/apps/messageicons/icons/nina.png new file mode 100644 index 000000000..2669b6401 Binary files /dev/null and b/apps/messageicons/icons/nina.png differ diff --git a/apps/messageicons/icons/warnapp.png b/apps/messageicons/icons/warnapp.png new file mode 100644 index 000000000..988485053 Binary files /dev/null and b/apps/messageicons/icons/warnapp.png differ diff --git a/apps/messageicons/icons/wordfeud.png b/apps/messageicons/icons/wordfeud.png new file mode 100644 index 000000000..83963d4d4 Binary files /dev/null and b/apps/messageicons/icons/wordfeud.png differ diff --git a/apps/messageicons/lib.js b/apps/messageicons/lib.js index 5a24ac098..c5be21bb0 100644 --- a/apps/messageicons/lib.js +++ b/apps/messageicons/lib.js @@ -1,80 +1,9 @@ exports.getImage = function(msg) { - /* - * icons should be 24x24px or less with 1bpp colors and 'Transparency to Color' - * http://www.espruino.com/Image+Converter - */ if (msg.img) return atob(msg.img); - const s = (("string"=== typeof msg) ? msg : (msg.src || "")).toLowerCase(); - if (s=="airbnb") return atob("GBgBAAAAADwAAH4AAMMAAIMAAYGAAQGAAwDAAwDABjxgBn5gDMMwDMMwGMMYGMMYMGYMMGYMIDwEIBgEIDwEMH4MHee4D4HwAAAA"); // icons/airbnb.png - if (s=="alarm" || s =="alarmclockreceiver") return atob("GBgBAAAAAAAAAgBABwDgHn54Of+cE8PIBwDgDhhwDBgwHBg4GBgYGBgYGBgYGA4YHAc4DAEwDgBwBwDgA8PAAf+AAH4AAAAAAAAA"); // icons/alarm.png - if (s=="amazon shopping") return atob("GBgBAAAAAP8AAf+AA//AA+fAA8PAAIPAAD/AAP/AA//AA+PAB8PAB8fAB8fgB//gA//gA/3AAPCecAAeOAAeDwH0B//kAf+AAAAA"); // icons/amazon.png - if (s=="bibel") return atob("GBgBAAAAA//wD//4D//4H//4H/f4H/f4H+P4H4D4H4D4H/f4H/f4H/f4H/f4H/f4H//4H//4H//4GAAAEAAAEAAACAAAB//4AAAA"); - if (s=="bitwarden" || s=="1password" || s=="lastpass" || s=="dashlane") return atob("GBgBAAAAABgAAP8AA//AD4/wHg/4GA/4GA/4GA/4GA/4GA/4GA/4H/AYH/AYH/A4D/AwD/BwB/BgB/DgA/HAAfeAAP8AADwAAAAA"); // icons/security.png - if (s=="bring") return atob("GBgBAAAAAAAAAAAAAAAAAHwAAFoAAf+AA/+AA/+AA/+AA/eAA+eAA0+AAx+AA7+AA/+AA//AA/+AAf8AAAIAAAAAAAAAAAAAAAAA"); - if (s=="calendar" || s=="etar") return atob("GBiBAAAAAAAAAAAAAA//8B//+BgAGBgAGBgAGB//+B//+B//+B9m2B//+B//+Btm2B//+B//+Btm+B//+B//+A//8AAAAAAAAAAAAA=="); - if (s=="chat") return atob("GBgBAAAAAf/8A//+A//+A//+OAB+e/8+e/++e/++e/++e/++e/++e/++ef+8fAAAf//Af//Af//Af//Af/+AcAAAYAAAQAAAAAAA"); // icons/google chat.png - if (s=="chrome") return atob("GBgBAAAAAAAAAP8AA//AB+fgDwDwHgB4HAA4Pj/8OmYcO8McMYEMMYEMOMMcOGccOD4cHAw4Hgx4DxjwB//gA//AAP8AAAAAAAAA"); // icons/chrome.png - if (s=="corona-warn") return atob("GBgBAAAAAAAAABgAABgABhhgDn5wD//wA8PAA+fAB2bgBgBgPpl8Ppl8BgBgB2bgA+fAA8PAD//wDn5wBhhgABgAABgAAAAAAAAA"); // icons/coronavirus.png - if (s=="bmo" || s=="desjardins" || s=="rbc mobile" || s=="nbc" || s=="rabobank" || s=="scotiabank" || s=="td (canada)") return atob("GBgBAAAAADgAAP4AAe8AB4PAHgDwP//4P//4AAAAAAAADjjgDjjgDjjgDjjgDjjgDjjgDjjgAAAAAAAAP//4P//4AAAAAAAAAAAA"); // icons/bank.png - if (s=="discord") return atob("GBgBAAAAAAAAAAAAAAAAA4HAD//wH//4H//4P//8P//8P//8fn5+fDw+fDw+fn5+f//+f//+ff++PgB8DgBwAAAAAAAAAAAAAAAA"); // icons/discord.png - if (s=="drive") return atob("GBgBAAAAAAAAAH8AAH8AAT+AA7/AA9/AB8/gB+/gD+fwD+fwH8P4P8P8P4H8fwAAf3/+Pn/8Pv/8HP/4Df/wC//wAAAAAAAAAAAA"); // icons/google drive.png - if (s=="element") return atob("GBgBAAAAAHwAAH4AAH8AAAeAAePAB+HAD+DgHgDgPADuOADucAAOcAAOdwAcdwA8BwB4BwfwA4fgA8eAAeAAAP4AAH4AAD4AAAAA"); // icons/matrix element.png - if (s=="facebook") return atob("GBgBAAAAAAAAAH4AAf+AB//gD//wD/DwH+D4H+P4P+f8P+f8P+f8PwD8PwD8PwD8H+f4H+f4D+fwD+fwB+fgAeeAAOcAAAAAAAAA"); // icons/facebook.png - if (s=="messenger") return atob("GBgBAAAAAAAAAP8AA//AB//gD//wH//4H//4P//8P9+8P458PwB8PgD8PnH8Pfv8H//4H//4D//wB//gB//AB/8AAwAAAAAAAAAA"); // icons/facebook messenger.png - if (s=="firefox" || s=="firefox beta" || s=="firefox nightly") return atob("GBgBAAAAAAAAAAMAAAcAAAeABA/ADY/gH4P4H4H4H8H8P/H8P+D8PwD8PwD8PwD8H4H4H8P4H//4D//wB//gA//AAP8AAAAAAAAA"); // icons/firefox.png - if (s=="f-droid" || s=="neo store" || s=="aurora droid") return atob("GBgBAAAAQAACYAAGP//8H//4H//4HH44HH44H//4AAAAH//4H8P4H734H374HsN4Hvl4Hv14Hvl4HsN4H374H734H8P4D//wAAAA"); // icons/security.png - if (s=="github") return atob("GBgBAAAAAAAAAH4AAf+AB//gD//wDv9wHgB4HgB4PAA8PAA8PAA8PAA8PAA8PgB8HwD4G8P4DcPwDgPwB4PgAcOAAAAAAAAAAAAA"); // icons/github.png - if (s=="gitlab") return atob("GBgBAAAABAAgDAAwDAAwHgB4HgB4PgB8PwD8P//8f//+f//+f//+f//+f//+f//+P//8H//4D//wA//AAf+AAP8AADwAABgAAAAA"); // icons/gitlab.png - if (s=="gmx") return atob("GBgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEJmfmd8Zuc85v847/88Z9s8fttmHIHiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"); - if (s=="google") return atob("GBgBAAAAAP8AA//AB//gD//gH+fAP4CAPwAAPgAAfAAAfA/+fA/+fA/+fA/+fAA+PgA+PwB8P4D8H+f4D//4B//wA//AAP8AAAAA"); // icons/google.png - if (s=="google home") return atob("GBgBAAAAABgAADwAAH4AAf4AA/zAB/vgD/fwH+f4P4H8fwD+fgB+fAA+eAA+cAA+bAA+HAA+PAA+ff++ff++ff++ff++Pf+8AAAA"); // icons/google home.png - if (s=="google play store") return atob("GBgBAAAAAAAAAH4AAP8AAMMAAMMAP//8P//8MAAMMAAMMGAMMHgMMH4MMH8MMH4MMHgMMGAMMAAMMAAMP//8H//4AAAAAAAAAAAA"); // icons/google play store.png - if (s=="home assistant") return atob("FhaBAAAAAADAAAeAAD8AAf4AD/3AfP8D7fwft/D/P8ec572zbzbNsOEhw+AfD8D8P4fw/z/D/P8P8/w/z/AAAAA="); - if (s=="instagram") return atob("GBgBAAAAD//wH//4OAAccAAOYABmYDxmYP8GYeeGYYGGY4HGYwDGYwDGY4HGYYGGYeeGYP8GYDwGYAAGcAAOOAAcH//4D//wAAAA"); // icons/instagram.png - if (s=="kalender") return atob("GBgBBgBgBQCgff++RQCiRgBiQAACf//+QAACQAACR//iRJkiRIEiR//iRNsiRIEiRJkiR//iRIEiRIEiR//iQAACQAACf//+AAAA"); - if (s=="keep notes") return atob("GBgBAAAAAAAAH//4P//8P8P8Pzz8P378Pv98Pv98Pv98Pv98P378Pzz8P738P4H8P738P738P4GMP8OYP/+wP//gH//AAAAAAAAA"); // icons/google keep.png - if (s=="lieferando") return atob("GBgBAAAAADwAAH4AAP/gAf/wA//wB//wD//wH//4H/98Pt58ft5+Ptx8DtxwDtxwDhxwDhhwDhhwDzhwD75wD75wD75wB77gAAAA"); // icons/lieferando.png - if (s=="linkedin") return atob("GBgBAAAAf//+f//+f//+ef/+cf/+cf/+f//+f//+ccw+ccAeccAecccOcceOcceOcceOcceOcceOcceOec+ef//+f//+f//+AAAA"); // icons/linkedin.png - if (s=="maps" || s=="organic maps" || s=="osmand") return atob("GBgBAAAAAAAAAAAAAeAYD/z4H//4GMeYGMMYGMMYGMMYGMMYGMMYGMMYGMMYGMMYGMMYGMMYGeMYH//4Hz/wGAeAAAAAAAAAAAAA"); // icons/map.png - if (s=="mastodon" || s=="fedilab" || s=="tooot" || s=="tusky") return atob("GBgBAAAAB//gD//4H//4P//8PBg8PAA8fOMeeOeeeOeeOOeeOOecOP+cOP+cP//8P//4P//4P//gHwAAH4AAD+cAB/8AAf4AAAAA"); // icons/mastodon.png - if (s=="mattermost") return atob("GBgBAAAAAPAAA+EAB4GADgOQHAeYOA+cOB+MeB+OcD+GcD+GcD+GeD8OeB4OeAAOfAAePgA8P4B8H/f4D//wB//gA//AAP8AAAAA"); // icons/mattermost.png - if (s=="n26") return atob("GBgBAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAOIAAOIAAPIAANoAANoAAM4AAMYAAMYAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAAAA"); - if (s=="netflix") return atob("GBgBAAAAA8PAA+PAAePAAePAAfPAAvPAA/PAAvvAAn/AA/nAA3/AA/7AA5/AA/5AA99AA8/AA89AA8+AA8eAA8eAA8fAA8PAAAAA"); // icons/netflix.png - if (s=="news" || s=="cbc news" || s=="rc info" || s=="reuters" || s=="ap news" || s=="la presse" || s=="nbc news") return atob("GBgBAAAAAAAAAAAALaW0P//8P//8P//8P//8MAAMMAAMMAAMP//8P//8MBwcMBwcMB/8MB/8MBwcMBwcP//8P//8AAAAAAAAAAAA"); // icons/news.png - if (s=="nextbike") return atob("GBgBAAAAAAAAAAAAAAAAAAAAAACAfgDAPwDAP4HAH4N4H8f8D82GMd8CMDsDMGMDMGGGGMHOD4D8AAAAAAAAAAAAAAAAAAAAAAAA"); - if (s=="nina") return atob("GBgBAAAABAAQCAAICAAIEAAEEgAkJAgSJBwSKRxKSj4pUn8lVP+VVP+VUgAlSgApKQBKJAASJAASEgAkEAAECAAICAAIBAAQAAAA"); - if (s=="outlook mail") return atob("GBgBAAAAAAAAAP/8AP/8AP/8AJjMf/jMf//8f//8cHjMd3jMZz/+Zz/+d3jecHj+f//mf/eGf/PGAwDmAwA+A//+Af/+AAAAAAAA"); // icons/outlook.png - if (s=="paypal") return atob("GBgBAAAAA/+AA//gA//wB//wB//wB//wB//wB//wB//gD//gD//ID/+ID/wwD4BwD5/gD74AH7gAHzAAHzAAHzAAAHAAAHAAAAAA"); // icons/paypal.png - if (s=="phone") return atob("GBgBAAAAAAAAH4AAP8AAP8AAP8AAH8AAH8AAH8AAH4AADwAADwAABwAAA4AAA8HwAeP8AP/8AH/8AD/8AA/8AAP8AAB4AAAAAAAA"); // icons/phone.png - if (s=="plex") return atob("GBgBAAAAB/gAB/gAA/wAAf4AAf4AAP8AAH+AAH+AAD/AAB/gAB/gAB/gAB/gAD/AAH+AAH+AAP8AAf4AAf4AA/wAB/gAB/gAAAAA"); // icons/plex.png - if (s=="pocket") return atob("GBgBAAAAAAAAP//8f//+f//+f//+f//+f//+fP8+eH4efDw+fhh+fwD+f4H+P8P8P+f8H//4H//4D//wB//gAf+AAH4AAAAAAAAA"); // icons/pocket.png - if (s=="post & dhl") return atob("GBgBAAAAAAAAAAAAAAAAP/+Af/+AYAGAYAGAYAHwYAH4YAGMYAGGYAH+YAH+bwH+f//+ef+eGYGYH4H4DwDwAAAAAAAAAAAAAAAA"); // icons/delivery.png - if (s=="proton mail") return atob("GBgBAAAAAAAAAAAAQAACYAAGcAAOeAAePABeXgDebwHed4Pee/fefe/efh/ef//ef//ef//ef//ef//ef//eP//cAAAAAAAAAAAA"); // icons/protonmail.png - if (s=="reddit" || s=="sync pro" || s=="sync dev" || s=="boost" || s=="infinity" || s=="slide") return atob("GBgBAAAAAAAAAAYwAAX4AAh4AAgwAAgAAAgAAH4AAf+AN//sf//+fn5+PDw8HDw4Hn54H//4H//4DzzwB4HgAf+AAH4AAAAAAAAA"); // icons/reddit.png - if (s=="signal") return atob("GBgBAAAAAL0AAYGABH4gCf+QE//IB//gL//0b//2H//4X//6X//6X//6X//6H//4b//2L//0D//gL//ID/+QYH4gVYGAcL0AAAAA"); // icons/signal.png - if (s=="skype") return atob("GBgBAAAAB8AAH/8AP//AP//gf8fwfwD4fgB4fjx8fj/8Pg/8PwH8P4B8P/h8Pnx+Pjx+Hhh+HwD+D8P+B//8A//8AP/4AAPgAAAA"); // icons/skype.png - if (s=="slack") return atob("GBgBAAAAAOcAAeeAAeeAAeeAAGeAAAeAP+ecf+eef+e+f+e+AAAAAAAAfef+fef+eef+Oef8AeAAAeYAAeeAAeeAAeeAAOcAAAAA"); // icons/slack.png - if (s=="snapchat") return atob("GBgBAAAAAAAAAAAAAH4AAf+AAYGAAwDAAwDAAwDADwDwDwDwDgBwBwDgBwDgDgBwHAA4OAAcHAA4D4HwB//gAH4AAAAAAAAAAAAA"); // icons/snapchat.png - if (s=="starbucks") return atob("GBgBAAAAAAAAAAAAD//4D//8DADMDADMDADMDAD8DAD4DADADADADADADADADgHAB/+AA/8AAAAAAAAAP//wP//wAAAAAAAAAAAA"); // icons/cafe.png - if (s=="steam") return atob("GBgBAAAAAAAAAf+AA//AD//wD//wH/g4P/OcP/RcP+RcP+ReH8OeB4A+AAH+AMP8IC/8OS/8HN/4Dj/wD//wA//AAf+AAAAAAAAA"); // icons/steam.png - if (s=="teams") return atob("GBgBAAAAAAgAAD4AADcYAGM8AGNmP/dmP/48MDAYMD/+PP/+PPBmPPBmPPBmPPBmP/BmP/BmH+B+AYD4AMDAAOOAAH8AABwAAAAA"); // icons/teams.png - if (s=="telegram" || s=="telegram foss") return atob("GBgBAAAAAAAAAAAAAAAeAAB+AAP+AA/+AD/+Af9+B/z+H/n8f+P8f8f8Dw/8AB/8AB/8AB/4AAf4AAP4AAD4AABwAAAAAAAAAAAA"); // icons/telegram.png - if (s=="threema") return atob("GBgBAAAAAP8AA//AB//gD//wH8P4H9v4H734P5n8P4H8P4H8H4H4H4H4D//wD//gD//AH/8AHDwAAAAAAAAABhhgDzzwBhhgAAAA"); // icons/threema.png - if (s=="tiktok") return atob("GBgBAAAAAAAAAAcAAAcAAAeAAAfAAAfwAAf4AAf4AMd4A8cAB8cAD8cADwcAHgcAHgcAHg8ADw8AD/4AB/4AA/wAAfAAAAAAAAAA"); // icons/tiktok.png - if (s=="to do" || s=="opentasks" || s=="tasks") return atob("GBgBAAAAAHwAAf+AA//ID4GcHwA8HAB4PADwOAHgcAPGcAeOcY8Oc94OcfwOcPgOOHAcOCAcHAA4DgB4D4HwB//gAf+AAH4AAAAA"); // icons/task.png - if (s=="transit") return atob("GBgBAAAAD//wP//8P//8f//+f/j+ffA+eOA+eOMef+cefef+eOe+fecef+e+eOf+eOcefAcefA++fx/+f//+P//8P//8D//wAAAA"); // icons/transit.png - if (s=="twitch") return atob("GBgBAAAAA//8B//8DgAMHgAMPhjMPhjMPhjMPhjMPhjMPgAMPgAMPgAYPgAwP+fgP+/AP/+AP/8AP/4AAeAAAcAAAYAAAQAAAAAA"); // icons/twitch.png - if (s=="twitter") return atob("GBgBAAAAAAAAAAAAAAPAIAf8MA/4PA/8Pg/4H//4H//4P//4P//wH//wD//wD//gD//AA//AAf+AB/8AP/wAD/AAAAAAAAAAAAAA"); // icons/twitter.png - if (s=="uber" || s=="lyft") return atob("GBgBAAAAAAAAAAAAAH4AAH4AB//gB//gDgBwDAAwDAAwH//4H//4GAAYG4HYG4HYG4HYGAAYH//4H//4HAA4HAA4AAAAAAAAAAAA"); // icons/taxi.png - if (s=="vlc") return atob("GBgBAAAAABgAABgAADwAADwAAAAAAAAAAAAAAAAAAIEAAP8AAP8AAf+AAP8AAAAADAAwDAAwHAA4HwD4H//4P//8P//8P//8AAAA"); // icons/vlc.png - if (s=="warnapp") return atob("GBgBAAAAAAAAAAAAAH4AAP8AA//AA//AD//gP//gf//4f//+/+P+/8H//8n//4n/fxh/fzg+Pj88Dn44AA4AAAwAAAwAAAgAAAAA"); - if (s=="whatsapp") return atob("GBgBAAAAAP8AA//AB4HwDgB4HAA4OAAcMYAMc8AOc8AGY8AGYcAGYeAGYPOGcH/OcD/OMA+MOAAcMAA4MgBwf8Pgf//AcP8AAAAA"); // icons/whatsapp.png - if (s=="wordfeud") return atob("GBgCWqqqqqqlf//////9v//////+v/////++v/////++v8///Lu+v8///L++v8///P/+v8v//P/+v9v//P/+v+fx/P/+v+Pk+P/+v/PN+f/+v/POuv/+v/Ofdv/+v/NvM//+v/I/Y//+v/k/k//+v/i/w//+v/7/6//+v//////+v//////+f//////9Wqqqqqql"); - if (s=="youtube" || s=="newpipe") return atob("GBgBAAAAAAAAAAAAAAAAAAAAH//4P//8P//8f//+f8/+f8P+f8D+f8D+f8P+f8/+f//+P//8P//8H//4AAAAAAAAAAAAAAAAAAAA"); // icons/youtube.png - if (s=="zoom" || s=="meet") return atob("GBgBAAAAAAAAAAAAP/+Af//Af//AcADicADmcADucAD+cAD+cAD+cAD+cAD+cAD+cADucADmcADif//Af//AP/+AAAAAAAAAAAAA"); // icons/videoconf.png - if (msg.id=="music") return atob("FhaBAH//+/////////////h/+AH/4Af/gB/+H3/7/f/v9/+/3/7+f/vB/w8H+Dwf4PD/x/////////////3//+A="); - // if (s=="sms message" || s=="mail" || s=="gmail") // .. default icon (below) - return atob("FhKBAH//+P//yf/+c//z5/+fz/z/n+f/Pz/+ef/8D///////////////////////f//4///A"); + let s = (("string"=== typeof msg) ? msg : (msg.src || "")).toLowerCase(); + if (msg.id=="music") s="music"; + let match = ",default|0,airbnb|1,alarm|2,alarmclockreceiver|2,amazon shopping|3,bibel|4,bitwarden|5,1password|5,lastpass|5,dashlane|5,bring|6,calendar|7,etar|7,chat|8,chrome|9,corona-warn|10,bmo|11,desjardins|11,rbc mobile|11,nbc|11,rabobank|11,scotiabank|11,td (canada)|11,discord|12,drive|13,element|14,facebook|15,messenger|16,firefox|17,firefox beta|17,firefox nightly|17,f-droid|5,neo store|5,aurora droid|5,github|18,gitlab|19,gmx|20,google|21,google home|22,google play store|23,home assistant|24,instagram|25,kalender|26,keep notes|27,lieferando|28,linkedin|29,maps|30,organic maps|30,osmand|30,mastodon|31,fedilab|31,tooot|31,tusky|31,mattermost|32,n26|33,netflix|34,news|35,cbc news|35,rc info|35,reuters|35,ap news|35,la presse|35,nbc news|35,nextbike|36,nina|37,outlook mail|38,paypal|39,phone|40,plex|41,pocket|42,post & dhl|43,proton mail|44,reddit|45,sync pro|45,sync dev|45,boost|45,infinity|45,slide|45,signal|46,skype|47,slack|48,snapchat|49,starbucks|50,steam|51,teams|52,telegram|53,telegram foss|53,threema|54,tiktok|55,to do|56,opentasks|56,tasks|56,transit|57,twitch|58,twitter|59,uber|60,lyft|60,vlc|61,warnapp|62,whatsapp|63,wordfeud|64,youtube|65,newpipe|65,zoom|66,meet|66,music|67,sms message|0,mail|0,gmail|0,".match(new RegExp(`,${s}\\|(\\d+)`)) + return require("Storage").read("messageicons.img", (match===null)?0:match[1]*76, 76); }; exports.getColor = function(msg,options) { @@ -136,3 +65,4 @@ exports.getColor = function(msg,options) { "youtube": "#f00", // https://www.youtube.com/howyoutubeworks/resources/brand-resources/#logos-icons-and-colors }[s]||options.default; }; + \ No newline at end of file diff --git a/apps/messageicons/metadata.json b/apps/messageicons/metadata.json index b621c55b9..079835a0b 100644 --- a/apps/messageicons/metadata.json +++ b/apps/messageicons/metadata.json @@ -1,7 +1,7 @@ { "id": "messageicons", "name": "Message Icons", - "version": "0.02", + "version": "0.03", "description": "Library containing a list of icons and colors for apps", "icon": "app.png", "type": "module", @@ -10,6 +10,7 @@ "provides_modules" : ["messageicons"], "default": true, "storage": [ - {"name":"messageicons","url":"lib.js"} + {"name":"messageicons","url":"lib.js"}, + {"name":"messageicons.img","url":"icons.img"} ] }