Skip to content

Commit 162fdd9

Browse files
mess-lelouchMusa Yassin-Fort
and
Musa Yassin-Fort
authored
Fix pointer CLPs (#1556)
* Fix pointer CLPs * Restore removed new lines * Add checks Co-authored-by: Musa Yassin-Fort <[email protected]>
1 parent db9f7e2 commit 162fdd9

File tree

1 file changed

+41
-22
lines changed

1 file changed

+41
-22
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 =>

0 commit comments

Comments
 (0)