diff --git a/app/screens/interactive_dialog/interactive_dialog.js b/app/screens/interactive_dialog/interactive_dialog.js
index e4888ee7e6..a682c1648a 100644
--- a/app/screens/interactive_dialog/interactive_dialog.js
+++ b/app/screens/interactive_dialog/interactive_dialog.js
@@ -19,7 +19,7 @@ export default class InteractiveDialog extends PureComponent {
static propTypes = {
url: PropTypes.string.isRequired,
callbackId: PropTypes.string,
- elements: PropTypes.arrayOf(PropTypes.object).isRequired,
+ elements: PropTypes.arrayOf(PropTypes.object),
notifyOnCancel: PropTypes.bool,
state: PropTypes.string,
theme: PropTypes.object,
@@ -38,9 +38,11 @@ export default class InteractiveDialog extends PureComponent {
super(props);
const values = {};
- props.elements.forEach((e) => {
- values[e.name] = e.default || null;
- });
+ if (props.elements != null) {
+ props.elements.forEach((e) => {
+ values[e.name] = e.default || null;
+ });
+ }
this.state = {
values,
@@ -69,18 +71,21 @@ export default class InteractiveDialog extends PureComponent {
const {elements} = this.props;
const values = this.state.values;
const errors = {};
- elements.forEach((elem) => {
- const error = checkDialogElementForError(elem, values[elem.name]);
- if (error) {
- errors[elem.name] = (
-
- );
- }
- });
+
+ if (elements) {
+ elements.forEach((elem) => {
+ const error = checkDialogElementForError(elem, values[elem.name]);
+ if (error) {
+ errors[elem.name] = (
+
+ );
+ }
+ });
+ }
this.setState({errors});
@@ -152,7 +157,7 @@ export default class InteractiveDialog extends PureComponent {
- {elements.map((e) => {
+ {elements && elements.map((e) => {
return (
{
marginTop: 10,
},
};
-});
\ No newline at end of file
+});
diff --git a/app/screens/interactive_dialog/interactive_dialog.test.js b/app/screens/interactive_dialog/interactive_dialog.test.js
index 9030af5499..7de4974469 100644
--- a/app/screens/interactive_dialog/interactive_dialog.test.js
+++ b/app/screens/interactive_dialog/interactive_dialog.test.js
@@ -84,4 +84,26 @@ describe('InteractiveDialog', () => {
wrapper.instance().navigationButtonPressed({buttonId: 'close-dialog'});
expect(baseProps.actions.submitInteractiveDialog).not.toHaveBeenCalled();
});
+
+ test('should handle display with no elements', async () => {
+ baseProps.elements = null;
+
+ const wrapper = shallow(
+ ,
+ );
+
+ const dialog = {
+ url: baseProps.url,
+ callback_id: baseProps.callbackId,
+ state: baseProps.state,
+ submission: {},
+ };
+
+ wrapper.instance().handleSubmit();
+ expect(baseProps.actions.submitInteractiveDialog).toHaveBeenCalledTimes(1);
+ expect(baseProps.actions.submitInteractiveDialog).toHaveBeenCalledWith(dialog);
+ });
});