Fix useNotices implementation

This commit is contained in:
Amine Ben hammou
2020-02-24 19:16:37 +01:00
committed by Jack Kitterhing
parent c921bc6f71
commit 9e5acecbc0

View File

@@ -1,21 +1,24 @@
import React from 'react'; import React from 'react';
export default () => { export default () => {
const [items, setItems] = React.useState([]); const [state, setState] = React.useState({
const [nextId, setNextId] = React.useState(1); items: [],
nextId: 1,
const getNextId = React.useCallback(() => { });
setNextId((x) => x + 1);
return nextId;
}, [nextId]);
const add = React.useCallback((item) => { const add = React.useCallback((item) => {
setItems((xs) => [...xs, { ...item, id: item.id || getNextId() }]); setState(({ items, nextId }) => ({
}, [getNextId]); items: [...items, { ...item, id: item.id || nextId }],
nextId: item.id ? nextId : nextId + 1,
}));
}, [setState]);
const remove = React.useCallback((id) => { const remove = React.useCallback((id) => {
setItems((xs) => xs.filter((x) => x.id !== id)); setState(({ items, nextId }) => ({
}, []); items: items.filter((x) => x.id !== id),
nextId,
}));
}, [setState]);
const success = React.useCallback( const success = React.useCallback(
(content, props = {}) => add({ ...props, type: 'success', children: content }), (content, props = {}) => add({ ...props, type: 'success', children: content }),
@@ -35,6 +38,6 @@ export default () => {
); );
return { return {
items, success, info, warning, error, remove, items: state.items, success, info, warning, error, remove,
}; };
}; };