This commit is contained in:
ntr committed 2022-09-03 15:03:16 +10:00
1 parent cf01670ee6
commit 0bf75d7faa
7 files changed
+30 -28

No files matched your search

+17
View File
@@ -0,0 +1,17 @@
const actions = store => ({
setUser: function setUser(state, user) {
return { user };
},
setOffers: function setOffers(state, offers) {
return { offers };
},
logout: async function logout(store, e) {
await http.postLogout();
route('/login');
return { user: null };
},
});
export default actions;
+1 -1
View File
@@ -2,7 +2,7 @@ import { h } from 'preact';
import { ExternalLink, Check } from 'react-feather';
import { useState } from 'preact/hooks';
import actions from '../actions';
import http from '../http';
export default function Offer(offer) {
const { want: { data: details } } = offer;
+1 -1
View File
@@ -2,7 +2,7 @@ import { h } from 'preact';
import { Square, CheckSquare } from 'react-feather';
import { useState, useReducer } from 'preact/hooks';
import actions from '../actions';
import http from '../http';
function Item(item, state, dispatch) {
const icon = state.checkedIds.includes(item.id)
+1 -1
View File
@@ -3,7 +3,7 @@ import { route } from 'preact-router';
import { connect } from 'unistore/preact'
import http from './../http';
import { actions } from './../store';
import { actions } from './../actions';
const Header = ({ user, logout }) => {
+1 -1
View File
@@ -4,7 +4,7 @@ import { route } from 'preact-router';
import { connect } from 'unistore/preact'
import http from './../http';
import { actions } from './../store';
import { actions } from './../actions';
import Offer from './../components/offer';
+7 -5
View File
@@ -4,7 +4,7 @@ import { useState, useEffect, useRef } from 'preact/hooks';
import { connect } from 'unistore/preact'
import http from './../http';
import { actions } from './../store';
import { actions } from './../actions';
const Login = ({ setUser, mode }) => {
const [email, setEmail] = useState('')
@@ -15,13 +15,15 @@ const Login = ({ setUser, mode }) => {
async function postLogin() {
const [error, user] = await http.postLogin(email, password);
if (error) return setError(error);
setUser(user, '/offers');
route('/');
setUser(user);
}
async function postRegister() {
const [error, user] = await http.postRegister(email, password);
if (error) return setError(error);
setUser(user, '/search');
route('/search');
setUser(user);
}
function handleSubmit(e) {
@@ -50,11 +52,11 @@ const Login = ({ setUser, mode }) => {
</div>
<div class="item">
<label for="password">password</label>
<input type="password" name="password" id="password" value={password} required onInput={(e) => setConfirmPassword((e.target as HTMLInputElement).value)} />
<input type="password" name="password" id="password" value={password} required onInput={(e) => setPassword((e.target as HTMLInputElement).value)} />
</div>
<div class="item">
<label for="password">confirm password</label>
<input type="password" name="password" id="password" value={password} required onInput={(e) => setConfirmPassword((e.target as HTMLInputElement).value)} />
<input type="password" name="password" id="password" value={confirmPassword} required onInput={(e) => setConfirmPassword((e.target as HTMLInputElement).value)} />
</div>
<div class="item">
<input type="submit" value="register" onClick={handleSubmit} />
+2 -19
View File
@@ -3,27 +3,10 @@ import unistore from 'unistore'
import http from './http';
export function createStore() {
export default function createStore() {
return unistore({
bundles: [],
offers: [],
user: null,
});
}
export const actions = store => ({
setUser: async function setUser(state, user, dest) {
route(dest);
return { user };
},
setOffers: async function setOffers(state, offers) {
return { offers };
},
logout: async function logout(store, e) {
await http.postLogout();
route('/login');
return { user: null };
},
});
};