@@ -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