import React, { useState } from 'react';
import { useTranslation } from 'react-i18next';
import { useDispatch } from 'react-redux';
import { useModule, useUserPoints } from '../../lib/react-utils';
import { modules } from '../../store/api/reducer';
import { DataTable } from '../components/DataTable';
import {
Button,
Field,
InputBox,
PageContainer,
PageHeader,
PageTitle,
TabButton,
TabContainer,
TabContent,
TabList,
TextBlock,
} from '../theme';
import { TableCell, TableRow } from '../theme/table';
interface UserSortingOrder {
key: 'user' | 'points';
order: 'asc' | 'desc';
}
function RewardQueue() {
const { t } = useTranslation();
const [queue, setQueue] = useModule(modules.loyaltyRedeemQueue);
const dispatch = useDispatch();
// Big hack but this is required or refunds break
useUserPoints();
return <>>;
}
function UserList() {
const { t } = useTranslation();
const users = useUserPoints();
const dispatch = useDispatch();
const [config] = useModule(modules.loyaltyConfig);
const [usernameFilter, setUsernameFilter] = useState('');
const filtered = Object.entries(users ?? [])
.filter(([user]) => user.includes(usernameFilter))
.map(([username, data]) => ({
username,
...data,
}));
type UserEntry = typeof filtered[0];
type SortFn = (a: UserEntry, b: UserEntry) => number;
const sortfn = (key: keyof UserEntry): SortFn => {
switch (key) {
case 'username': {
return (a, b) => a.username.localeCompare(b.username);
}
case 'points': {
return (a: UserEntry, b: UserEntry) => a.points - b.points;
}
}
};
return (
<>
setUsernameFilter(e.target.value)}
/>
(
{username}
{points}
)}
/>
>
);
}
export default function LoyaltyQueuePage(): React.ReactElement {
const { t } = useTranslation();
return (
{t('pages.loyalty-queue.title')}
{t('pages.loyalty-queue.subtitle')}
{t('pages.loyalty-queue.queue-tab')}
{t('pages.loyalty-queue.users-tab')}
);
}