@@ -29,7 +29,7 @@ import ErrorIndicator from "../components/ErrorIndicator";
2929import SelectField from "../components/SelectField" ;
3030import { DateField } from "../components/DateField" ;
3131import EmailField from "../components/EmailField" ;
32- import { displayExpiryDate , futureDate } from "../utils/Date" ;
32+ import { deriveExpirationDate , displayExpiryDate , futureDate } from "../utils/Date" ;
3333import SwitchField from "../components/SwitchField" ;
3434import { InvitationRoleCard } from "../components/InvitationRoleCard" ;
3535import DOMPurify from "dompurify" ;
@@ -144,27 +144,26 @@ export const InvitationForm = () => {
144144 const initialRole = markedRoles . find ( role => role . value === location . state ) ;
145145 if ( initialRole ) {
146146 // See markAndFilterRoles - we are mixing up userRoles and roles
147- const defaultExpiryDays = initialRole . isUserRole ? initialRole . role . defaultExpiryDays : initialRole . defaultExpiryDays ;
148147 setSelectedRoles ( [ initialRole ] )
149148 setInvitation ( {
150149 ...invitation ,
151150 intendedAuthority : isGuest ? AUTHORITIES . GUEST : AUTHORITIES . INVITER ,
152151 enforceEmailEquality : initialRole . enforceEmailEquality ,
153152 eduIDOnly : initialRole . eduIDOnly ,
154- roleExpiryDate : futureDate ( defaultExpiryDays )
153+ roleExpiryDate : deriveExpirationDate ( initialRole . isUserRole ? initialRole . role : initialRole )
155154 } )
156155 setOriginalRoleId ( initialRole . isUserRole ? initialRole . role . id : initialRole . id ) ;
157156 } else {
158- let defaultExpiryDays = 366 ;
157+ let roleExpiryDate = futureDate ( 366 ) ;
159158 if ( markedRoles . length === 1 ) {
160159 const role = markedRoles [ 0 ]
161- defaultExpiryDays = role . isUserRole ? role . role . defaultExpiryDays : role . defaultExpiryDays ;
160+ roleExpiryDate = deriveExpirationDate ( role . isUserRole ? role . role : role ) ;
162161 setSelectedRoles ( markedRoles ) ;
163162 }
164163 setInvitation ( {
165164 ...invitation ,
166165 intendedAuthority : isGuest ? AUTHORITIES . GUEST : AUTHORITIES . INVITER ,
167- roleExpiryDate : futureDate ( defaultExpiryDays )
166+ roleExpiryDate : roleExpiryDate
168167 } )
169168 }
170169 }
@@ -215,14 +214,11 @@ export const InvitationForm = () => {
215214 }
216215
217216 const defaultRoleExpiryDate = newRoles => {
218- const allDefaultExpiryDays = ( newRoles || [ ] )
219- . filter ( role => role . defaultExpiryDays )
220- . map ( role => role . defaultExpiryDays )
221- . sort ( ) ;
222- if ( invitation . intendedAuthority === AUTHORITIES . GUEST ) {
223- return futureDate ( isEmpty ( allDefaultExpiryDays ) ? 365 : allDefaultExpiryDays [ 0 ] ) ;
224- }
225- return invitation . roleExpiryDate ;
217+ const allDefaultExpiryDates = ( newRoles || [ ] )
218+ . map ( role => deriveExpirationDate ( role ) ) ;
219+
220+ return isEmpty ( allDefaultExpiryDates ) ? futureDate ( 365 , new Date ( ) ) :
221+ new Date ( Math . max ( ...allDefaultExpiryDates . map ( d => d . getTime ( ) ) ) ) ;
226222 }
227223
228224 const validateOrganizationGUID = e => {
@@ -431,7 +427,7 @@ export const InvitationForm = () => {
431427 < InviterContainer isInviter = { isInviter } >
432428 { renderFormElements ( authorityOptions ) }
433429 </ InviterContainer >
434-
430+ < h1 > roleExpiryDate: { invitation . roleExpiryDate . toString ( ) } </ h1 >
435431 < InviterContainer isInviter = { isInviter } >
436432 { ! displayAdvancedSettings &&
437433 < a className = { `advanced-settings ${ isInviter ? "inviter" : "" } ` } href = "/#"
0 commit comments