@@ -2,40 +2,55 @@ import Component from '@ember/component';
2
2
import { inject as service } from '@ember/service' ;
3
3
import { get , set } from '@ember/object' ;
4
4
import { alias } from '@ember/object/computed' ;
5
+ import RSVP from 'rsvp' ;
5
6
6
7
export default Component . extend ( {
7
8
classNames : [ 'user-list-item' ] ,
8
9
tagName : 'li' ,
9
- showApprove : false ,
10
- showDeny : false ,
11
10
12
11
flashMessages : service ( ) ,
13
12
14
13
projectUser : null ,
14
+ showRoleModal : false ,
15
15
user : null ,
16
16
17
17
project : alias ( 'projectUser.project' ) ,
18
18
19
19
actions : {
20
20
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
+ }
25
30
} ,
26
31
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
+ }
32
38
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
+ } ) ;
35
43
} ,
36
44
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
+ }
39
54
}
40
55
} ,
41
56
0 commit comments