Compare commits

...

3 commits

18 changed files with 157 additions and 383 deletions

133
package-lock.json generated
View file

@ -5,7 +5,7 @@
"packages": {
"": {
"dependencies": {
"@swc/core": "^1.4.0",
"@swc/core": "^1.4.2",
"autoprefixer": "^10.4.17",
"cssnano": "^6.0.3",
"html-minifier-terser": "^7.2.0",
@ -26,9 +26,9 @@
}
},
"node_modules/@jridgewell/resolve-uri": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
"integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
"integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
"engines": {
"node": ">=6.0.0"
}
@ -65,12 +65,12 @@
}
},
"node_modules/@swc/core": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/@swc/core/-/core-1.4.0.tgz",
"integrity": "sha512-wc5DMI5BJftnK0Fyx9SNJKkA0+BZSJQx8430yutWmsILkHMBD3Yd9GhlMaxasab9RhgKqZp7Ht30hUYO5ZDvQg==",
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/@swc/core/-/core-1.4.2.tgz",
"integrity": "sha512-vWgY07R/eqj1/a0vsRKLI9o9klGZfpLNOVEnrv4nrccxBgYPjcf22IWwAoaBJ+wpA7Q4fVjCUM8lP0m01dpxcg==",
"hasInstallScript": true,
"dependencies": {
"@swc/counter": "^0.1.1",
"@swc/counter": "^0.1.2",
"@swc/types": "^0.1.5"
},
"engines": {
@ -81,16 +81,16 @@
"url": "https://opencollective.com/swc"
},
"optionalDependencies": {
"@swc/core-darwin-arm64": "1.4.0",
"@swc/core-darwin-x64": "1.4.0",
"@swc/core-linux-arm-gnueabihf": "1.4.0",
"@swc/core-linux-arm64-gnu": "1.4.0",
"@swc/core-linux-arm64-musl": "1.4.0",
"@swc/core-linux-x64-gnu": "1.4.0",
"@swc/core-linux-x64-musl": "1.4.0",
"@swc/core-win32-arm64-msvc": "1.4.0",
"@swc/core-win32-ia32-msvc": "1.4.0",
"@swc/core-win32-x64-msvc": "1.4.0"
"@swc/core-darwin-arm64": "1.4.2",
"@swc/core-darwin-x64": "1.4.2",
"@swc/core-linux-arm-gnueabihf": "1.4.2",
"@swc/core-linux-arm64-gnu": "1.4.2",
"@swc/core-linux-arm64-musl": "1.4.2",
"@swc/core-linux-x64-gnu": "1.4.2",
"@swc/core-linux-x64-musl": "1.4.2",
"@swc/core-win32-arm64-msvc": "1.4.2",
"@swc/core-win32-ia32-msvc": "1.4.2",
"@swc/core-win32-x64-msvc": "1.4.2"
},
"peerDependencies": {
"@swc/helpers": "^0.5.0"
@ -102,9 +102,9 @@
}
},
"node_modules/@swc/core-darwin-arm64": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.4.0.tgz",
"integrity": "sha512-UTJ/Vz+s7Pagef6HmufWt6Rs0aUu+EJF4Pzuwvr7JQQ5b1DZeAAUeUtkUTFx/PvCbM8Xfw4XdKBUZfrIKCfW8A==",
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.4.2.tgz",
"integrity": "sha512-1uSdAn1MRK5C1m/TvLZ2RDvr0zLvochgrZ2xL+lRzugLlCTlSA+Q4TWtrZaOz+vnnFVliCpw7c7qu0JouhgQIw==",
"cpu": [
"arm64"
],
@ -117,9 +117,9 @@
}
},
"node_modules/@swc/core-darwin-x64": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.4.0.tgz",
"integrity": "sha512-f8v58u2GsGak8EtZFN9guXqE0Ep10Suny6xriaW2d8FGqESPyNrnBzli3aqkSeQk5gGqu2zJ7WiiKp3XoUOidA==",
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.4.2.tgz",
"integrity": "sha512-TYD28+dCQKeuxxcy7gLJUCFLqrwDZnHtC2z7cdeGfZpbI2mbfppfTf2wUPzqZk3gEC96zHd4Yr37V3Tvzar+lQ==",
"cpu": [
"x64"
],
@ -132,9 +132,9 @@
}
},
"node_modules/@swc/core-linux-arm-gnueabihf": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.4.0.tgz",
"integrity": "sha512-q2KAkBzmPcTnRij/Y1fgHCKAGevUX/H4uUESrw1J5gmUg9Qip6onKV80lTumA1/aooGJ18LOsB31qdbwmZk9OA==",
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.4.2.tgz",
"integrity": "sha512-Eyqipf7ZPGj0vplKHo8JUOoU1un2sg5PjJMpEesX0k+6HKE2T8pdyeyXODN0YTFqzndSa/J43EEPXm+rHAsLFQ==",
"cpu": [
"arm"
],
@ -147,9 +147,9 @@
}
},
"node_modules/@swc/core-linux-arm64-gnu": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.4.0.tgz",
"integrity": "sha512-SknGu96W0mzHtLHWm+62fk5+Omp9fMPFO7AWyGFmz2tr8EgRRXtTSrBUnWhAbgcalnhen48GsvtMdxf1KNputg==",
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.4.2.tgz",
"integrity": "sha512-wZn02DH8VYPv3FC0ub4my52Rttsus/rFw+UUfzdb3tHMHXB66LqN+rR0ssIOZrH6K+VLN6qpTw9VizjyoH0BxA==",
"cpu": [
"arm64"
],
@ -162,9 +162,9 @@
}
},
"node_modules/@swc/core-linux-arm64-musl": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.4.0.tgz",
"integrity": "sha512-/k3TDvpBRMDNskHooNN1KqwUhcwkfBlIYxRTnJvsfT2C7My4pffR+4KXmt0IKynlTTbCdlU/4jgX4801FSuliw==",
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.4.2.tgz",
"integrity": "sha512-3G0D5z9hUj9bXNcwmA1eGiFTwe5rWkuL3DsoviTj73TKLpk7u64ND0XjEfO0huVv4vVu9H1jodrKb7nvln/dlw==",
"cpu": [
"arm64"
],
@ -177,9 +177,9 @@
}
},
"node_modules/@swc/core-linux-x64-gnu": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.4.0.tgz",
"integrity": "sha512-GYsTMvNt5+WTVlwwQzOOWsPMw6P/F41u5PGHWmfev8Nd4QJ1h3rWPySKk4mV42IJwH9MgQCVSl3ygwNqwl6kFg==",
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.4.2.tgz",
"integrity": "sha512-LFxn9U8cjmYHw3jrdPNqPAkBGglKE3tCZ8rA7hYyp0BFxuo7L2ZcEnPm4RFpmSCCsExFH+LEJWuMGgWERoktvg==",
"cpu": [
"x64"
],
@ -192,9 +192,9 @@
}
},
"node_modules/@swc/core-linux-x64-musl": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.4.0.tgz",
"integrity": "sha512-jGVPdM/VwF7kK/uYRW5N6FwzKf/FnDjGIR3RPvQokjYJy7Auk+3Oj21C0Jev7sIT9RYnO/TrFEoEozKeD/z2Qw==",
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.4.2.tgz",
"integrity": "sha512-dp0fAmreeVVYTUcb4u9njTPrYzKnbIH0EhH2qvC9GOYNNREUu2GezSIDgonjOXkHiTCvopG4xU7y56XtXj4VrQ==",
"cpu": [
"x64"
],
@ -207,9 +207,9 @@
}
},
"node_modules/@swc/core-win32-arm64-msvc": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.4.0.tgz",
"integrity": "sha512-biHYm1AronEKlt47O/H8sSOBM2BKXMmWT+ApvlxUw50m1RGNnVnE0bgY7tylFuuSiWyXsQPJbmUV708JqORXVg==",
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.4.2.tgz",
"integrity": "sha512-HlVIiLMQkzthAdqMslQhDkoXJ5+AOLUSTV6fm6shFKZKqc/9cJvr4S8UveNERL9zUficA36yM3bbfo36McwnvQ==",
"cpu": [
"arm64"
],
@ -222,9 +222,9 @@
}
},
"node_modules/@swc/core-win32-ia32-msvc": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.4.0.tgz",
"integrity": "sha512-TL5L2tFQb19kJwv6+elToGBj74QXCn9j+hZfwQatvZEJRA5rDK16eH6oAE751dGUArhnWlW3Vj65hViPvTuycw==",
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.4.2.tgz",
"integrity": "sha512-WCF8faPGjCl4oIgugkp+kL9nl3nUATlzKXCEGFowMEmVVCFM0GsqlmGdPp1pjZoWc9tpYanoXQDnp5IvlDSLhA==",
"cpu": [
"ia32"
],
@ -237,9 +237,9 @@
}
},
"node_modules/@swc/core-win32-x64-msvc": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.4.0.tgz",
"integrity": "sha512-e2xVezU7XZ2Stzn4i7TOQe2Kn84oYdG0M3A7XI7oTdcpsKCcKwgiMoroiAhqCv+iN20KNqhnWwJiUiTj/qN5AA==",
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.4.2.tgz",
"integrity": "sha512-oV71rwiSpA5xre2C5570BhCsg1HF97SNLsZ/12xv7zayGzqr3yvFALFJN8tHKpqUdCB4FGPjoP3JFdV3i+1wUw==",
"cpu": [
"x64"
],
@ -322,9 +322,9 @@
"integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="
},
"node_modules/browserslist": {
"version": "4.22.3",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.3.tgz",
"integrity": "sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==",
"version": "4.23.0",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz",
"integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==",
"funding": [
{
"type": "opencollective",
@ -340,8 +340,8 @@
}
],
"dependencies": {
"caniuse-lite": "^1.0.30001580",
"electron-to-chromium": "^1.4.648",
"caniuse-lite": "^1.0.30001587",
"electron-to-chromium": "^1.4.668",
"node-releases": "^2.0.14",
"update-browserslist-db": "^1.0.13"
},
@ -378,9 +378,9 @@
}
},
"node_modules/caniuse-lite": {
"version": "1.0.30001585",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001585.tgz",
"integrity": "sha512-yr2BWR1yLXQ8fMpdS/4ZZXpseBgE7o4g41x3a6AJOqZuOi+iE/WdJYAuZ6Y95i4Ohd2Y+9MzIWRR+uGABH4s3Q==",
"version": "1.0.30001588",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001588.tgz",
"integrity": "sha512-+hVY9jE44uKLkH0SrUTqxjxqNTOWHsbnQDIKjwkZ3lNTzUUVdBLBGXtj/q5Mp5u98r3droaZAewQuEDzjQdZlQ==",
"funding": [
{
"type": "opencollective",
@ -643,9 +643,9 @@
}
},
"node_modules/electron-to-chromium": {
"version": "1.4.665",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.665.tgz",
"integrity": "sha512-UpyCWObBoD+nSZgOC2ToaIdZB0r9GhqT2WahPKiSki6ckkSuKhQNso8V2PrFcHBMleI/eqbKgVQgVC4Wni4ilw=="
"version": "1.4.677",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.677.tgz",
"integrity": "sha512-erDa3CaDzwJOpyvfKhOiJjBVNnMM0qxHq47RheVVwsSQrgBA9ZSGV9kdaOfZDPXcHzhG7lBxhj6A7KvfLJBd6Q=="
},
"node_modules/entities": {
"version": "4.5.0",
@ -699,11 +699,14 @@
}
},
"node_modules/lilconfig": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz",
"integrity": "sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==",
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.1.tgz",
"integrity": "sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==",
"engines": {
"node": ">=14"
},
"funding": {
"url": "https://github.com/sponsors/antonk52"
}
},
"node_modules/lodash.memoize": {
@ -1307,9 +1310,9 @@
}
},
"node_modules/terser": {
"version": "5.27.0",
"resolved": "https://registry.npmjs.org/terser/-/terser-5.27.0.tgz",
"integrity": "sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A==",
"version": "5.27.2",
"resolved": "https://registry.npmjs.org/terser/-/terser-5.27.2.tgz",
"integrity": "sha512-sHXmLSkImesJ4p5apTeT63DsV4Obe1s37qT8qvwHRmVxKTBH7Rv9Wr26VcAMmLbmk9UliiwK8z+657NyJHHy/w==",
"dependencies": {
"@jridgewell/source-map": "^0.3.3",
"acorn": "^8.8.2",

View file

@ -1,6 +1,6 @@
{
"dependencies": {
"@swc/core": "^1.4.0",
"@swc/core": "^1.4.2",
"autoprefixer": "^10.4.17",
"cssnano": "^6.0.3",
"html-minifier-terser": "^7.2.0",

View file

@ -1,142 +0,0 @@
.domaintrans {
font-family: Verdana, Tahoma, Geneva, Arial, Helvetica, sans-serif;
font-size: 16px;
line-height: 20px;
background-color: #222;
color: #ddd;
text-shadow: 0 0 5px #000;
box-shadow: inset 0 0 1em #000;
margin: env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);
}
.domaintrans-body {
max-width: 500px;
margin: 20px auto;
}
.domaintrans-eggs {
display: flex;
justify-content: center;
align-items: center;
flex-wrap: wrap;
gap: 10px;
margin: 20px;
}
.domaintrans-domain {
margin: 10px;
}
.domaintrans-domain-main {
font-size: 1.2em;
line-height: 1.5em;
}
.domaintrans-domain-compat {
font-size: .8em;
line-height: 1.5em;
opacity: .8;
}
.domaintrans-domain-header {
font-size: 1.4em;
line-height: 1.5em;
text-align: center;
}
.domaintrans-domain-display {
display: flex;
justify-content: center;
align-items: center;
width: 100%;
font-size: 1.2em;
line-height: 1.4em;
gap: 5px;
}
.domaintrans-domain-text {
border: 1px solid #444;
background: #333;
border-radius: 5px;
padding: 2px 5px;
}
.domaintrans-domain-arrow-down {
display: none;
}
@media (max-width: 500px) {
.domaintrans-domain-display {
flex-direction: column;
}
.domaintrans-domain-arrow-right {
display: none;
}
.domaintrans-domain-arrow-down {
display: block;
}
}
.domaintrans-text {
font-size: .8em;
line-height: 1.3em;
margin: 10px auto;
}
.domaintrans-text p {
margin: 1em 10px;
}
.domaintrans-options {
display: flex;
flex-direction: column;
align-items: center;
gap: 5px;
}
.domaintrans-option {
display: flex;
align-items: center;
color: #fff;
background: #333;
border-width: 0;
border-radius: 5px;
font-size: 16px;
max-width: 300px;
width: 100%;
text-shadow: initial;
text-align: left;
font-family: Verdana, Tahoma, Geneva, Arial, Helvetica, sans-serif;
padding: 10px 15px;
border: 1px solid #444;
transition: background .2s;
}
.domaintrans-option-icon {
transform: scale(1.4);
transition: transform .2s;
}
.domaintrans-option-text {
padding: 2px 10px;
}
.domaintrans-option:focus {
outline: 2px solid #9475b2;
}
.domaintrans-option:hover,
.domaintrans-option:focus {
background: #3d3d3d;
text-decoration: none;
}
.domaintrans-option:hover .domaintrans-option-icon,
.domaintrans-option:focus .domaintrans-option-icon {
transform: scale(1.6);
}
.domaintrans-option:active {
background: #383838;
}
.domaintrans-option:active .domaintrans-option-icon {
transform: scale(1.3);
}

View file

@ -4,7 +4,6 @@
@include views.css;
@include chat.css;
@include domaintrans.css;
@include eeprom.css;
@include emote.css;
@include input.css;

View file

@ -20,7 +20,6 @@ window.Umi = { UI: {}, Protocol: { SockChat: { Protocol: {} } } };
#include sound/osukeys.js
#include sound/umisound.js
#include ui/chat-layout.js
#include ui/domaintrans.jsx
#include ui/hooks.js
#include ui/input-menus.js
#include ui/loading-overlay.jsx
@ -114,7 +113,6 @@ window.Umi = { UI: {}, Protocol: { SockChat: { Protocol: {} } } };
settings.define('forceUseWorker', 'boolean', false, false, true);
settings.define('marqueeAllNames', 'boolean', false);
settings.define('tmpDisableOldThemeSys', 'boolean', false, false, true);
settings.define('tmpSkipDomainPopUpThing', 'boolean', false, false, true);
const noNotifSupport = !('Notification' in window);
settings.define('enableNotifications', 'boolean', false, noNotifSupport, true);
@ -179,20 +177,6 @@ window.Umi = { UI: {}, Protocol: { SockChat: { Protocol: {} } } };
}
if(!settings.get('tmpSkipDomainPopUpThing'))
await (() => {
return new Promise((resolve) => {
views.push(new MamiDomainTransition(soundCtx.library, () => {
(new MamiSettingsBackup(settings)).importUpload(document.body);
}, () => {
settings.set('tmpSkipDomainPopUpThing', true);
views.pop();
resolve();
}));
});
})();
const onHashChange = () => {
if(location.hash === '#reset') {
settings.clear(true);

View file

@ -1,28 +1,34 @@
Umi.Message = function(msgId, time, user, text, channel, highlight, botInfo, isAction, isLog) {
msgId = (msgId || '').toString();
time = time === null ? new Date() : new Date(parseInt(time || 0) * 1000);
user = user || {};
text = (text || '').toString();
channel = (channel || '').toString();
highlight = !!highlight;
isAction = !!isAction;
isLog = !!isLog;
hasSeen = isLog;
#include user.js
const msgIdInt = parseInt(msgId);
Umi.Message = (() => {
const chatBot = new Umi.User('-1', 'Server');
return {
getId: () => msgId,
getIdInt: () => msgIdInt,
getTime: () => time,
getUser: () => user,
getText: () => text,
getChannel: () => channel,
shouldHighlight: () => highlight,
getBotInfo: () => botInfo,
isAction: () => isAction,
isLog: () => isLog,
hasSeen: () => hasSeen,
markSeen: () => hasSeen = true,
return function(msgId, time, user, text, channel, highlight, botInfo, isAction, isLog) {
msgId = (msgId || '').toString();
time = time === null ? new Date() : new Date(parseInt(time || 0) * 1000);
user = user !== null && typeof user === 'object' ? user : chatBot;
text = (text || '').toString();
channel = (channel || '').toString();
highlight = !!highlight;
isAction = !!isAction;
isLog = !!isLog;
hasSeen = isLog;
const msgIdInt = parseInt(msgId);
return {
getId: () => msgId,
getIdInt: () => msgIdInt,
getTime: () => time,
getUser: () => user,
getText: () => text,
getChannel: () => channel,
shouldHighlight: () => highlight,
getBotInfo: () => botInfo,
isAction: () => isAction,
isLog: () => isLog,
hasSeen: () => hasSeen,
markSeen: () => hasSeen = true,
};
};
};
})();

View file

@ -19,8 +19,6 @@
Umi.Protocol.SockChat.Protocol = function(views, settings) {
const pub = {};
const chatBot = new Umi.User('-1', 'Server');
let noReconnect = false,
connectAttempts = 0,
wasKicked = false,
@ -270,20 +268,20 @@ Umi.Protocol.SockChat.Protocol = function(views, settings) {
}
Umi.Messages.Add(new Umi.Message(
data[6], data[1], chatBot, '', channelName, false,
data[6], data[1], undefined, '', channelName, false,
{ type: 'join', isError: false, args: [juser.getName()], target: juser }
));
break;
case '2': // message
let text = data[3];
const muser = Umi.Users.Get(data[2]) || chatBot,
textParts = text.split("\f");
isPM = data[5][4] !== '0',
isAction = data[5][1] !== '0' && data[5][3] === '0',
isBot = data[2] === '-1',
pmChannel = '@' + muser.getName(),
botInfo = {};
const muser = Umi.Users.Get(data[2]);
const textParts = text.split("\f");
const isPM = data[5][4] !== '0';
const isAction = data[5][1] !== '0' && data[5][3] === '0';
const isBot = data[2] === '-1';
const botInfo = {};
let pmChannel = '';
text = unfuckText(text);
@ -296,9 +294,10 @@ Umi.Protocol.SockChat.Protocol = function(views, settings) {
if(isPM) {
if(muser.getId() === userId) {
const tmpMsg = text.split(' ');
pmChannel = '@' + tmpMsg.shift();
pmChannel = `@${tmpMsg.shift()}`;
text = tmpMsg.join(' ');
}
} else
pmChannel = `@${muser.getName()}`;
if(Umi.Channels.Get(pmChannel) === null)
Umi.Channels.Add(new Umi.Channel(pmChannel, false, true, true));
@ -308,7 +307,7 @@ Umi.Protocol.SockChat.Protocol = function(views, settings) {
Umi.Messages.Add(new Umi.Message(
data[4], data[1], muser, text,
isPM ? pmChannel : (data[6] || channelName),
isPM ? pmChannel : channelName,
false, botInfo, isAction
));
break;
@ -317,7 +316,7 @@ Umi.Protocol.SockChat.Protocol = function(views, settings) {
const luser = Umi.Users.Get(data[1]);
Umi.Messages.Add(new Umi.Message(
data[5], data[4], chatBot, '', channelName, false,
data[5], data[4], undefined, '', channelName, false,
{ type: data[3], isError: false, args: [luser.getName()], target: luser }
));
Umi.Users.Remove(luser);
@ -350,7 +349,7 @@ Umi.Protocol.SockChat.Protocol = function(views, settings) {
Umi.Users.Add(umuser);
Umi.Messages.Add(new Umi.Message(
data[6], null, chatBot, '', channelName, false,
data[6], null, undefined, '', channelName, false,
{ type: 'jchan', isError: false, args: [ umuser.getName() ], target: umuser }
));
break;
@ -362,7 +361,7 @@ Umi.Protocol.SockChat.Protocol = function(views, settings) {
const mouser = Umi.Users.Get(+data[2]);
Umi.Messages.Add(new Umi.Message(
data[3], null, chatBot, '', channelName, false,
data[3], null, undefined, '', channelName, false,
{ type: 'lchan', isError: false, args: [ mouser.getName() ], target: mouser }
));
Umi.Users.Remove(mouser);

View file

@ -4,9 +4,9 @@
#include ui/menus.js
Umi.UI.Channels = (function() {
const sidebarChannel = 'sidebar__channel',
sidebarChannelCurrent = 'sidebar__channel--current',
sidebarChannelUnread = 'sidebar__channel--unread';
const sidebarChannel = 'sidebar__channel';
const sidebarChannelCurrent = 'sidebar__channel--current';
const sidebarChannelUnread = 'sidebar__channel--unread';
const markUnread = function(id, mode) {
if(!id)

View file

@ -3,8 +3,8 @@
#include ui/chat-input-menus.js
Umi.UI.ChatInput = function() {
const menus = new Umi.UI.ChatInputMenus,
main = new Umi.UI.ChatInputMain;
const menus = new Umi.UI.ChatInputMenus;
const main = new Umi.UI.ChatInputMain;
const html = $e({
tag: 'form',

View file

@ -3,8 +3,8 @@
#include ui/chat-input.js
Umi.UI.ChatInterface = function() {
const messages = new Umi.UI.ChatMessageList,
input = new Umi.UI.ChatInput;
const messages = new Umi.UI.ChatMessageList;
const input = new Umi.UI.ChatInput;
const html = $e({
attrs: {

View file

@ -4,8 +4,8 @@
// this needs revising at some point but will suffice for now
Umi.UI.ChatLayout = function() {
const sideBar = new Umi.UI.ChatSideBar,
main = new Umi.UI.ChatInterface;
const sideBar = new Umi.UI.ChatSideBar;
const main = new Umi.UI.ChatInterface;
const html = $e({
attrs: {

View file

@ -3,8 +3,8 @@
#include ui/chat-sidebar-buttons.js
Umi.UI.ChatSideBar = function() {
const container = new Umi.UI.ChatSideBarContainer,
buttons = new Umi.UI.ChatSideBarButtons;
const container = new Umi.UI.ChatSideBarContainer;
const buttons = new Umi.UI.ChatSideBarButtons;
const html = $e({
attrs: {

View file

@ -1,68 +0,0 @@
#include common.js
#include rng.js
const MamiDomainTransition = function(soundLib, onImport, onDismiss) {
if(typeof onImport !== 'function')
throw 'onImport must be a function';
if(typeof onDismiss !== 'function')
throw 'onDismiss must be a function';
let eggsTarget;
const html = <div class="domaintrans">
<div class="domaintrans-body">
<div class="domaintrans-domain domaintrans-domain-main">
<div class="domaintrans-domain-header">
Flashii Chat
</div>
<div class="domaintrans-domain-display">
<div class="domaintrans-domain-text domaintrans-domain-orig">sockchat.flashii.net</div>
<div class="domaintrans-domain-arrow domaintrans-domain-arrow-right"><i class="fas fa-arrow-right" /></div>
<div class="domaintrans-domain-arrow domaintrans-domain-arrow-down"><i class="fas fa-arrow-down" /></div>
<div class="domaintrans-domain-text domaintrans-domain-new">chat.flashii.net</div>
</div>
</div>
<div class="domaintrans-domain domaintrans-domain-compat">
<div class="domaintrans-domain-header">
Compatibility Chat
</div>
<div class="domaintrans-domain-display">
<div class="domaintrans-domain-text domaintrans-domain-orig">sockchat.flashii.net/legacy</div>
<div class="domaintrans-domain-arrow domaintrans-domain-arrow-right"><i class="fas fa-arrow-right" /></div>
<div class="domaintrans-domain-arrow domaintrans-domain-arrow-down"><i class="fas fa-arrow-down" /></div>
<div class="domaintrans-domain-text domaintrans-domain-new">sockchat.flashii.net</div>
</div>
</div>
{eggsTarget = <div class="domaintrans-eggs" />}
<div class="domaintrans-text">
<p>At long last, chat is being moved back to its original subdomain. What was meant to be a temporary drop-in lasted a little bit longer than expected!</p>
<p>You will need to transfer your settings using the compatibility client. Going there will present you with a similar pop-up that will let you save your settings to a file, press "Import Settings" below and select the file you saved to copy them over. If you're new or wish to start anew, just press "Continue to chat".</p>
<p>This screen won't show up again after you press "Continue to chat".</p>
</div>
<div class="domaintrans-options">
<a class="domaintrans-option" href={AMI_URL} target="_blank">
<div class="domaintrans-option-icon"><i class="fas fa-arrow-circle-right" /></div>
<div class="domaintrans-option-text">Open compatibility client</div>
</a>
<button class="domaintrans-option" onclick={onImport}>
<div class="domaintrans-option-icon"><i class="fas fa-arrow-circle-right" /></div>
<div class="domaintrans-option-text">Import settings</div>
</button>
<button class="domaintrans-option" onclick={onDismiss}>
<div class="domaintrans-option-icon"><i class="fas fa-arrow-circle-right" /></div>
<div class="domaintrans-option-text">Continue to chat</div>
</button>
</div>
</div>
</div>;
const soundRNG = new MamiRNG();
const soundNames = soundLib.names();
const playRandomSound = () => soundLib.play(soundNames[soundRNG.next(soundNames.length)]);
for(let i = 0; i < 10; ++i)
eggsTarget.appendChild(<i class="fas fa-egg fa-3x" onclick={() => playRandomSound()} />);
return {
getElement: () => html,
};
};

View file

@ -5,8 +5,8 @@ Umi.UI.InputMenus = (function() {
const ids = [];
let current = '';
const inputMenuActive = 'input__menu--active',
inputButtonActive = 'input__button--active';
const inputMenuActive = 'input__menu--active';
const inputButtonActive = 'input__button--active';
const toggle = function(baseId) {
const button = 'umi-msg-menu-btn-' + baseId,

View file

@ -3,13 +3,13 @@
Umi.UI.Menus = (function() {
const ids = [];
const sidebarMenu = 'sidebar__menu',
sidebarMenuActive = 'sidebar__menu--active',
sidebarMenuHidden = 'sidebar__menu--hidden',
sidebarSelectorMode = 'sidebar__selector-mode',
sidebarSelectorModeActive = 'sidebar__selector-mode--active',
sidebarSelectorModeAttention = 'sidebar__selector-mode--attention',
sidebarSelectorModeHidden = 'sidebar__selector-mode--hidden';
const sidebarMenu = 'sidebar__menu';
const sidebarMenuActive = 'sidebar__menu--active';
const sidebarMenuHidden = 'sidebar__menu--hidden';
const sidebarSelectorMode = 'sidebar__selector-mode';
const sidebarSelectorModeActive = 'sidebar__selector-mode--active';
const sidebarSelectorModeAttention = 'sidebar__selector-mode--attention';
const sidebarSelectorModeHidden = 'sidebar__selector-mode--hidden';
const attention = function(baseId, mode) {
if(mode === undefined)

View file

@ -379,11 +379,6 @@ Umi.UI.Settings = (function() {
title: 'Disable Old Theme System',
type: 'checkbox',
},
{
name: 'tmpSkipDomainPopUpThing',
title: 'Skip domain pop up thing',
type: 'checkbox',
},
{
title: 'You are an idiot!',
type: 'button',

View file

@ -2,8 +2,6 @@
#include ui/menus.js
Umi.UI.Uploads = (function() {
return {
create: function(fileName) {
const uploadHistory = Umi.UI.Menus.Get('uploads');

View file

@ -4,12 +4,12 @@ Umi.User = function(userId, userName, userColour, userPerms) {
const userIdInt = parseInt(userId);
const setName = function(name) {
const setName = name => {
userName = (name || '').toString().replace('&lt;', '<').replace('&gt;', '>');
};
setName(userName);
const setColour = function(colour) {
const setColour = colour => {
userColour = (colour || 'inherit').toString();
};
setColour(userColour);
@ -33,34 +33,34 @@ Umi.User = function(userId, userName, userColour, userPerms) {
let avatarTime = Date.now();
return {
getId: function() { return userId; },
getIdInt: function() { return userIdInt; },
getId: () => userId,
getIdInt: () => userIdInt,
getName: function() { return userName; },
getName: () => userName,
setName: setName,
getColour: function() { return userColour; },
getColour: () => userColour,
setColour: setColour,
setPermissions: setPerms,
getRank: function() { return userRank; },
isCurrentUser: function() { return Umi.User.currentUser && Umi.User.currentUser.userId === userId; },
canBan: function() { return canBan; },
canSilence: function() { return canBan; },
canCreateChannel: function() { return canCreateChannel; },
canSetNickName: function() { return canSetNickName; },
getAvatarTime: function() { return avatarTime; },
bumpAvatarTime: function() { avatarTime = Date.now(); },
getRank: () => userRank,
isCurrentUser: () => Umi.User.currentUser && Umi.User.currentUser.userId === userId,
canBan: () => canBan,
canSilence: () => canBan,
canCreateChannel: () => canCreateChannel,
canSetNickName: () => canSetNickName,
getAvatarTime: () => avatarTime,
bumpAvatarTime: () => { avatarTime = Date.now(); },
isBot: function() { return userId === '-1'; },
isBot: () => userId === '-1',
};
};
Umi.User.currentUser = undefined;
Umi.User.hasCurrentUser = function() { return Umi.User.currentUser !== undefined; };
Umi.User.getCurrentUser = function() { return Umi.User.currentUser; };
Umi.User.setCurrentUser = function(user) { Umi.User.currentUser = user; };
Umi.User.isCurrentUser = function(user) {
return Umi.User.currentUser !== undefined
&& (Umi.User.currentUser === user || Umi.User.currentUser.getId() === user.getId());
};
Umi.User.hasCurrentUser = () => Umi.User.currentUser !== undefined;
Umi.User.getCurrentUser = () => Umi.User.currentUser;
Umi.User.setCurrentUser = user => { Umi.User.currentUser = user; };
Umi.User.isCurrentUser = user => user !== null && typeof user === 'object' && typeof user.getId === 'function'
&& Umi.User.currentUser !== null && typeof Umi.User.currentUser === 'object'
&& typeof Umi.User.currentUser.getId === 'function'
&& (Umi.User.currentUser === user || Umi.User.currentUser.getId() === user.getId());