Skip to content

Commit ddbf79a

Browse files
Rachel RoppoloRachel Roppolo
authored andcommitted
UIDS-24 Add initial state and clear messages
1 parent d9ac16c commit ddbf79a

File tree

3 files changed

+28
-2
lines changed

3 files changed

+28
-2
lines changed

spec/Flash/useFlash.test.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,4 +66,23 @@ describe('useFlash', () => {
6666
})),
6767
);
6868
});
69+
70+
test('can clear all messages', () => {
71+
const messages = ['A new', 'message'].map(
72+
(msg, i) => ({
73+
id: i,
74+
type: MessageTypes.SUCCESS,
75+
message: msg,
76+
}),
77+
);
78+
79+
const { result } = renderHook(() => useFlash(messages));
80+
expect(result.current.messages.length).toEqual(2);
81+
82+
act(() => {
83+
result.current.clearMessages();
84+
});
85+
86+
expect(result.current.messages.length).toEqual(0);
87+
});
6988
});

src/Flash/index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1+
import Flash from './Flash';
12
import { MessageTypes } from './FlashMessage';
23
import useFlash from './useFlash';
34
import withFlash, { withFlashPropTypes } from './withFlash';
45

56
export {
7+
Flash,
68
MessageTypes,
79
useFlash,
810
withFlash,

src/Flash/useFlash.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,12 @@ const createMessage = (messageType, messageText) => ({
77
type: messageType,
88
});
99

10-
const useFlash = () => {
11-
const [messages, setMessages] = useState([]);
10+
const useFlash = (initialMessages = []) => {
11+
const [messages, setMessages] = useState(initialMessages);
12+
13+
const clearMessages = () => {
14+
setMessages([]);
15+
};
1216

1317
const setMessage = (messageType, messageText) => {
1418
setMessages([
@@ -25,6 +29,7 @@ const useFlash = () => {
2529

2630
return {
2731
messages,
32+
clearMessages,
2833
setMessage,
2934
dismissMessage,
3035
};

0 commit comments

Comments
 (0)