diff --git a/app/src/react/components/about/index.scss b/app/src/react/components/about/index.scss
index af60dbc..b302cfa 100644
--- a/app/src/react/components/about/index.scss
+++ b/app/src/react/components/about/index.scss
@@ -4,10 +4,9 @@
.about {
// height: 100%;
overflow: auto;
- max-height: calc(100% - 3em);
+ max-height: 100%;
padding: 1em;
font-family: var(--thick-title-font-family);
- scrollbar-width: none;
text-align: center;
word-break: break-word;
strong {
@@ -72,6 +71,7 @@
font-family: var(--title-font-family);
font-size: 2em;
justify-content: space-around;
+ margin: auto;
max-width: 10em;
padding: 0.5em;
text-align: center;
diff --git a/app/src/react/components/app/index.jsx b/app/src/react/components/app/index.jsx
index 079d7c5..086211e 100644
--- a/app/src/react/components/app/index.jsx
+++ b/app/src/react/components/app/index.jsx
@@ -13,44 +13,55 @@ import Home from 'components/home';
import Left from 'components/left';
import Right from 'components/right';
+import useBreakpoints from 'hooks/useBreakpoints';
+
+import pointerEvents from './pointer-events';
+
const App = () => {
const ref = useRef(null);
- const isAnonymous = false && useSelector(isAnonymousSelector);
+ const {desktop} = useBreakpoints();
+ const isAnonymous = useSelector(isAnonymousSelector);
return (
{
const max = Math.min(window.innerWidth - (4 * 16), 25 * 16);
- const offset = parseInt(ref.current.style.left || '0px', 10);
+ const offset = parseInt(ref.current.style.left || '-400px', 10);
if ('right' === type) {
- ref.current.style.left = offset > -(max / 2) ? `-${max}px` : '0';
+ ref.current.style.left = offset > -(400 + (max / 2)) ? `-${400 + max}px` : '-400px';
}
else {
- ref.current.style.left = offset < (max / 2) ? `${max}px` : '0';
+ ref.current.style.left = offset > -max ? '-400px' : `-${400 - max}px`;
}
}}
/>
-
- {/* {!isAnonymous &&
} */}
-
-
-
-
-
- {/* {!isAnonymous &&
} */}
+
+ {!isAnonymous &&
}
+
+
+
+
+
+
+
+ {!isAnonymous &&
}
);
diff --git a/app/src/react/components/app/index.scss b/app/src/react/components/app/index.scss
index 4876adc..16f01ec 100644
--- a/app/src/react/components/app/index.scss
+++ b/app/src/react/components/app/index.scss
@@ -1,16 +1,35 @@
+@import 'scss/breakpoints.scss';
@import 'scss/colors.scss';
.app {
background-image: url('~images/transpaper.png');
width: 100vw;
height: 100vh;
+ overflow-x: hidden;
// overflow: hidden;
position: relative;
}
.app__center {
display: flex;
- max-height: calc(100% - 3em);
+ height: calc(100% - 3em);
+ position: relative;
+ left: -25rem;
+ &:not(.moving) {
+ transition: 0.2s left;
+ }
+ width: calc(100% + 50rem);
+ @include breakpoint(desktop) {
+ left: 0 !important;
+ width: 100%;
+ }
+}
+
+.main {
+ flex-grow: 1;
+ > * {
+ scrollbar-width: none;
+ }
}
.panes {
diff --git a/app/src/react/components/chat/pointer-events.js b/app/src/react/components/app/pointer-events.js
similarity index 71%
rename from app/src/react/components/chat/pointer-events.js
rename to app/src/react/components/app/pointer-events.js
index 61d5492..1bf1c2d 100644
--- a/app/src/react/components/chat/pointer-events.js
+++ b/app/src/react/components/app/pointer-events.js
@@ -1,11 +1,11 @@
/* eslint-disable no-param-reassign */
-export default function chatPointerEvents(desktop, ref) {
+export default function pointerEvents(desktop, ref) {
let lastY;
let origin;
const abstract = {
down: ({pageX, pageY}) => {
if (ref.current) {
- const left = parseInt(ref.current.style.left || 0, 10);
+ const left = parseInt(ref.current.style.left || -400, 10);
const windowWidth = window.innerWidth;
const max = Math.min(windowWidth - (4 * 16), 25 * 16);
lastY = pageY;
@@ -14,9 +14,9 @@ export default function chatPointerEvents(desktop, ref) {
point: pageX,
};
if (
- (left === -max && pageX < windowWidth - max)
- || (left === max && pageX > max)) {
- ref.current.style.left = '0';
+ (left === -(400 + max) && pageX < windowWidth - max)
+ || (left === 400 - max && pageX > max)) {
+ ref.current.style.left = '-400px';
}
}
},
@@ -32,20 +32,21 @@ export default function chatPointerEvents(desktop, ref) {
}
const snapped = Math.abs(offset) < 64 ? 0 : offset;
const max = Math.min(window.innerWidth - (4 * 16), 25 * 16);
- ref.current.style.left = `${Math.max(-max, Math.min(max, snapped))}px`;
+ ref.current.style.left = `${Math.min(0, Math.max(-(400 + max), snapped))}px`;
}
},
up: () => {
const left = parseInt(ref.current.style.left, 10);
const max = Math.min(window.innerWidth - (4 * 16), 25 * 16);
- if (left >= max / 2) {
- ref.current.style.left = `${max}px`;
+
+ if (left >= (-400 + (max / 2))) {
+ ref.current.style.left = `${400 - max}px`;
}
- else if (left <= -max / 2) {
- ref.current.style.left = `${-max}px`;
+ else if (left <= (-400 - (max / 2))) {
+ ref.current.style.left = `${-(400 + max)}px`;
}
else {
- ref.current.style.left = '0';
+ ref.current.style.left = '-400px';
}
origin = undefined;
ref.current.classList.remove('moving');
diff --git a/app/src/react/components/chat/index.jsx b/app/src/react/components/chat/index.jsx
index e3f18d8..ca59981 100644
--- a/app/src/react/components/chat/index.jsx
+++ b/app/src/react/components/chat/index.jsx
@@ -13,7 +13,7 @@ import useBreakpoints from 'hooks/useBreakpoints';
import useChannel from 'hooks/useChannel';
import Center from './center';
-import pointerEvents from './pointer-events';
+// import pointerEvents from './pointer-events';
export default function Chat() {
const dispatch = useDispatch();
@@ -55,8 +55,6 @@ export default function Chat() {
return (
{/*
addeeId === id).length;
const unreadChannel = useSelector(unreadChannelSelector);
diff --git a/app/src/react/components/home/index.scss b/app/src/react/components/home/index.scss
index bd928e3..9c71eea 100644
--- a/app/src/react/components/home/index.scss
+++ b/app/src/react/components/home/index.scss
@@ -3,7 +3,7 @@
.home {
margin: auto;
- max-height: calc(100% - 3em);
+ max-height: 100%;
// max-width: map-get($breakpoints, desktop);
overflow: auto;
}
@@ -32,6 +32,8 @@
}
.home__bar {
+ margin: auto;
+ max-width: 20em;
padding: 2em 0;
}
diff --git a/app/src/react/components/left/index.scss b/app/src/react/components/left/index.scss
index 2d42f3a..cecd2b4 100644
--- a/app/src/react/components/left/index.scss
+++ b/app/src/react/components/left/index.scss
@@ -6,9 +6,9 @@
flex-shrink: 0;
height: 100%;
top: 0;
- transform: translateX(-100%);
+ // transform: translateX(-100%);
transition: width 0.2s;
- width: 25em;
+ width: 25rem;
@include breakpoint(desktop) {
transform: none;
}
diff --git a/app/src/react/components/right/index.jsx b/app/src/react/components/right/index.jsx
index f2b48c6..d5e5ca9 100644
--- a/app/src/react/components/right/index.jsx
+++ b/app/src/react/components/right/index.jsx
@@ -47,7 +47,7 @@ export default function ChatRight() {
{0 === activeIndex && channelUsers.length > 0 && }
{1 === activeIndex && blockedIds.length > 0 && }
diff --git a/app/src/react/components/right/index.scss b/app/src/react/components/right/index.scss
index d74efae..9bda3ec 100644
--- a/app/src/react/components/right/index.scss
+++ b/app/src/react/components/right/index.scss
@@ -4,8 +4,9 @@
.right {
background-color: #373737;
flex-shrink: 0;
- right: 0;
- transform: translateX(100%);
+ // height: 100%;
+ // right: 0;
+ // transform: translateX(100%);
transition: 0.2s width;
@include breakpoint(desktop) {
transform: none;
@@ -13,7 +14,7 @@
}
.right.open {
- width: 25em;
+ width: 25rem;
}
.right__buttons {
diff --git a/app/yarn.lock b/app/yarn.lock
index 2e0c115..5ee7e9e 100644
--- a/app/yarn.lock
+++ b/app/yarn.lock
@@ -921,8 +921,8 @@
"@latus/core@1.0.0", "@latus/core@^1.0.0":
version "1.0.0"
- resolved "https://npm.i12e.cha0s.io/@latus%2fcore/-/core-1.0.0.tgz#01f0121bb91579b8bd1bdadff8dabf8673f44a88"
- integrity sha512-NK7DuYoVIXmFEjazKi44vW335DFcE1pr62DXf9+9bZ8iyexptFBdfX/5sYFMGaeJlN/opFp0qFx94VPdVCsChg==
+ resolved "https://npm.i12e.cha0s.io/@latus%2fcore/-/core-1.0.0.tgz#d367fd4c96ad8cf1dff7031c509f104c1c5491da"
+ integrity sha512-M2zoI45c+pTVyS9Ea/qARswwhnzdhK1pvRLgG4W9V3/HJhsFtG+XsRVKCltXH5CVIodaVLGI0qTScjbIQkBNPw==
dependencies:
debug "4.3.1"
js-yaml "3.14.0"
@@ -930,8 +930,8 @@
"@latus/db@^1.0.0":
version "1.0.0"
- resolved "https://npm.i12e.cha0s.io/@latus%2fdb/-/db-1.0.0.tgz#67ad19b87e2881b3b948712a2fab8025071c7941"
- integrity sha512-WxYmYVfAej+WDnxUKyl+zNNlwEJJUXJpzfbYFkqtpkn7Is/cADwan9ua0FUujOLkfA8sRllEPRxTcn+ZnEydTA==
+ resolved "https://npm.i12e.cha0s.io/@latus%2fdb/-/db-1.0.0.tgz#1ee299b0689f22186ea709df69c69b0d39ab2b9b"
+ integrity sha512-Ir7Q8VGCiSsDNSbfnvCzmfUGH6PfnMIyCoNfylj8+PmHEKqdjIYJ7W1MF2h3WP/1oNDiegoO+21PnGJd7bL2rA==
dependencies:
"@latus/core" "^1.0.0"
debug "4.3.1"
@@ -941,8 +941,8 @@
"@latus/governor@^1.0.0":
version "1.0.0"
- resolved "https://npm.i12e.cha0s.io/@latus%2fgovernor/-/governor-1.0.0.tgz#7cbcc3ae04aaf7d26e78a94dd3306a3dc16b18a1"
- integrity sha512-gZB30h/HgvyS0PWtAJaW4OpnlRJUpMcyDzDnCmuWi+zdr8EWYq7cwUOpWhD4TKIIviFYuEwvhaRzmg3c8rQM8A==
+ resolved "https://npm.i12e.cha0s.io/@latus%2fgovernor/-/governor-1.0.0.tgz#be19783cba2e84a900a0168c51ff0a55f4a78b3b"
+ integrity sha512-yH4f59TIT0yRPyKRclKXMOt0PpkHVyjHjYnMfiOUqYuX90pq264JSDn8bF4mv0J7hI6/CmgLLiOsYOvSN5w3JA==
dependencies:
"@latus/redis" "^1.0.0"
"@latus/socket" "^1.0.0"
@@ -951,8 +951,8 @@
"@latus/http@^1.0.0":
version "1.0.0"
- resolved "https://npm.i12e.cha0s.io/@latus%2fhttp/-/http-1.0.0.tgz#ed08c6c85112ce4d66a652f5810a220a66a0a1b3"
- integrity sha512-1qSwE1vX0bg4nFJFrPjFZT1PepDuDT9RIZRt3SzpvT5OsmE+6LjxtqTbMsgpljnHuhwjWPzDnR6An7sUhR6A0A==
+ resolved "https://npm.i12e.cha0s.io/@latus%2fhttp/-/http-1.0.0.tgz#1e582cdc3040308bde4b30341e98c37273c6904f"
+ integrity sha512-VDFbQXUj5HCvtDoIHywPZgfLcXcB6ML12zWlxYNVeo2nYTxADdWXxBVJuzA2+VFqZiDtILeFFfrI7KV10OKgBg==
dependencies:
"@latus/core" "1.0.0"
"@neutrinojs/web" "^9.1.0"
@@ -968,8 +968,8 @@
"@latus/react@^1.0.0":
version "1.0.0"
- resolved "https://npm.i12e.cha0s.io/@latus%2freact/-/react-1.0.0.tgz#965c0ca868f4fd83195e26f99bfd82d03ec8f361"
- integrity sha512-ffWESmTinN2vxfxkpznysF+uU1rWSbB3AtvS2XWLzPg/X3A5yRql4J2602SHIy/xXhLWzHueDZ5pzxDiGe0S8g==
+ resolved "https://npm.i12e.cha0s.io/@latus%2freact/-/react-1.0.0.tgz#4074b37bf9f149689c93e8a6a41f2f3fe8545894"
+ integrity sha512-vktm5f4DU1/ffTBijkq8ZlPp2S1aahlcyBu6H66rdW3K9uTSGLke+a4pd4YWJ54aIJFsNNaL1mAJYbu8laeCuQ==
dependencies:
"@neutrinojs/react" "^9.4.0"
debug "4.3.1"
@@ -982,27 +982,27 @@
"@latus/redis@^1.0.0":
version "1.0.0"
- resolved "https://npm.i12e.cha0s.io/@latus%2fredis/-/redis-1.0.0.tgz#b54c176a02481f8f43ea383d2df665c1aa365885"
- integrity sha512-HSQPI57K7RZMGfehsMSRvvAY+paJ4gxeRNpcQhMhLmWH8ShartGSR7/vPEJjpdvGcSgucYb97KM913oAgDDG5g==
+ resolved "https://npm.i12e.cha0s.io/@latus%2fredis/-/redis-1.0.0.tgz#f69b03746486bca8b232f7764859c2f95e4aaaa0"
+ integrity sha512-rtnPZG9xjEfdke08SgrrIg+cgqvc3izKhSJZMNZBhWH1ihTn6WKt4ZGMVovSNKGUlI80z+TB/ExiLpu81r8vig==
dependencies:
connect-redis "^5.0.0"
debug "4.3.1"
express-session "^1.17.1"
mkdirp "^1.0.4"
redis "^3.0.2"
- socket.io-redis "^6.0.1"
+ socket.io-redis "5.3.0"
"@latus/repl@^1.0.0":
version "1.0.0"
- resolved "https://npm.i12e.cha0s.io/@latus%2frepl/-/repl-1.0.0.tgz#3a1c84af5980e4b6ac863eee3cd8ea467aade742"
- integrity sha512-cpi0hCYq2MNQ3gbxt7hbHuxeBbaeZItr5LS/EuVv+dUt/cZ3poJekxX5VGvT1hhfAfb03vCku9X1mAhhd0VVyQ==
+ resolved "https://npm.i12e.cha0s.io/@latus%2frepl/-/repl-1.0.0.tgz#493b075991d8370cf9592a4f75bcd4db1cf259e7"
+ integrity sha512-hfqcepLf7RKgprE/gK0klOkgZk8xFb5TNS5dZX1iBlKjxO6ynMzxLdmSmGu50BnaF2FgWgAWSUZQbpxEWcdUgg==
dependencies:
debug "4.3.1"
"@latus/socket@^1.0.0":
version "1.0.0"
- resolved "https://npm.i12e.cha0s.io/@latus%2fsocket/-/socket-1.0.0.tgz#75e95bb522fbec52d94d72ae4a33dab75e47cb5e"
- integrity sha512-UGmRxwkL1ZKT3oZUnQlsJSJOKAlJeaxdVS0VDTo1HBMneYP0HwoMeh7cJ7wWzV34Uj7/FhG6PWwwTz3wFz/c3A==
+ resolved "https://npm.i12e.cha0s.io/@latus%2fsocket/-/socket-1.0.0.tgz#77e5d405ee144dfa8f4e48e8f64611a50d2aa033"
+ integrity sha512-WIWQoNRmUuWG4cqw/mRcA5MgIhK+Zj4eKtqPHREE0RH5el8uQOHYxozV0kT6lVkm+iZLYcRW4YoRndfANocb4g==
dependencies:
"@latus/core" "^1.0.0"
"@latus/http" "^1.0.0"
@@ -1015,8 +1015,8 @@
"@latus/user@^1.0.0":
version "1.0.0"
- resolved "https://npm.i12e.cha0s.io/@latus%2fuser/-/user-1.0.0.tgz#5eb8f3af070dbea295b3bcb35c136c4dfee7097a"
- integrity sha512-O1EY81t6HIjCzhaiLwJ6D9dDWTFHZhBasuwZUxcb8d85BcCGoFRPjL39Jflm3LO150QT9rjJxAmIgKWyJIHiLA==
+ resolved "https://npm.i12e.cha0s.io/@latus%2fuser/-/user-1.0.0.tgz#0c53a8300eb8a61b006bb7812c9eabf5649c0c71"
+ integrity sha512-lXV8Il1gspqmj3H9y23osW2fcHnv/QhJWKTui7ZXQV9b8RI5p8pQhiW6wDNJ38A53j1fjsUEq8HclJIczAl8Hg==
dependencies:
"@latus/db" "^1.0.0"
"@latus/socket" "^1.0.0"
@@ -1194,8 +1194,8 @@
"@reddichat/chat@^1.0.0":
version "1.0.0"
- resolved "https://npm.i12e.cha0s.io/@reddichat%2fchat/-/chat-1.0.0.tgz#007e210ef28021c4c5846f7d686ba83ad875f248"
- integrity sha512-WR32qj/o/TwFcGiqFxIGzxwjRTfReTUneu5aPkGwxVomUg/fjUhxhfEVgtEFR/FMPooF6eB+yr2YlCneHHvtcg==
+ resolved "https://npm.i12e.cha0s.io/@reddichat%2fchat/-/chat-1.0.0.tgz#0a8c639d8dfcdba6a3c29a0380f0851f219972a0"
+ integrity sha512-baB8+iXfJqY7Xfk9wS0OfQhEWsXocdz8XLEG1JEKCi9zIS6GwDOFjx/eMVvNm3lbFo0G7kO5xxcdFjfLX6B8ZQ==
dependencies:
"@latus/core" "^1.0.0"
"@latus/db" "^1.0.0"
@@ -1232,8 +1232,8 @@
"@reddichat/user@^1.0.0":
version "1.0.0"
- resolved "https://npm.i12e.cha0s.io/@reddichat%2fuser/-/user-1.0.0.tgz#1bdb0ddd155a53e028178e99b3b594f09b28aeda"
- integrity sha512-Xvzs3JTrfPbJI5RYfChB2f7CSizL8ACTJ7KTpKKG0qd7kDn5nScnvTpdlsVg71pLS5bTR9tdKPNCTxSZTPcp7w==
+ resolved "https://npm.i12e.cha0s.io/@reddichat%2fuser/-/user-1.0.0.tgz#f9847b3e7763938bc288760167196bd2f872aec3"
+ integrity sha512-c4cP3zGjNIPkOdZ0NbNEJ9dP4xzbTHxA8UnY5qmyvEGuFF2MDEs2hQeMsFfIyXFqViBDkSEgsAOc1QqQpnN4JQ==
dependencies:
"@latus/db" "^1.0.0"
"@latus/socket" "^1.0.0"
@@ -1291,9 +1291,9 @@
integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==
"@types/node@*":
- version "14.14.10"
- resolved "https://npm.i12e.cha0s.io/@types%2fnode/-/node-14.14.10.tgz#5958a82e41863cfc71f2307b3748e3491ba03785"
- integrity sha512-J32dgx2hw8vXrSbu4ZlVhn1Nm3GbeCFNw2FWL8S5QKucHGY0cyNwjdQdO+KMBZ4wpmC7KhLCiNsdk1RFRIYUQQ==
+ version "14.14.11"
+ resolved "https://npm.i12e.cha0s.io/@types%2fnode/-/node-14.14.11.tgz#fc25a4248a5e8d0837019b1d170146d07334abe0"
+ integrity sha512-BJ97wAUuU3NUiUCp44xzUFquQEvnk1wu7q4CMEUYKJWjdkr0YWYDsm4RFtAvxYsNjLsKcrFt6RvK8r+mnzMbEQ==
"@types/source-list-map@*":
version "0.1.2"
@@ -3173,6 +3173,11 @@ dottie@^2.0.0:
resolved "https://npm.i12e.cha0s.io/dottie/-/dottie-2.0.2.tgz#cc91c0726ce3a054ebf11c55fbc92a7f266dd154"
integrity sha512-fmrwR04lsniq/uSr8yikThDTrM7epXHBAAjH9TbeH3rEA8tdCO7mRzB9hdmdGyJCxF8KERo9CITcm3kGuoyMhg==
+double-ended-queue@^2.1.0-0:
+ version "2.1.0-0"
+ resolved "https://npm.i12e.cha0s.io/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz#103d3527fd31528f40188130c841efdd78264e5c"
+ integrity sha1-ED01J/0xUo9AGIEwyEHv3XgmTlw=
+
duplexify@^3.4.2, duplexify@^3.6.0:
version "3.7.1"
resolved "https://npm.i12e.cha0s.io/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309"
@@ -3197,9 +3202,9 @@ ee-first@1.1.1:
integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
electron-to-chromium@^1.3.612:
- version "1.3.619"
- resolved "https://npm.i12e.cha0s.io/electron-to-chromium/-/electron-to-chromium-1.3.619.tgz#4dc529ae802f5c9c31e7eea830144340539b62b4"
- integrity sha512-WFGatwtk7Fw0QcKCZzfGD72hvbcXV8kLY8aFuj0Ip0QRnOtyLYMsc+wXbSjb2w4lk1gcAeNU1/lQ20A+tvuypQ==
+ version "1.3.620"
+ resolved "https://npm.i12e.cha0s.io/electron-to-chromium/-/electron-to-chromium-1.3.620.tgz#c6f36a7e398acc9d7d12743a6f58d536fbc58700"
+ integrity sha512-YbgWXUR2Mu+Fp6rm3GZ5YJdNo8SgZKLUTNSl2PNvdOcM8OIz07jRJnRkIaV9vdszFv9UUuGChh19w9qSuoLJgw==
elliptic@^6.5.3:
version "6.5.3"
@@ -4744,9 +4749,9 @@ inherits@2.0.3:
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
ini@^1.3.4, ini@^1.3.5, ini@~1.3.0:
- version "1.3.5"
- resolved "https://npm.i12e.cha0s.io/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
- integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==
+ version "1.3.6"
+ resolved "https://npm.i12e.cha0s.io/ini/-/ini-1.3.6.tgz#f1c46a2a93a253e7b3905115e74d527cd23061a1"
+ integrity sha512-IZUoxEjNjubzrmvzZU4lKP7OnYmX72XRl3sqkfJhBKweKi5rnGi5+IUdlj/H1M+Ip5JQ1WzaDMOBRY90Ajc5jg==
inquirer@^7.0.0:
version "7.3.3"
@@ -5761,11 +5766,16 @@ ms@2.1.1:
resolved "https://npm.i12e.cha0s.io/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
-ms@2.1.2, ms@^2.1.1:
+ms@2.1.2:
version "2.1.2"
resolved "https://npm.i12e.cha0s.io/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+ms@^2.1.1:
+ version "2.1.3"
+ resolved "https://npm.i12e.cha0s.io/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
+ integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
+
multicast-dns-service-types@^1.1.0:
version "1.1.0"
resolved "https://npm.i12e.cha0s.io/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901"
@@ -6031,10 +6041,10 @@ normalize-url@1.9.1:
query-string "^4.1.0"
sort-keys "^1.0.0"
-notepack.io@~2.2.0:
- version "2.2.0"
- resolved "https://npm.i12e.cha0s.io/notepack.io/-/notepack.io-2.2.0.tgz#d7ea71d1cb90094f88c6f3c8d84277c2d0cd101c"
- integrity sha512-9b5w3t5VSH6ZPosoYnyDONnUTF8o0UkBw7JLA6eBlYJWyGT1Q3vQa8Hmuj1/X6RYvHjjygBDgw6fJhe0JEojfw==
+notepack.io@~2.1.2:
+ version "2.1.3"
+ resolved "https://npm.i12e.cha0s.io/notepack.io/-/notepack.io-2.1.3.tgz#cc904045c751b1a27b2dcfd838d81d0bf3ced923"
+ integrity sha512-AgSt+cP5XMooho1Ppn8NB3FFaVWefV+qZoZncYTUSch2GAEwlYLcIIbT5YVkMlFeNHnfwOvc4HDlbvrB5BRxXA==
npm-bundled@^1.0.1:
version "1.1.1"
@@ -7151,7 +7161,7 @@ redent@^1.0.0:
indent-string "^2.1.0"
strip-indent "^1.0.1"
-redis-commands@^1.5.0:
+redis-commands@^1.2.0, redis-commands@^1.5.0:
version "1.6.0"
resolved "https://npm.i12e.cha0s.io/redis-commands/-/redis-commands-1.6.0.tgz#36d4ca42ae9ed29815cdb30ad9f97982eba1ce23"
integrity sha512-2jnZ0IkjZxvguITjFTrGiLyzQZcTvaw8DAaCXxZq/dsHXz7KfMQ3OUJy7Tz9vnRtZRVz6VRCPDvruvU8Ts44wQ==
@@ -7161,6 +7171,11 @@ redis-errors@^1.0.0, redis-errors@^1.2.0:
resolved "https://npm.i12e.cha0s.io/redis-errors/-/redis-errors-1.2.0.tgz#eb62d2adb15e4eaf4610c04afe1529384250abad"
integrity sha1-62LSrbFeTq9GEMBK/hUpOEJQq60=
+redis-parser@^2.6.0:
+ version "2.6.0"
+ resolved "https://npm.i12e.cha0s.io/redis-parser/-/redis-parser-2.6.0.tgz#52ed09dacac108f1a631c07e9b69941e7a19504b"
+ integrity sha1-Uu0J2srBCPGmMcB+m2mUHnoZUEs=
+
redis-parser@^3.0.0:
version "3.0.0"
resolved "https://npm.i12e.cha0s.io/redis-parser/-/redis-parser-3.0.0.tgz#b66d828cdcafe6b4b8a428a7def4c6bcac31c8b4"
@@ -7168,7 +7183,7 @@ redis-parser@^3.0.0:
dependencies:
redis-errors "^1.0.0"
-redis@^3.0.0, redis@^3.0.2:
+redis@^3.0.2:
version "3.0.2"
resolved "https://npm.i12e.cha0s.io/redis/-/redis-3.0.2.tgz#bd47067b8a4a3e6a2e556e57f71cc82c7360150a"
integrity sha512-PNhLCrjU6vKVuMOyFu7oSP296mwBkcE6lrAjruBYG5LgdSqtRBoVQIylrMyVZD/lkF24RSNNatzvYag6HRBHjQ==
@@ -7178,6 +7193,15 @@ redis@^3.0.0, redis@^3.0.2:
redis-errors "^1.2.0"
redis-parser "^3.0.0"
+redis@~2.8.0:
+ version "2.8.0"
+ resolved "https://npm.i12e.cha0s.io/redis/-/redis-2.8.0.tgz#202288e3f58c49f6079d97af7a10e1303ae14b02"
+ integrity sha512-M1OkonEQwtRmZv4tEWF2VgpG0JWJ8Fv1PhlgT5+B+uNq2cA3Rt1Yt/ryoR+vQNOQcIEgdCdfH0jr3bDpihAw1A==
+ dependencies:
+ double-ended-queue "^2.1.0-0"
+ redis-commands "^1.2.0"
+ redis-parser "^2.6.0"
+
redux-thunk@^2.3.0:
version "2.3.0"
resolved "https://npm.i12e.cha0s.io/redux-thunk/-/redux-thunk-2.3.0.tgz#51c2c19a185ed5187aaa9a2d08b666d0d6467622"
@@ -7802,11 +7826,6 @@ socket.io-adapter@~1.1.0:
resolved "https://npm.i12e.cha0s.io/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz#ab3f0d6f66b8fc7fca3959ab5991f82221789be9"
integrity sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g==
-socket.io-adapter@~2.0.0:
- version "2.0.3"
- resolved "https://npm.i12e.cha0s.io/socket.io-adapter/-/socket.io-adapter-2.0.3.tgz#372b7cde7a535fc4f4f0d5ac7f73952a3062d438"
- integrity sha512-2wo4EXgxOGSFueqvHAdnmi5JLZzWqMArjuP4nqC26AtLh5PoCPsaRbRdah2xhcwTAMooZfjYiNVNkkmmSMaxOQ==
-
socket.io-client@2.3.0:
version "2.3.0"
resolved "https://npm.i12e.cha0s.io/socket.io-client/-/socket.io-client-2.3.0.tgz#14d5ba2e00b9bcd145ae443ab96b3f86cbcc1bb4"
@@ -7845,15 +7864,15 @@ socket.io-parser@~3.4.0:
debug "~4.1.0"
isarray "2.0.1"
-socket.io-redis@^6.0.1:
- version "6.0.1"
- resolved "https://npm.i12e.cha0s.io/socket.io-redis/-/socket.io-redis-6.0.1.tgz#0d6c82bd6e0dcbb0d70dcbc57f0c3269e6e53594"
- integrity sha512-RvxAhVSsDQJfDUEXUER9MvsE99XZurXkAVORjym1FTReqWlvmPVjyAnrpLlH3RxvPFdFa9sN4kmaTtyzjOtRRA==
+socket.io-redis@5.3.0:
+ version "5.3.0"
+ resolved "https://npm.i12e.cha0s.io/socket.io-redis/-/socket.io-redis-5.3.0.tgz#d01716d2813c25b76918cd704e1cf540b2f3985a"
+ integrity sha512-w2EqyGdw3oXzd1MY4sVIg2rYVooDI5sSwel8DOt38sTgaJuuXQSC847x38FvLSn2Rt6MAcdLhiNw/FqjzeC4RQ==
dependencies:
debug "~4.1.0"
- notepack.io "~2.2.0"
- redis "^3.0.0"
- socket.io-adapter "~2.0.0"
+ notepack.io "~2.1.2"
+ redis "~2.8.0"
+ socket.io-adapter "~1.1.0"
uid2 "0.0.3"
socket.io@2.3.0:
@@ -8726,9 +8745,9 @@ uuid@^3.3.2, uuid@^3.4.0:
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
uuid@^8.1.0, uuid@^8.3.1:
- version "8.3.1"
- resolved "https://npm.i12e.cha0s.io/uuid/-/uuid-8.3.1.tgz#2ba2e6ca000da60fce5a196954ab241131e05a31"
- integrity sha512-FOmRr+FmWEIG8uhZv6C2bTgEVXsHk08kE7mPlrBbEe+c3r9pjceVPgupIfNIhc4yx55H69OXANrUaSuu9eInKg==
+ version "8.3.2"
+ resolved "https://npm.i12e.cha0s.io/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
+ integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
v8-compile-cache@^2.0.3, v8-compile-cache@^2.1.1:
version "2.2.0"
diff --git a/packages/chat/src/index.js b/packages/chat/src/index.js
index 2639de9..671235a 100644
--- a/packages/chat/src/index.js
+++ b/packages/chat/src/index.js
@@ -1,3 +1,5 @@
+import {parseChatChannel} from '@reddichat/core';
+
import Join from './packets/join.server';
import Leave from './packets/leave.server';
import Message from './packets/message.server';
@@ -9,13 +11,17 @@ export * from './state';
export default {
hooks: {
+ '@latus/http/request': () => (req, res, next) => {
+ req.channel = parseChatChannel(req.url);
+ next();
+ },
'@latus/socket/packets': (latus) => ({
Join: Join(latus),
Leave: Leave(latus),
Message: Message(latus),
}),
- '@latus/socket/connect': async (socket) => {
- const channels = await channelsToHydrate(socket.req);
+ '@latus/socket/connect': async (socket, latus) => {
+ const channels = await channelsToHydrate(socket.req, latus);
const joins = channels
.filter(({type}) => 'r' === type)
.map((channel) => joinChannel(channel, socket));
diff --git a/packages/chat/src/state.js b/packages/chat/src/state.js
index 515eb18..3334cd5 100644
--- a/packages/chat/src/state.js
+++ b/packages/chat/src/state.js
@@ -6,22 +6,15 @@ import {createClient, keys} from '@latus/redis';
import {channelIsAnonymous, parseChannel, renderChannel} from '@reddichat/core';
export const channelUserCounts = async (req, channel) => {
- const clients = promisify(req.adapter.clients.bind(req.adapter));
- const rendered = renderChannel(channel);
- const socketKeys = await clients([rendered]);
- const customRequest = promisify(req.adapter.customRequest.bind(req.adapter));
- // eslint-disable-next-line no-nested-ternary
+ const ids = await req.clients([renderChannel(channel)]);
+ if (0 === ids.length) {
+ return [];
+ }
const replies = channelIsAnonymous(channel)
- ? (
- socketKeys.length > 0
- ? [socketKeys.reduce((r, socketKey) => ({...r, [socketKey]: 0}), {})]
- : []
- )
- : await customRequest({type: 'socketUsers', payload: socketKeys});
- const socketUsers = replies.reduce((r, m) => ({...r, ...m}), {});
- return 0 === socketKeys.length
- ? []
- : Object.values(socketUsers).reduce((r, uid) => ({...r, [uid]: 1 + (r[uid] || 0)}), {});
+ ? [ids.reduce((r, socketKey) => ({...r, [socketKey]: 0}), {})]
+ : await req.intercom('@reddichat/user/users', ids);
+ const uids = replies.reduce((r, m) => ({...r, ...m}), {});
+ return Object.values(uids).reduce((r, uid) => ({...r, [uid]: 1 + (r[uid] || 0)}), {});
};
export const channelUsers = async (req, channel) => (
@@ -56,7 +49,7 @@ export const channelState = async (req, latus, channel) => {
export const channelsToHydrate = async (req, latus) => {
const {channel, user} = req;
if (!user) {
- return channel ? [renderChannel(channel)] : [];
+ return channel ? [channel] : [];
}
const {User} = ModelMap(latus);
const channels = await Promise.all(
diff --git a/packages/user/src/index.js b/packages/user/src/index.js
index daaece3..0f3249a 100644
--- a/packages/user/src/index.js
+++ b/packages/user/src/index.js
@@ -6,6 +6,10 @@ import passport from 'passport';
import {Strategy as RedditStrategy} from 'passport-reddit';
import UserReddichat from './models/user-reddichat';
+import BlockModel from './models/block';
+import FavoriteModel from './models/favorite';
+import FriendshipModel from './models/friendship';
+
import AddFavorite from './packets/add-favorite.server';
import AddFriend from './packets/add-friend.server';
import Block from './packets/block.server';
@@ -51,6 +55,11 @@ export default {
},
));
},
+ '@latus/db/models': () => ({
+ Block: BlockModel,
+ Favorite: FavoriteModel,
+ Friendship: FriendshipModel,
+ }),
'@latus/db/models.decorate': (Models, latus) => ({
...Models,
User: UserReddichat(Models.User, latus),
diff --git a/packages/user/src/models/user-reddichat.js b/packages/user/src/models/user-reddichat.js
index eb8abec..d3cb780 100644
--- a/packages/user/src/models/user-reddichat.js
+++ b/packages/user/src/models/user-reddichat.js
@@ -20,7 +20,7 @@ export default (User, latus) => class UserReddichat extends User {
return (await this.getFavorites()).map(({channel}) => parseChannel(channel));
}
- async friendship() {
+ async friendships() {
const {Friendship} = ModelMap(latus);
const friendship = await Friendship.findAll({
where: {
diff --git a/packages/user/src/state/user.js b/packages/user/src/state/user.js
index 356e29b..1bc3677 100644
--- a/packages/user/src/state/user.js
+++ b/packages/user/src/state/user.js
@@ -3,18 +3,19 @@ import {renderChannel} from '@reddichat/core';
import {channelsToHydrate} from '@reddichat/chat';
export default async (req, latus) => {
- const {/* channel, */user} = req;
+ const {channel, user} = req;
if (!user) {
return undefined;
}
const toHydrate = await channelsToHydrate(req, latus);
return {
- // activeChannel: channel ? renderChannel(channel) : '',
+ activeChannel: channel ? renderChannel(channel) : '',
blocked: user ? await user.blocks() : [],
favorites: (await user.favorites()).map(renderChannel),
friendship: user ? await user.friendships() : [],
id: user.id,
redditUsername: user.redditUsername,
recent: toHydrate.filter(({type}) => 'r' === type).map(({name}) => name),
+ unread: {},
};
};