@@ -15,8 +15,9 @@ import React, { Component } from "react";
15
15
import { Image } from "react-invenio-forms" ;
16
16
import { Grid , Item , Table } from "semantic-ui-react" ;
17
17
18
+ import { MembershipRequestsContext } from "../../api/membershipRequests/MembershipRequestsContextProvider" ;
18
19
import { RoleDropdown } from "../components/dropdowns" ;
19
- import { formattedTime } from "../utils" ;
20
+ import { buildRequest , formattedTime } from "../utils" ;
20
21
21
22
export class MembershipRequestsResultItem extends Component {
22
23
constructor ( props ) {
@@ -25,6 +26,8 @@ export class MembershipRequestsResultItem extends Component {
25
26
this . state = { membershipRequest : result } ;
26
27
}
27
28
29
+ static contextType = MembershipRequestsContext ;
30
+
28
31
update = ( data , value ) => {
29
32
const { membershipRequest } = this . state ;
30
33
this . setState ( { membershipRequest : { ...membershipRequest , ...{ role : value } } } ) ;
@@ -39,13 +42,23 @@ export class MembershipRequestsResultItem extends Component {
39
42
} = this . props ;
40
43
41
44
const {
42
- membershipRequest : { member, request } ,
45
+ membershipRequest : { member } ,
43
46
membershipRequest,
44
47
} = this . state ;
45
- // TODO: Decision flow
46
- // const { api: membershipRequestsApi } = this.context;
47
- const rolesCanAssignByType = rolesCanAssign [ member . type ] ;
48
- const membershipRequestExpiration = formattedTime ( request . expires_at ) ;
48
+ console . log ( "********************" ) ;
49
+ console . log ( "membershipRequest" ) ;
50
+ console . dir ( membershipRequest ) ;
51
+ console . log ( "********************" ) ;
52
+
53
+ const request = buildRequest ( membershipRequest , [ "accept" , "decline" ] ) ;
54
+ console . log ( "********************" ) ;
55
+ console . log ( "request" ) ;
56
+ console . dir ( request ) ;
57
+ console . log ( "********************" ) ;
58
+
59
+ const { api : membershipRequestsApi } = this . context ;
60
+ const roles = rolesCanAssign [ member . type ] ;
61
+ const expiration = formattedTime ( request . expires_at ) ;
49
62
return (
50
63
< Table . Row className = "community-member-item" >
51
64
< Table . Cell >
@@ -73,17 +86,16 @@ export class MembershipRequestsResultItem extends Component {
73
86
< RequestStatus status = { request . status } />
74
87
</ Table . Cell >
75
88
< Table . Cell
76
- aria-label = { i18next . t ( "Expires" ) + " " + membershipRequestExpiration }
89
+ aria-label = { i18next . t ( "Expires" ) + " " + expiration }
77
90
data-label = { i18next . t ( "Expires" ) }
78
91
>
79
- { membershipRequestExpiration }
92
+ { expiration }
80
93
</ Table . Cell >
81
94
< Table . Cell data-label = { i18next . t ( "Role" ) } >
82
95
< RoleDropdown
83
- roles = { rolesCanAssignByType }
96
+ roles = { roles }
97
+ action = { membershipRequestsApi . updateRole }
84
98
successCallback = { this . update }
85
- // TODO: Decision flow
86
- // action={membershipRequestsApi.updateRole}
87
99
disabled = { ! membershipRequest . permissions . can_update_role }
88
100
currentValue = { membershipRequest . role }
89
101
resource = { membershipRequest }
0 commit comments