mirror of
https://github.com/overleaf/overleaf.git
synced 2025-04-22 00:48:25 +00:00
Merge pull request #23890 from overleaf/jel-reconfirm-date
[web] If v1 date doesn't show as reconfirmed, ensure v2 does not as well GitOrigin-RevId: dc2850221a2d9176023380b38508311ea98abe43
This commit is contained in:
parent
fc19e1d34a
commit
182713d02d
2 changed files with 64 additions and 3 deletions
|
@ -40,7 +40,10 @@ function _pastReconfirmDate(lastDayToReconfirm) {
|
|||
return moment(lastDayToReconfirm).isBefore()
|
||||
}
|
||||
|
||||
function _emailInReconfirmNotificationPeriod(cachedLastDayToReconfirm) {
|
||||
function _emailInReconfirmNotificationPeriod(
|
||||
cachedLastDayToReconfirm,
|
||||
lastDayToReconfirm
|
||||
) {
|
||||
const globalReconfirmPeriod = settings.reconfirmNotificationDays
|
||||
|
||||
if (!globalReconfirmPeriod || !cachedLastDayToReconfirm) return false
|
||||
|
@ -50,7 +53,20 @@ function _emailInReconfirmNotificationPeriod(cachedLastDayToReconfirm) {
|
|||
'days'
|
||||
)
|
||||
|
||||
return moment().isAfter(notificationStarts)
|
||||
let isInNotificationPeriod = moment().isAfter(notificationStarts)
|
||||
|
||||
if (!isInNotificationPeriod) {
|
||||
// for possible issues in v1/v2 date mismatch, ensure v2 date doesn't show as needing to reconfirm
|
||||
|
||||
const notificationStartsV2 = moment(lastDayToReconfirm).subtract(
|
||||
globalReconfirmPeriod,
|
||||
'days'
|
||||
)
|
||||
|
||||
isInNotificationPeriod = moment().isAfter(notificationStartsV2)
|
||||
}
|
||||
|
||||
return isInNotificationPeriod
|
||||
}
|
||||
|
||||
async function getUserFullEmails(userId) {
|
||||
|
@ -279,7 +295,8 @@ const decorateFullEmails = (
|
|||
}
|
||||
const pastReconfirmDate = _pastReconfirmDate(lastDayToReconfirm)
|
||||
const inReconfirmNotificationPeriod = _emailInReconfirmNotificationPeriod(
|
||||
cachedLastDayToReconfirm
|
||||
cachedLastDayToReconfirm,
|
||||
lastDayToReconfirm
|
||||
)
|
||||
emailData.affiliation = {
|
||||
institution,
|
||||
|
|
|
@ -946,6 +946,50 @@ describe('UserGetter', function () {
|
|||
)
|
||||
})
|
||||
|
||||
it('should flag to show notification if v2 shows as reconfirmation upcoming but v1 does not', function (done) {
|
||||
const email = 'abc123@test.com'
|
||||
const { maxConfirmationMonths } = institutionNonSSO
|
||||
|
||||
const datePastReconfirmation = moment()
|
||||
.subtract(maxConfirmationMonths, 'months')
|
||||
.add(3, 'day')
|
||||
.toDate()
|
||||
|
||||
const dateNotPastReconfirmation = moment().add(1, 'month').toDate()
|
||||
|
||||
const affiliationsData = [
|
||||
{
|
||||
email,
|
||||
licence: 'free',
|
||||
institution: institutionNonSSO,
|
||||
last_day_to_reconfirm: dateNotPastReconfirmation,
|
||||
},
|
||||
]
|
||||
const user = {
|
||||
_id: '12390i',
|
||||
email,
|
||||
emails: [
|
||||
{
|
||||
email,
|
||||
confirmedAt: datePastReconfirmation,
|
||||
default: true,
|
||||
},
|
||||
],
|
||||
}
|
||||
this.getUserAffiliations.resolves(affiliationsData)
|
||||
this.UserGetter.promises.getUser = sinon.stub().resolves(user)
|
||||
this.UserGetter.getUserFullEmails(
|
||||
this.fakeUser._id,
|
||||
(error, fullEmails) => {
|
||||
expect(error).to.not.exist
|
||||
expect(
|
||||
fullEmails[0].affiliation.inReconfirmNotificationPeriod
|
||||
).to.equal(true)
|
||||
done()
|
||||
}
|
||||
)
|
||||
})
|
||||
|
||||
describe('cachedLastDayToReconfirm', function () {
|
||||
const email = 'abc123@test.com'
|
||||
const confirmedAt = new Date('2019-07-11T18:25:01.639Z')
|
||||
|
|
Loading…
Add table
Reference in a new issue