fix fetching login routes stuff

This commit is contained in:
ntr committed 2022-10-04 22:41:49 +11:00
1 parent 77428aa7de
commit 015a2fd66c
6 files changed
+28 -15

No files matched your search

+1 -5
View File
@@ -1,14 +1,10 @@
# TODO # TODO
acp page needs to fetch offers list status stepper
want added -> wants added
spamming discogs and generating offers on every want add
push offers push offers
cover off admin routes and commands cover off admin routes and commands
listen / notify listen / notify
on offers on offers
notify admins notify admins
+6 -1
View File
@@ -73,7 +73,7 @@ export default function createRpc(log: Log, pg: Pg, user: User, ws, discogs, off
if (!user) { if (!user) {
log.debug('anon rpc call'); log.debug('anon rpc call');
return [RpcMessageType.Pong, []]; return [RpcMessageType.WhoDis, []];
} }
if (msgType !== RpcMessageType.Ping) log.info({ msgType, params }, 'rpc message'); if (msgType !== RpcMessageType.Ping) log.info({ msgType, params }, 'rpc message');
@@ -137,6 +137,9 @@ export enum RpcMessageType {
Ping = 'Ping', Ping = 'Ping',
Pong = 'Pong', Pong = 'Pong',
// points out user is anon
WhoDis = 'WhoDis',
Bundles = 'Bundles', Bundles = 'Bundles',
Offers = 'Offers', Offers = 'Offers',
List = 'List', List = 'List',
@@ -156,6 +159,7 @@ export enum RpcMessageType {
type ErrorMessage = [RpcMessageType.Error, string]; type ErrorMessage = [RpcMessageType.Error, string];
type PongMessage = [RpcMessageType.Pong, []]; type PongMessage = [RpcMessageType.Pong, []];
type PingMessage = [RpcMessageType.Ping, []]; type PingMessage = [RpcMessageType.Ping, []];
type WhoDisMessage = [RpcMessageType.WhoDis, []];
type UserMessage = [RpcMessageType.User, User]; type UserMessage = [RpcMessageType.User, User];
type WantsMessage = [RpcMessageType.Wants, Want[]]; type WantsMessage = [RpcMessageType.Wants, Want[]];
type OffersMessage = [RpcMessageType.Offers, Offer[]]; type OffersMessage = [RpcMessageType.Offers, Offer[]];
@@ -167,6 +171,7 @@ type AcpOffersMessage = [RpcMessageType.AcpOffers, Offer[]];
export type RpcMessage = export type RpcMessage =
PingMessage | PingMessage |
PongMessage | PongMessage |
WhoDisMessage |
UserMessage | UserMessage |
+8 -3
View File
@@ -16,7 +16,6 @@ import List from './routes/list';
import Info from './routes/info'; import Info from './routes/info';
import store, { userState, wsState, State } from './store' import store, { userState, wsState, State } from './store'
const Main = () => { const Main = () => {
const dispatch = useDispatch() const dispatch = useDispatch()
@@ -28,10 +27,16 @@ const Main = () => {
dispatch(wsState.actions.set(ws)); dispatch(wsState.actions.set(ws));
}, [dispatch]) }, [dispatch])
function routeChange(e) {
const { ws } = store.getState();
if (!ws) return null;
if (e.url === '/acp') return ws.sendAcpOffers();
}
return ( return (
<main id="app"> <main id="app">
<Nav /> <Nav />
<Router> <Router onChange={routeChange}>
<Route path="/" component={Offers} /> <Route path="/" component={Offers} />
<Route path="/login" component={Login} mode="login" /> <Route path="/login" component={Login} mode="login" />
<Route path="/register" component={Login} mode="register" /> <Route path="/register" component={Login} mode="register" />
@@ -40,7 +45,7 @@ const Main = () => {
<Route path="/info" component={Info} /> <Route path="/info" component={Info} />
{/* ACP */} {/* ACP */}
<Route path="/offers/acp" component={Acp} /> <Route path="/acp" component={Acp} />
</Router> </Router>
</main> </main>
); );
+9 -6
View File
@@ -1,10 +1,10 @@
import { h } from 'preact'; import { h } from 'preact';
import { route } from 'preact-router'; import { route } from 'preact-router';
import { useEffect } from 'preact/hooks'; import { useEffect } from 'preact/hooks';
import { useSelector, useDispatch } from 'react-redux' import { useSelector } from 'react-redux'
import http from './../http'; import http from './../http';
import { State, userState } from './../store'; import { State } from './../store';
function showAdmin(user) { function showAdmin(user) {
return user && user.email === 'ntr@mnml.gg'; return user && user.email === 'ntr@mnml.gg';
@@ -13,12 +13,15 @@ function showAdmin(user) {
const DEFAULT_ROUTE = '/'; const DEFAULT_ROUTE = '/';
const Nav = () => { const Nav = () => {
const dispatch = useDispatch()
const user = useSelector((state: State) => state.user); const user = useSelector((state: State) => state.user);
useEffect(() => { useEffect(() => {
if (!user) return route('/login'); if (!user) {
return route(DEFAULT_ROUTE) route('/login');
return;
}
route(DEFAULT_ROUTE)
return;
}, [user]) }, [user])
async function logoutClick(e) { async function logoutClick(e) {
@@ -44,7 +47,7 @@ const Nav = () => {
const adminNav = () => ( const adminNav = () => (
<nav> <nav>
<a href='/offers/acp'>Offers ACP</a> <a href='/acp'>Offers ACP</a>
</nav> </nav>
) )
+3
View File
@@ -9,6 +9,7 @@ import { State, userState } from './../store';
const Login = ({ mode }) => { const Login = ({ mode }) => {
const dispatch = useDispatch() const dispatch = useDispatch()
const user = useSelector((state: State) => state.user); const user = useSelector((state: State) => state.user);
const ws = useSelector((state: State) => state.ws);
const [email, setEmail] = useState('') const [email, setEmail] = useState('')
const [password, setPassword] = useState(''); const [password, setPassword] = useState('');
@@ -20,6 +21,8 @@ const Login = ({ mode }) => {
if (error) return setError(error); if (error) return setError(error);
route('/'); route('/');
dispatch(userState.actions.set(user)); dispatch(userState.actions.set(user));
// reconnect ws to get logged in methods
ws.connect();
} }
async function postRegister() { async function postRegister() {
+1
View File
@@ -150,6 +150,7 @@ button, [type=button], [type=reset], [type=submit] {
font-family: var(--secondary-font-family); font-family: var(--secondary-font-family);
font-size: var(--small-font-size); font-size: var(--small-font-size);
font-weight: bold;
text-transform: uppercase; text-transform: uppercase;
&:hover { &:hover {