Skip to content

Commit 3d00578

Browse files
dvanwinkledrew-gross
authored andcommitted
Fixes #495: Improving Audience conditions for Push (#524)
1 parent ecf572b commit 3d00578

File tree

2 files changed

+25
-6
lines changed

2 files changed

+25
-6
lines changed

src/components/DateTimeEntry/DateTimeEntry.react.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ export default class DateTimeEntry extends React.Component {
6868
let date = new Date(this.state.value);
6969
if (isNaN(date.getTime())) {
7070
this.setState({ value: this.props.value.toISOString() });
71-
} else {
71+
} else if (!this.state.value.toLowerCase().endsWith('z')) {
7272
let utc = new Date(Date.UTC(
7373
date.getFullYear(),
7474
date.getMonth(),
@@ -79,6 +79,8 @@ export default class DateTimeEntry extends React.Component {
7979
date.getMilliseconds()
8080
));
8181
this.props.onChange(utc);
82+
} else {
83+
this.props.onChange(date);
8284
}
8385
}
8486

src/components/PushAudienceDialog/InstallationCondition.react.js

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import Field from 'components/Field/Field.react';
1313
import Label from 'components/Label/Label.react';
1414
import { List } from 'immutable';
1515
import Option from 'components/Dropdown/Option.react';
16+
import Parse from 'parse';
1617
import React from 'react';
1718
import ReactDOM from 'react-dom';
1819
import styles from 'components/PushAudienceDialog/InstallationCondition.scss';
@@ -30,18 +31,34 @@ let setFocus = (input) => {
3031
}
3132
}
3233

33-
function compareValue(type, value, onChangeCompareTo) {
34+
function compareValue(info, value, onChangeCompareTo) {
35+
let type = info.type;
3436
switch (type) {
3537
case null:
3638
return <div className={styles.empty}>-</div>;
3739
case 'String':
38-
return <TextInput placeholder='value' value={value} onChange={(value) => onChangeCompareTo(value)} ref={setFocus}/>;
40+
return <TextInput placeholder='value' value={value} onChange={(_value) => onChangeCompareTo(_value)} ref={setFocus}/>;
41+
case 'Pointer':
42+
return <TextInput
43+
placeholder='value'
44+
value={value.objectId || ''}
45+
onChange={(_value) => {
46+
let obj = new Parse.Object(info.targetClass);
47+
obj.id = _value;
48+
onChangeCompareTo(Parse._encode(obj));
49+
}}
50+
ref={setFocus} />
3951
case 'Boolean':
40-
return <Dropdown value={value ? 'True' : 'False'} options={['True', 'False']} onChange={(val) => onChangeCompareTo(val === 'True')} />;
52+
return <Dropdown value={value ? 'True' : 'False'} options={['True', 'False']} onChange={(_value) => onChangeCompareTo(_value === 'True')} />;
4153
case 'Number':
4254
return <TextInput placeholder='value' className={styles.conditionValue} value={value} onChange={(_value) => onChangeCompareTo(validateNumeric(_value) ? Number(_value) : Number(value))} ref={setFocus}/>;
4355
case 'Date':
44-
return <DateTimeEntry fixed={true} className={styles.date} value={value} onChange={onChangeCompareTo} />;
56+
return <DateTimeEntry
57+
fixed={true}
58+
className={styles.date}
59+
value={Parse._decode('date', value)}
60+
onChange={(_value) => onChangeCompareTo(Parse._encode(_value))}
61+
ref={setFocus} />
4562
}
4663
}
4764

@@ -91,7 +108,7 @@ export default class InstallationCondition extends React.Component {
91108
</Dropdown>
92109
</div>
93110
<div className={[styles.conditionInput, styles.valueInput].join(' ')}>
94-
{compareValue(this.props.compareInfo.type, this.props.compareTo, this.props.onChangeCompareTo)}
111+
{compareValue(this.props.compareInfo, this.props.compareTo, this.props.onChangeCompareTo)}
95112
</div>
96113
</div>
97114
);

0 commit comments

Comments
 (0)