diff --git a/webclient/src/Home.js b/webclient/src/Home.js
index 77ceeb9..f36afd0 100644
--- a/webclient/src/Home.js
+++ b/webclient/src/Home.js
@@ -1,9 +1,9 @@
import React, { useState, useEffect, useReducer } from 'react';
-import { Link } from 'react-router-dom';
+import { Link, useParams, useHistory } from 'react-router-dom';
import moment from 'moment-timezone';
import QRCode from 'react-qr-code';
import './light.css';
-import { Container, Divider, Grid, Header, Icon, Image, Message, Popup, Segment, Table } from 'semantic-ui-react';
+import { Button, Container, Divider, Grid, Header, Icon, Image, Message, Popup, Segment, Table } from 'semantic-ui-react';
import { statusColor, BasicTable, siteUrl, staticUrl, requester, isAdmin } from './utils.js';
import { LoginForm, SignupForm } from './LoginSignup.js';
import { AccountForm } from './Account.js';
@@ -13,6 +13,7 @@ import { PayPalSubscribeDeal } from './PayPal.js';
function MemberInfo(props) {
const user = props.user;
const member = user.member;
+ const history = useHistory();
const lastTrans = user.transactions?.slice(0,3);
const lastTrain = user.training?.sort((a, b) => a.session.datetime < b.session.datetime ? 1 : -1).slice(0,3);
@@ -20,6 +21,11 @@ function MemberInfo(props) {
const unpaidTraining = user.training?.filter(x => x.attendance_status === 'Waiting for payment');
+ const handleStorageButton = (e, id) => {
+ e.preventDefault();
+ history.push('/storage/' + id);
+ };
+
return (
{member.protocoin < 0 &&
@@ -57,6 +63,24 @@ function MemberInfo(props) {
Protocoin:
₱ {member.protocoin.toFixed(2)} [buy]
+
+ Shelf:
+
+ {user.storage.length ?
+ user.storage.map((x, i) =>
+
+ )
+ :
+ 'None'
+ }
+
+
Expiry:
{member.expire_date ? moment(member.expire_date).format('ll') : 'Unknown'}
diff --git a/webclient/src/Members.js b/webclient/src/Members.js
index a8fc10b..b594012 100644
--- a/webclient/src/Members.js
+++ b/webclient/src/Members.js
@@ -1,5 +1,5 @@
import React, { useState, useEffect, useReducer } from 'react';
-import { Link, useParams } from 'react-router-dom';
+import { Link, useParams, useHistory } from 'react-router-dom';
import './light.css';
import { Button, Container, Dropdown, Grid, Header, Icon, Image, Input, Item, Segment, Table } from 'semantic-ui-react';
import { statusColor, isAdmin, isInstructor, BasicTable, staticUrl, requester } from './utils.js';
@@ -99,6 +99,7 @@ export function Members(props) {
const [search, setSearch] = useState(searchCache);
const [controller, setController] = useState(false);
const { token, user } = props;
+ const history = useHistory();
const makeRequest = ({loadPage, q, sort_key}) => {
let pageNum = 0;
@@ -165,6 +166,11 @@ export function Members(props) {
doSearch(q);
};
+ const handleStorageButton = (e, id) => {
+ e.preventDefault();
+ history.push('/storage/' + id);
+ };
+
useEffect(() => {
if (!responseCache) {
doSort('recently_vetted');
@@ -243,7 +249,7 @@ export function Members(props) {
x.member.storage.map((x, i) =>