Skip to content

Commit 14a5b4e

Browse files
committed
Merge branch 'master' into browse-as-parse-user
* master: fixed master key not being passed in when saving file in global config (parse-community#1581) Fix pointer CLPs (parse-community#1556) Clear state.data when setting relation to column type mismatch. (parse-community#1564)
2 parents 4b24fb8 + 57953df commit 14a5b4e

File tree

3 files changed

+44
-24
lines changed

3 files changed

+44
-24
lines changed

src/components/PermissionsDialog/PermissionsDialog.react.js

Lines changed: 41 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -534,7 +534,7 @@ export default class PermissionsDialog extends React.Component {
534534
// hide suggestions to avoid ugly footer overlap
535535
this.refEntry.current.setHidden(hidden);
536536
// also show indicator when input is not visible
537-
this.refScrollHint.current.toggleActive(hidden);
537+
// this.refScrollHint.current.toggleActive(hidden);
538538
};
539539

540540
this.observer = new IntersectionObserver(callback, {
@@ -589,13 +589,15 @@ export default class PermissionsDialog extends React.Component {
589589
perms.delete = perms.delete || Map();
590590
perms.addField = perms.addField || Map();
591591

592-
(pointerPermsSubset.get = perms.get.pointerFields || []),
593-
(pointerPermsSubset.find = perms.find.pointerFields || []),
594-
(pointerPermsSubset.count = perms.count.pointerFields || []),
595-
(pointerPermsSubset.create = perms.create.pointerFields || []),
596-
(pointerPermsSubset.update = perms.update.pointerFields || []),
597-
(pointerPermsSubset.delete = perms.delete.pointerFields || []),
598-
(pointerPermsSubset.addField = perms.addField.pointerFields || []);
592+
// The double check is necessary because the permissions object seems to be empty when accessing the CLP section
593+
// if the class was recently created.
594+
(pointerPermsSubset.get = permissions.get && permissions.get.pointerFields || []),
595+
(pointerPermsSubset.find = permissions.find && permissions.find.pointerFields || []),
596+
(pointerPermsSubset.count = permissions.count && permissions.count.pointerFields || []),
597+
(pointerPermsSubset.create = permissions.create && permissions.create.pointerFields || []),
598+
(pointerPermsSubset.update = permissions.update && permissions.update.pointerFields || []),
599+
(pointerPermsSubset.delete = permissions.delete && permissions.delete.pointerFields || []),
600+
(pointerPermsSubset.addField = permissions.addField && permissions.addField.pointerFields || []);
599601
}
600602

601603
let pointerPerms = {};
@@ -764,6 +766,7 @@ export default class PermissionsDialog extends React.Component {
764766
let nextKeys;
765767
let nextEntryTypes;
766768
let nextPerms = this.state.perms;
769+
let nextPointerPerms = this.state.pointerPerms;
767770

768771
if (next.user || next.role) {
769772
id = next.user ? next.user.id : next.role.id;
@@ -791,17 +794,32 @@ export default class PermissionsDialog extends React.Component {
791794
}
792795

793796
// create new permissions
794-
if (this.props.advanced) {
795-
nextPerms = nextPerms.setIn(['get', key], true);
796-
nextPerms = nextPerms.setIn(['find', key], true);
797-
nextPerms = nextPerms.setIn(['count', key], true);
798-
nextPerms = nextPerms.setIn(['create', key], true);
799-
nextPerms = nextPerms.setIn(['update', key], true);
800-
nextPerms = nextPerms.setIn(['delete', key], true);
801-
nextPerms = nextPerms.setIn(['addField', key], true);
797+
if (next.pointer) {
798+
if (this.props.advanced) {
799+
nextPointerPerms = nextPointerPerms.setIn([entry, 'get'], true)
800+
nextPointerPerms = nextPointerPerms.setIn([entry, 'find'], true)
801+
nextPointerPerms = nextPointerPerms.setIn([entry, 'count'], true)
802+
nextPointerPerms = nextPointerPerms.setIn([entry, 'create'], true)
803+
nextPointerPerms = nextPointerPerms.setIn([entry, 'update'], true)
804+
nextPointerPerms = nextPointerPerms.setIn([entry, 'delete'], true)
805+
nextPointerPerms = nextPointerPerms.setIn([entry, 'addField'], true)
806+
} else {
807+
nextPointerPerms = nextPointerPerms.setIn([entry, 'read'], true)
808+
nextPointerPerms = nextPointerPerms.setIn([entry, 'write'], true)
809+
}
802810
} else {
803-
nextPerms = nextPerms.setIn(['read', key], true);
804-
nextPerms = nextPerms.setIn(['write', key], true);
811+
if (this.props.advanced) {
812+
nextPerms = nextPerms.setIn(['get', key], true);
813+
nextPerms = nextPerms.setIn(['find', key], true);
814+
nextPerms = nextPerms.setIn(['count', key], true);
815+
nextPerms = nextPerms.setIn(['create', key], true);
816+
nextPerms = nextPerms.setIn(['update', key], true);
817+
nextPerms = nextPerms.setIn(['delete', key], true);
818+
nextPerms = nextPerms.setIn(['addField', key], true);
819+
} else {
820+
nextPerms = nextPerms.setIn(['read', key], true);
821+
nextPerms = nextPerms.setIn(['write', key], true);
822+
}
805823
}
806824

807825
nextKeys = this.state.newKeys.concat([key]);
@@ -810,6 +828,7 @@ export default class PermissionsDialog extends React.Component {
810828
return this.setState(
811829
{
812830
perms: nextPerms,
831+
pointerPerms: nextPointerPerms,
813832
newKeys: nextKeys,
814833
entryTypes: nextEntryTypes,
815834
newEntry: '',
@@ -911,7 +930,7 @@ export default class PermissionsDialog extends React.Component {
911930
return;
912931
}
913932
if (k === 'requiresAuthentication' && !v){
914-
// only acceppt requiresAuthentication with true
933+
// only acceppt requiresAuthentication with true
915934
return
916935
}
917936
if (v) {
@@ -964,7 +983,7 @@ export default class PermissionsDialog extends React.Component {
964983
// types is immutable.js Map
965984
const type = (types && types.get(key)) || {};
966985

967-
let pointer;
986+
let pointer = this.state.pointerPerms.has(key);
968987
let label = <span>{key}</span>;
969988

970989
if (type.user) {
@@ -996,7 +1015,7 @@ export default class PermissionsDialog extends React.Component {
9961015
</p>
9971016
</span>
9981017
);
999-
} else if (type.pointer) {
1018+
} else if (pointer) {
10001019
// get class info from schema
10011020
let { type, targetClass } = columns[key];
10021021

@@ -1238,7 +1257,7 @@ export default class PermissionsDialog extends React.Component {
12381257
)}
12391258
{this.props.advanced
12401259
? this.state.pointers.map(pointer =>
1241-
this.renderRow(pointer, true)
1260+
this.renderRow(pointer, this.state.columns)
12421261
)
12431262
: null}
12441263
{this.state.newKeys.map(key =>

src/dashboard/Data/Browser/Browser.react.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -528,6 +528,7 @@ class Browser extends DashboardView {
528528
setRelation(relation, filters) {
529529
this.setState({
530530
relation: relation,
531+
data: null,
531532
}, () => {
532533
let filterQueryString;
533534
if (filters && filters.size) {
@@ -971,7 +972,7 @@ class Browser extends DashboardView {
971972
onDialogToggle(opened){
972973
this.setState({showPermissionsDialog: opened});
973974
}
974-
975+
975976
renderContent() {
976977
let browser = null;
977978
let className = this.props.params.className;

src/dashboard/Data/Config/ConfigDialog.react.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ function numberValidator(onChange) {
4242

4343
function saveFile(onChange, file) {
4444
let value = new Parse.File(file.name, file);
45-
value.save().then(() => onChange(value));
45+
value.save({ useMasterKey: true }).then(() => onChange(value));
4646
}
4747

4848
const EDITORS = {

0 commit comments

Comments
 (0)