@@ -2,40 +2,55 @@ import Component from '@ember/component';
22import { inject as service } from '@ember/service' ;
33import { get , set } from '@ember/object' ;
44import { alias } from '@ember/object/computed' ;
5+ import RSVP from 'rsvp' ;
56
67export default Component . extend ( {
78 classNames : [ 'user-list-item' ] ,
89 tagName : 'li' ,
9- showApprove : false ,
10- showDeny : false ,
1110
1211 flashMessages : service ( ) ,
1312
1413 projectUser : null ,
14+ showRoleModal : false ,
1515 user : null ,
1616
1717 project : alias ( 'projectUser.project' ) ,
1818
1919 actions : {
2020 approve ( projectUser ) {
21- set ( projectUser , 'role' , 'contributor' ) ;
22- return projectUser . save ( ) . then ( ( ) => {
23- this . _flashSuccess ( 'Membership approved' ) ;
24- } ) ;
21+ let confirmed = window . confirm ( 'Are you sure you want to approve their membership?' ) ;
22+ if ( confirmed ) {
23+ set ( projectUser , 'role' , 'contributor' ) ;
24+ return projectUser . save ( ) . then ( ( ) => {
25+ this . _flashSuccess ( 'Membership approved' ) ;
26+ } ) ;
27+ } else {
28+ return RSVP . reject ( ) ;
29+ }
2530 } ,
2631
27- deny ( projectUser ) {
28- return projectUser . destroyRecord ( ) . then ( ( ) => {
29- this . _flashSuccess ( 'Membership denied' ) ;
30- } ) ;
31- } ,
32+ changeRole ( projectUser , role ) {
33+ let currentRole = get ( projectUser , 'role' ) ;
34+ if ( role === currentRole ) {
35+ set ( this , 'showRoleModal' , false ) ;
36+ return RSVP . resolve ( ) ;
37+ }
3238
33- showApprove ( ) {
34- set ( this , 'showApprove' , true ) ;
39+ set ( projectUser , 'role' , role ) ;
40+ return projectUser . save ( ) . then ( ( ) => {
41+ this . _flashSuccess ( `Role changed to ${ role } ` ) ;
42+ } ) ;
3543 } ,
3644
37- showDeny ( ) {
38- set ( this , 'showDeny' , true ) ;
45+ deny ( projectUser ) {
46+ let confirmed = window . confirm ( 'Are you sure you want to deny their membership?' ) ;
47+ if ( confirmed ) {
48+ return projectUser . destroyRecord ( ) . then ( ( ) => {
49+ this . _flashSuccess ( 'Membership denied' ) ;
50+ } ) ;
51+ } else {
52+ return RSVP . reject ( ) ;
53+ }
3954 }
4055 } ,
4156
0 commit comments