mirror of
https://git.sr.ht/~ashkeel/strimertul
synced 2024-09-20 02:00:49 +00:00
Allow giving points to arbitrary users
This commit is contained in:
parent
622abb0b5c
commit
e47e94f4ed
2 changed files with 21 additions and 2 deletions
|
@ -230,7 +230,7 @@ export const setUserPoints = createAsyncThunk(
|
||||||
const { api } = getState() as { api: APIState };
|
const { api } = getState() as { api: APIState };
|
||||||
const entry: LoyaltyPointsEntry = { points };
|
const entry: LoyaltyPointsEntry = { points };
|
||||||
if (relative) {
|
if (relative) {
|
||||||
entry.points += api.loyalty.users[user].points ?? 0;
|
entry.points += api.loyalty.users[user]?.points ?? 0;
|
||||||
}
|
}
|
||||||
return api.client.putJSON(loyaltyPointsPrefix + user, entry);
|
return api.client.putJSON(loyaltyPointsPrefix + user, entry);
|
||||||
},
|
},
|
||||||
|
|
|
@ -40,7 +40,7 @@ function UserModal({
|
||||||
|
|
||||||
const [user, setUser] = useState(initialData.user);
|
const [user, setUser] = useState(initialData.user);
|
||||||
const [entry, setEntry] = useState(initialData.entry);
|
const [entry, setEntry] = useState(initialData.entry);
|
||||||
const userEditable = initialData.user !== '';
|
const userEditable = initialData.user === '';
|
||||||
|
|
||||||
const nameValid = user !== '';
|
const nameValid = user !== '';
|
||||||
const pointsValid = Number.isFinite(entry.points);
|
const pointsValid = Number.isFinite(entry.points);
|
||||||
|
@ -133,6 +133,7 @@ export default function LoyaltyUserListPage(
|
||||||
const [page, setPage] = useState(0);
|
const [page, setPage] = useState(0);
|
||||||
const [usernameFilter, setUsernameFilter] = useState('');
|
const [usernameFilter, setUsernameFilter] = useState('');
|
||||||
const [editModal, setEditModal] = useState<UserData>(null);
|
const [editModal, setEditModal] = useState<UserData>(null);
|
||||||
|
const [createModal, setCreateModal] = useState<boolean>(false);
|
||||||
|
|
||||||
const changeSort = (key: 'user' | 'points') => {
|
const changeSort = (key: 'user' | 'points') => {
|
||||||
if (sorting.key === key) {
|
if (sorting.key === key) {
|
||||||
|
@ -180,9 +181,22 @@ export default function LoyaltyUserListPage(
|
||||||
dispatch(setUserPoints({ user, points: entry.points, relative: false }));
|
dispatch(setUserPoints({ user, points: entry.points, relative: false }));
|
||||||
setEditModal(null);
|
setEditModal(null);
|
||||||
};
|
};
|
||||||
|
const assignPoints = ({ entry, user }: UserData) => {
|
||||||
|
console.log(user, entry);
|
||||||
|
dispatch(setUserPoints({ user, points: entry.points, relative: true }));
|
||||||
|
setCreateModal(false);
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
<UserModal
|
||||||
|
title="Give points to user"
|
||||||
|
confirmText="Give"
|
||||||
|
active={createModal}
|
||||||
|
onConfirm={(entry) => assignPoints(entry)}
|
||||||
|
initialData={{ user: '', entry: { points: 0 } }}
|
||||||
|
onClose={() => setCreateModal(false)}
|
||||||
|
/>
|
||||||
{editModal ? (
|
{editModal ? (
|
||||||
<UserModal
|
<UserModal
|
||||||
title="Modify balance"
|
title="Modify balance"
|
||||||
|
@ -207,6 +221,11 @@ export default function LoyaltyUserListPage(
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
<div className="field">
|
||||||
|
<a className="button is-small" onClick={() => setCreateModal(true)}>
|
||||||
|
Give points to user
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
<PageList
|
<PageList
|
||||||
current={page + 1}
|
current={page + 1}
|
||||||
min={1}
|
min={1}
|
||||||
|
|
Loading…
Reference in a new issue