1
0
Fork 0
mirror of https://github.com/FrankerFaceZ/FrankerFaceZ.git synced 2025-07-24 11:38:30 +00:00

Fix issues with logged out users for actions.

Look up the room login from the ID when rendering a chat line if we don't have the login already.
Add color validation to the color picker component.
If room is null, don't even try sending a message.
Allow sending messages to any room and not just the current room.
Swallow errors when processing colors and return null.
This commit is contained in:
SirStendec 2018-04-29 01:28:19 -04:00
parent fdde05030f
commit c548f15290
9 changed files with 188 additions and 128 deletions

View file

@ -1,4 +1,16 @@
<div class="list-header">4.0.0-rc1<span>@a1a7fb774d62948bacc5</span> <time datetime="2018-04-28">(2018-04-28)</time></div>
<div class="list-header">4.0.0-rc1.4<span>@2009dc29d6bd5e122bd6</span> <time datetime="2018-04-29">(2018-04-29)</time></div>
<ul class="chat-menu-content menu-side-padding">
<li>Fixed: Issue with mod actions not working properly on AutoMod messages due to a missing channel mapping.</li>
<li>Changed: Update dependencies.</li>
</ul>
<div class="list-header">4.0.0-rc1.3 <time datetime="2018-04-28">(2018-04-28)</time></div>
<ul class="chat-menu-content menu-side-padding">
<li>Fixed: Color validation issues for custom actions.</li>
<li>Fixed: Issues generating custom action DOM when the user is logged out.</li>
</ul>
<div class="list-header">4.0.0-rc1<span>@4a134ad5179b17981a92</span> <time datetime="2018-04-28">(2018-04-28)</time></div>
<ul class="chat-menu-content menu-side-padding">
<li>Added: Custom In-Line Chat Actions</li>
<li>Added: Option to disable Channel Hosting.</li>

206
package-lock.json generated
View file

@ -5,21 +5,21 @@
"requires": true,
"dependencies": {
"@babel/code-frame": {
"version": "7.0.0-beta.41",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.41.tgz",
"integrity": "sha512-omQT0n9EW38xfMCY7cCW/PAT55igUX9c9cMq6QN4EjxCcelcrocwMJ6H4JP4BGrQ+OHdJAQPM9/Eaa2Yce4Aug==",
"version": "7.0.0-beta.44",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz",
"integrity": "sha512-cuAuTTIQ9RqcFRJ/Y8PvTh+paepNcaGxwQwjIDRWPXmzzyAeCO4KqS9ikMvq0MCbRk6GlYKwfzStrcP3/jSL8g==",
"dev": true,
"requires": {
"@babel/highlight": "7.0.0-beta.41"
"@babel/highlight": "7.0.0-beta.44"
}
},
"@babel/generator": {
"version": "7.0.0-beta.41",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.41.tgz",
"integrity": "sha512-j1hBM7K53RqAwPzPkS3GK9ggxJUBaUHevkpnt9iKBPHVlTrO3owMMlT8wH/GmOjr0HyBGFlL8cSlygx8RLdD7A==",
"version": "7.0.0-beta.44",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.44.tgz",
"integrity": "sha512-5xVb7hlhjGcdkKpMXgicAVgx8syK5VJz193k0i/0sLP6DzE6lRrU1K3B/rFefgdo9LPGMAOOOAWW4jycj07ShQ==",
"dev": true,
"requires": {
"@babel/types": "7.0.0-beta.41",
"@babel/types": "7.0.0-beta.44",
"jsesc": "2.5.1",
"lodash": "4.17.4",
"source-map": "0.5.7",
@ -35,41 +35,41 @@
}
},
"@babel/helper-function-name": {
"version": "7.0.0-beta.41",
"resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.41.tgz",
"integrity": "sha512-oN/ljgS1InIpOp2bDkj8X5gIoiWnYBdhaAb2y/nPSMX4t0C6nIdbd0qYhG8uAKFm6mQBmm1cvNxPzcSB3F19aQ==",
"version": "7.0.0-beta.44",
"resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.44.tgz",
"integrity": "sha512-MHRG2qZMKMFaBavX0LWpfZ2e+hLloT++N7rfM3DYOMUOGCD8cVjqZpwiL8a0bOX3IYcQev1ruciT0gdFFRTxzg==",
"dev": true,
"requires": {
"@babel/helper-get-function-arity": "7.0.0-beta.41",
"@babel/template": "7.0.0-beta.41",
"@babel/types": "7.0.0-beta.41"
"@babel/helper-get-function-arity": "7.0.0-beta.44",
"@babel/template": "7.0.0-beta.44",
"@babel/types": "7.0.0-beta.44"
}
},
"@babel/helper-get-function-arity": {
"version": "7.0.0-beta.41",
"resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.41.tgz",
"integrity": "sha512-B4Vwv02jCSjCws0jmBwR+c5y3MXs5dDyjEVZ8wlIeOaMvwXNxVrBGl+OaLuuPlxVNDrESNvpGFXxh+rlqf+w5Q==",
"version": "7.0.0-beta.44",
"resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.44.tgz",
"integrity": "sha512-w0YjWVwrM2HwP6/H3sEgrSQdkCaxppqFeJtAnB23pRiJB5E/O9Yp7JAAeWBl+gGEgmBFinnTyOv2RN7rcSmMiw==",
"dev": true,
"requires": {
"@babel/types": "7.0.0-beta.41"
"@babel/types": "7.0.0-beta.44"
}
},
"@babel/helper-split-export-declaration": {
"version": "7.0.0-beta.41",
"resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.41.tgz",
"integrity": "sha512-eAyEJr4u3FWR5r0+gJWgE2Npu4d7BCXnXP+zw89n02x2DyewW0IHrED2HVlbhBAMWVt083VyGKjoVUMyH945wg==",
"version": "7.0.0-beta.44",
"resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.44.tgz",
"integrity": "sha512-aQ7QowtkgKKzPGf0j6u77kBMdUFVBKNHw2p/3HX/POt5/oz8ec5cs0GwlgM8Hz7ui5EwJnzyfRmkNF1Nx1N7aA==",
"dev": true,
"requires": {
"@babel/types": "7.0.0-beta.41"
"@babel/types": "7.0.0-beta.44"
}
},
"@babel/highlight": {
"version": "7.0.0-beta.41",
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.41.tgz",
"integrity": "sha512-5RURdqgHmXdg775Dr6GIFaVatHaPtaVgMF29jvWgkm8LP/B3MjZR/TOhkpbIBChqFzTn7uQKiBR3002pGjKY7Q==",
"version": "7.0.0-beta.44",
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.44.tgz",
"integrity": "sha512-Il19yJvy7vMFm8AVAh6OZzaFoAd0hbkeMZiX3P5HGD+z7dyI7RzndHB0dg6Urh/VAFfHtpOIzDUSxmY6coyZWQ==",
"dev": true,
"requires": {
"chalk": "2.3.2",
"chalk": "2.4.1",
"esutils": "2.0.2",
"js-tokens": "3.0.2"
},
@ -84,14 +84,14 @@
}
},
"chalk": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz",
"integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==",
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
"integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
"dev": true,
"requires": {
"ansi-styles": "3.2.1",
"escape-string-regexp": "1.0.5",
"supports-color": "5.3.0"
"supports-color": "5.4.0"
}
},
"has-flag": {
@ -101,9 +101,9 @@
"dev": true
},
"supports-color": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz",
"integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==",
"version": "5.4.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
"integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
"dev": true,
"requires": {
"has-flag": "3.0.0"
@ -112,37 +112,37 @@
}
},
"@babel/template": {
"version": "7.0.0-beta.41",
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.41.tgz",
"integrity": "sha512-EiFgrLPJQ64+Im0+fg9fHcos0eooRG/iuTM6vlF4X9b+j/9Z/VCZejbvgqLYtuseT67GKQHEeEoXM07HK6in2Q==",
"version": "7.0.0-beta.44",
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.44.tgz",
"integrity": "sha512-w750Sloq0UNifLx1rUqwfbnC6uSUk0mfwwgGRfdLiaUzfAOiH0tHJE6ILQIUi3KYkjiCDTskoIsnfqZvWLBDng==",
"dev": true,
"requires": {
"@babel/code-frame": "7.0.0-beta.41",
"@babel/types": "7.0.0-beta.41",
"babylon": "7.0.0-beta.41",
"@babel/code-frame": "7.0.0-beta.44",
"@babel/types": "7.0.0-beta.44",
"babylon": "7.0.0-beta.44",
"lodash": "4.17.4"
},
"dependencies": {
"babylon": {
"version": "7.0.0-beta.41",
"resolved": "http://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.41.tgz",
"integrity": "sha512-AfQfqR9hbNSpY/9yyGaUAiT1tmyHzaJbHJpqkfn8DGAUkPTG5VwPoulajQu3FUQXTr8NGm4MFaupVzmWkvln4Q==",
"version": "7.0.0-beta.44",
"resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz",
"integrity": "sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g==",
"dev": true
}
}
},
"@babel/traverse": {
"version": "7.0.0-beta.41",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.41.tgz",
"integrity": "sha512-EkWyDxYvaGaFjV+7xsGBeTsryqj5+oMo6noN/fhT5j5C4bpPuNwWnl47Ivvg10bk6v1NpfCoI6NHOWj3x+v9Ag==",
"version": "7.0.0-beta.44",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.44.tgz",
"integrity": "sha512-UHuDz8ukQkJCDASKHf+oDt3FVUzFd+QYfuBIsiNu/4+/ix6pP/C+uQZJ6K1oEfbCMv/IKWbgDEh7fcsnIE5AtA==",
"dev": true,
"requires": {
"@babel/code-frame": "7.0.0-beta.41",
"@babel/generator": "7.0.0-beta.41",
"@babel/helper-function-name": "7.0.0-beta.41",
"@babel/helper-split-export-declaration": "7.0.0-beta.41",
"@babel/types": "7.0.0-beta.41",
"babylon": "7.0.0-beta.41",
"@babel/code-frame": "7.0.0-beta.44",
"@babel/generator": "7.0.0-beta.44",
"@babel/helper-function-name": "7.0.0-beta.44",
"@babel/helper-split-export-declaration": "7.0.0-beta.44",
"@babel/types": "7.0.0-beta.44",
"babylon": "7.0.0-beta.44",
"debug": "3.1.0",
"globals": "11.1.0",
"invariant": "2.2.4",
@ -150,17 +150,17 @@
},
"dependencies": {
"babylon": {
"version": "7.0.0-beta.41",
"resolved": "http://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.41.tgz",
"integrity": "sha512-AfQfqR9hbNSpY/9yyGaUAiT1tmyHzaJbHJpqkfn8DGAUkPTG5VwPoulajQu3FUQXTr8NGm4MFaupVzmWkvln4Q==",
"version": "7.0.0-beta.44",
"resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz",
"integrity": "sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g==",
"dev": true
}
}
},
"@babel/types": {
"version": "7.0.0-beta.41",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.41.tgz",
"integrity": "sha512-q+Jf57E089a98CjAN5x0C5PAn7fqhVrEHTVAeVWHviyauASWgqff3F+t8migYEagnn5PcJ9lmtr5Mgmi3sV8PA==",
"version": "7.0.0-beta.44",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.44.tgz",
"integrity": "sha512-5eTV4WRmqbaFM3v9gHAIljEQJU4Ssc6fxL61JN+Oe2ga/BwyjzjamwkCVVAQjHGuAX8i0BWo42dshL8eO5KfLQ==",
"dev": true,
"requires": {
"esutils": "2.0.2",
@ -525,9 +525,9 @@
"dev": true
},
"aws4": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz",
"integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=",
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz",
"integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==",
"dev": true
},
"babel-code-frame": {
@ -542,9 +542,9 @@
}
},
"babel-core": {
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz",
"integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=",
"version": "6.26.3",
"resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz",
"integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==",
"dev": true,
"requires": {
"babel-code-frame": "6.26.0",
@ -580,23 +580,23 @@
}
},
"babel-eslint": {
"version": "8.2.2",
"resolved": "http://registry.npmjs.org/babel-eslint/-/babel-eslint-8.2.2.tgz",
"integrity": "sha512-Qt2lz2egBxNYWqN9JIO2z4NOOf8i4b5JS6CFoYrOZZTDssueiV1jH/jsefyg+86SeNY3rB361/mi3kE1WK2WYQ==",
"version": "8.2.3",
"resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-8.2.3.tgz",
"integrity": "sha512-0HeSTtaXg/Em7FCUWxwOT+KeFSO1O7LuRuzhk7g+1BjwdlQGlHq4OyMi3GqGxrNfEq8jEi6Hmt5ylEQUhurgiQ==",
"dev": true,
"requires": {
"@babel/code-frame": "7.0.0-beta.41",
"@babel/traverse": "7.0.0-beta.41",
"@babel/types": "7.0.0-beta.41",
"babylon": "7.0.0-beta.41",
"@babel/code-frame": "7.0.0-beta.44",
"@babel/traverse": "7.0.0-beta.44",
"@babel/types": "7.0.0-beta.44",
"babylon": "7.0.0-beta.44",
"eslint-scope": "3.7.1",
"eslint-visitor-keys": "1.0.0"
},
"dependencies": {
"babylon": {
"version": "7.0.0-beta.41",
"resolved": "http://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.41.tgz",
"integrity": "sha512-AfQfqR9hbNSpY/9yyGaUAiT1tmyHzaJbHJpqkfn8DGAUkPTG5VwPoulajQu3FUQXTr8NGm4MFaupVzmWkvln4Q==",
"version": "7.0.0-beta.44",
"resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz",
"integrity": "sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g==",
"dev": true
}
}
@ -1215,7 +1215,7 @@
"integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=",
"dev": true,
"requires": {
"babel-core": "6.26.0",
"babel-core": "6.26.3",
"babel-runtime": "6.26.0",
"core-js": "2.5.3",
"home-or-tmp": "2.0.0",
@ -3104,9 +3104,9 @@
}
},
"eslint-plugin-vue": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-4.4.0.tgz",
"integrity": "sha512-UHeE0aTEv9A/9xe8J6X7rDLMbwV6GuQFKAscMyLEv49Y4wK4KwQiifr2X0MsNsVlmccrDUyjI9KO4DuFTkPP9A==",
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-4.5.0.tgz",
"integrity": "sha512-2CDidjAZ875tbJgtjKihIQRkqxgk3gVUDOAW2e9dP+Kf39jhCwKy6aMXIsHRKCPjRqQhDWF0jtVRNcywBFWTZA==",
"dev": true,
"requires": {
"vue-eslint-parser": "2.0.3"
@ -4117,9 +4117,9 @@
}
},
"graphql-tag": {
"version": "2.8.0",
"resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.8.0.tgz",
"integrity": "sha1-Us3qB6hCFU7BGi6EDBG5d/m4Nc4="
"version": "2.9.1",
"resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.9.1.tgz",
"integrity": "sha512-JBLpagu/Xbb8N6xU6hZvBeHjdvnWb/GJnA/rrnBy3iSl0bcy+pjT5N1HctAsWNmGoAgY1+ilwv6JJqu0Tk2hHQ=="
},
"handle-thing": {
"version": "1.2.5",
@ -5889,9 +5889,9 @@
}
},
"node-sass": {
"version": "4.8.3",
"resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.8.3.tgz",
"integrity": "sha512-tfFWhUsCk/Y19zarDcPo5xpj+IW3qCfOjVdHtYeG6S1CKbQOh1zqylnQK6cV3z9k80yxAnFX9Y+a9+XysDhhfg==",
"version": "4.9.0",
"resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.9.0.tgz",
"integrity": "sha512-QFHfrZl6lqRU3csypwviz2XLgGNOoWQbo2GOvtsfQqOfL4cy1BtWnhx/XUeAO9LT3ahBzSRXcEO6DdvAH9DzSg==",
"dev": true,
"requires": {
"async-foreach": "0.1.3",
@ -6403,9 +6403,9 @@
"dev": true
},
"path-to-regexp": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.0.tgz",
"integrity": "sha512-zJcOPeBsraLjWXwUzFMPzH3QO2CmO1yRggtADPJjOTyCF5csQxfUGJL+CbyyRvIS09wOipi4F/fgRhdmVGSwxQ=="
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz",
"integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ=="
},
"path-type": {
"version": "3.0.0",
@ -6466,9 +6466,9 @@
"dev": true
},
"popper.js": {
"version": "1.14.2",
"resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.14.2.tgz",
"integrity": "sha1-Bm6OFhPmXmm6BQ9LeOe9TI1U5EM="
"version": "1.14.3",
"resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.14.3.tgz",
"integrity": "sha1-FDj5jQRqz3tNeM1QK/QYrGTU8JU="
},
"portfinder": {
"version": "1.0.13",
@ -7310,9 +7310,9 @@
"dev": true
},
"raven-js": {
"version": "3.24.1",
"resolved": "https://registry.npmjs.org/raven-js/-/raven-js-3.24.1.tgz",
"integrity": "sha512-p+e+yoQbq4YgXDonYIRZNL/Kov6+t5L0UNEHZeYNzjOkNNCXcwQ1Vi3pulgGBaOjqXNipkFsbpmnH7YI+GPSjw=="
"version": "3.24.2",
"resolved": "https://registry.npmjs.org/raven-js/-/raven-js-3.24.2.tgz",
"integrity": "sha512-Dy/FHDxuo5pXywVf8Nrs5utB2juMATpkxWGqHjVbpFD3m8CaWYLvkB5SEXjWFUZ5GvUsrBVVQ+Dfcp0x6Z7SOg=="
},
"raw-body": {
"version": "2.3.2",
@ -7574,7 +7574,7 @@
"dev": true,
"requires": {
"aws-sign2": "0.6.0",
"aws4": "1.6.0",
"aws4": "1.7.0",
"caseless": "0.11.0",
"combined-stream": "1.0.6",
"extend": "3.0.1",
@ -9028,9 +9028,9 @@
"optional": true
},
"uglifyjs-webpack-plugin": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.4.tgz",
"integrity": "sha512-z0IbjpW8b3O/OVn+TTZN4pI29RN1zktFBXLIzzfZ+++cUtZ1ERSlLWgpE/5OERuEUs1ijVQnpYAkSlpoVmQmSQ==",
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.5.tgz",
"integrity": "sha512-hIQJ1yxAPhEA2yW/i7Fr+SXZVMp+VEI3d42RTHBgQd2yhp/1UdBcR3QEWPV5ahBxlqQDMEMTuTEvDHSFINfwSw==",
"dev": true,
"requires": {
"cacache": "10.0.4",
@ -9056,9 +9056,9 @@
}
},
"ajv-keywords": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.1.0.tgz",
"integrity": "sha1-rCsnk5xUPpXSwG5/f1wnvkqlQ74=",
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz",
"integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=",
"dev": true
},
"schema-utils": {
@ -9068,7 +9068,7 @@
"dev": true,
"requires": {
"ajv": "6.4.0",
"ajv-keywords": "3.1.0"
"ajv-keywords": "3.2.0"
}
},
"source-map": {
@ -9364,9 +9364,9 @@
"integrity": "sha512-/ffmsiVuPC8PsWcFkZngdpas19ABm5mh2wA7iDqcltyCTwlgZjHGeJYOXkBMo422iPwIcviOtrTCUpSfXmToLQ=="
},
"vue-clickaway": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/vue-clickaway/-/vue-clickaway-2.1.0.tgz",
"integrity": "sha1-OS3nZHUfMc0geH6Ps6bjGYJfjU8=",
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/vue-clickaway/-/vue-clickaway-2.2.2.tgz",
"integrity": "sha512-25SpjXKetL06GLYoLoC8pqAV6Cur9cQ//2g35GRFBV4FgoljbZZjTINR8g2NuVXXDMLSUXaKx5dutgO4PaDE7A==",
"requires": {
"loose-envify": "1.3.1"
}

View file

@ -16,8 +16,8 @@
"build:dev": "webpack --config webpack.web.dev.js"
},
"devDependencies": {
"babel-core": "^6.26.0",
"babel-eslint": "^8.2.2",
"babel-core": "^6.26.3",
"babel-eslint": "^8.2.3",
"babel-loader": "^7.1.4",
"babel-plugin-syntax-dynamic-import": "^6.18.0",
"babel-plugin-transform-react-jsx": "^6.24.1",
@ -28,15 +28,15 @@
"css-loader": "^0.28.11",
"eslint": "^4.19.1",
"eslint-plugin-react": "^7.7.0",
"eslint-plugin-vue": "^4.4.0",
"eslint-plugin-vue": "^4.5.0",
"extract-loader": "^1.0.2",
"file-loader": "^1.1.11",
"node-sass": "^4.8.3",
"node-sass": "^4.9.0",
"raw-loader": "^0.5.1",
"sass-loader": "^6.0.7",
"style-loader": "^0.18.2",
"to-string-loader": "^1.1.5",
"uglifyjs-webpack-plugin": "^1.2.4",
"uglifyjs-webpack-plugin": "^1.2.5",
"vue-loader": "^13.7.1",
"webpack": "^3.11.0",
"webpack-dev-middleware": "^1.12.2",
@ -53,14 +53,14 @@
"displacejs": "^1.2.4",
"emoji-regex": "^6.5.1",
"graphql": "^0.13.2",
"graphql-tag": "^2.8.0",
"graphql-tag": "^2.9.1",
"js-cookie": "^2.2.0",
"path-to-regexp": "^2.2.0",
"popper.js": "^1.14.2",
"raven-js": "^3.24.1",
"path-to-regexp": "^2.2.1",
"popper.js": "^1.14.3",
"raven-js": "^3.24.2",
"sortablejs": "^1.7.0",
"vue": "^2.5.16",
"vue-clickaway": "^2.1.0",
"vue-clickaway": "^2.2.2",
"vue-color": "^2.4.6",
"vue-template-compiler": "^2.5.16",
"vuedraggable": "^2.16.0"

View file

@ -100,7 +100,7 @@ class FrankerFaceZ extends Module {
FrankerFaceZ.Logger = Logger;
const VER = FrankerFaceZ.version_info = {
major: 4, minor: 0, revision: 0, extra: '-rc1',
major: 4, minor: 0, revision: 0, extra: '-rc1.4',
build: __webpack_hash__,
toString: () =>
`${VER.major}.${VER.minor}.${VER.revision}${VER.extra || ''}${DEBUG ? '-dev' : ''}`

View file

@ -166,7 +166,7 @@ export default class Actions extends Module {
renderInline(msg, mod_icons, current_user, current_room, createElement) {
const actions = [];
if ( msg.user && current_user.login === msg.user.userLogin )
if ( msg.user && current_user && current_user.login === msg.user.userLogin )
return;
const chat = this.resolve('site.chat');
@ -182,8 +182,8 @@ export default class Actions extends Module {
if ( ! def || disp.disabled ||
(disp.mod_icons != null && disp.mod_icons !== mod_icons) ||
(disp.mod != null && disp.mod !== current_user.moderator) ||
(disp.staff != null && disp.staff !== current_user.staff) ||
(disp.mod != null && disp.mod !== (current_user ? current_user.moderator : false)) ||
(disp.staff != null && disp.staff !== (current_user ? current_user.staff : false)) ||
(disp.deleted != null && disp.deleted !== msg.deleted) )
continue;

View file

@ -16,7 +16,8 @@
class="ffz-color-preview tw-absolute tw-top-0 tw-bottom-0 tw-right-0 tw-border-l tw-z-default"
@click="togglePicker"
>
<figure v-if="color" :style="`background-color: ${color}`" />
<figure v-if="! valid" class="ffz-i-attention tw-c-text-alert" />
<figure v-else-if="color" :style="`background-color: ${color}`" />
<figure v-else class="ffz-i-eyedropper" />
</button>
<div v-on-clickaway="closePicker" v-if="open" class="tw-absolute tw-z-default tw-right-0">
@ -44,19 +45,30 @@ export default {
default: {
type: String,
default: '#000'
},
validate: {
type: Boolean,
default: true
}
},
data() {
return {
color: '',
valid: false,
open: false
}
},
computed: {
colors() {
try {
return Color.RGBA.fromCSS(this.color || this.default)
} catch(err) {
return {
hex: this.default
}
}
}
},
@ -68,6 +80,7 @@ export default {
mounted() {
this.color = this.value;
this._validate();
},
methods: {
@ -93,12 +106,32 @@ export default {
this.color = `rgba(${c.r}, ${c.g}, ${c.b}, ${c.a})`;
}
if ( old_val !== this.color )
if ( old_val !== this.color ) {
this._validate();
this.emit();
}
},
_validate() {
this.valid = true;
if ( ! this.color || ! this.color.length || ! this.validate )
return;
try {
Color.RGBA.fromCSS(this.color);
} catch(err) {
this.valid = false;
}
},
emit() {
if ( this.valid )
this.$emit('input', this.color);
},
onChange() {
this.$emit('input', this.color);
this._validate();
this.emit();
}
}
}

View file

@ -519,14 +519,14 @@ export default class ChatHook extends Module {
const controller = this.ChatController.first,
service = controller && controller.chatService;
if ( ! service )
if ( ! service || ! room )
return null;
if ( room.startsWith('#') )
room = room.slice(1);
if ( room.toLowerCase() !== service.channelLogin.toLowerCase() )
return null;
return service.client.sendCommand(room, message);
service.sendMessage(message);
}

View file

@ -102,10 +102,16 @@ export default class ChatLine extends Module {
const user = msg.user,
color = t.parent.colors.process(user.color),
bg_css = null, //Math.random() > .7 ? t.parent.inverse_colors.process(user.color) : null,
room = msg.roomLogin ? msg.roomLogin : msg.channel ? msg.channel.slice(1) : undefined,
show = this._ffz_show = this.state.alwaysShowMessage || ! this.props.message.deleted;
let room = msg.roomLogin ? msg.roomLogin : msg.channel ? msg.channel.slice(1) : undefined;
if ( ! room && this.props.channelID ) {
const r = t.chat.getRoom(this.props.channelID, null, true);
if ( r && r.login )
room = msg.roomLogin = r.login;
}
if ( ! msg.message && msg.messageParts )
detokenizeMessage(msg);

View file

@ -592,7 +592,7 @@ export class ColorAdjuster {
}
}
process(color) {
process(color, throw_errors = false) {
if ( this._mode === -1 )
return '';
else if ( this._mode === 0 )
@ -607,7 +607,16 @@ export class ColorAdjuster {
if ( this._cache.has(color) )
return this._cache.get(color);
let rgb = RGBAColor.fromCSS(color);
let rgb;
try {
rgb = RGBAColor.fromCSS(color);
} catch(err) {
if ( throw_errors )
throw err;
return null;
}
if ( this._mode === 1 ) {
// HSL Luma