diff --git a/src/models/contact.js b/src/models/contact.js index f2e0846829..1ff345f543 100644 --- a/src/models/contact.js +++ b/src/models/contact.js @@ -66,7 +66,13 @@ export default class Contact { // if no rev set, init one if (!this.vCard.hasProperty('rev')) { - this.vCard.addPropertyWithValue('rev', ICAL.VCardTime.now().convertToZone(ICAL.Timezone.utcTimezone)) + const version = this.vCard.getFirstPropertyValue('version') + if (version === '4.0') { + this.vCard.addPropertyWithValue('rev', ICAL.Time.fromJSDate(new Date(), true)) + } + if (version === '3.0') { + this.vCard.addPropertyWithValue('rev', ICAL.VCardTime.fromDateAndOrTimeString(new Date().toISOString(), 'date-time')) + } } } diff --git a/src/services/checks/invalidREV.js b/src/services/checks/invalidREV.js index 6a75c227b7..a4128f48ce 100644 --- a/src/services/checks/invalidREV.js +++ b/src/services/checks/invalidREV.js @@ -14,25 +14,10 @@ export default { run: contact => { try { const hasRev = contact.vCard.hasProperty('rev') - const rev = hasRev && contact.vCard.getFirstProperty('rev') - const revValue = rev && rev.getFirstValue() - - if (revValue) { - const version = contact.version - const type = revValue.icalclass - - if (version === '3.0' && type === 'vcardtime') { - return false - } - - if (version === '4.0' && type === 'icaltime') { - return false - } - } + return !hasRev } catch (error) { return true } - return true }, fix: contact => { @@ -40,11 +25,18 @@ export default { // removing old invalid data contact.vCard.removeProperty('rev') - // creatiing new value - contact.vCard.addPropertyWithValue('rev', ICAL.VCardTime.now().convertToZone(ICAL.Timezone.utcTimezone)) + // creating new value + const version = contact.version + if (version === '4.0') { + contact.vCard.addPropertyWithValue('rev', ICAL.Time.fromJSDate(new Date(), true)) + } + if (version === '3.0') { + contact.vCard.addPropertyWithValue('rev', ICAL.VCardTime.fromDateAndOrTimeString(new Date().toISOString(), 'date-time')) + } return true } catch (error) { + console.error('Error fixing invalid REV:', error) return false } }, diff --git a/src/store/contacts.js b/src/store/contacts.js index 945793f079..855dd8f385 100644 --- a/src/store/contacts.js +++ b/src/store/contacts.js @@ -331,6 +331,12 @@ const actions = { validate(contact) // Update REV + if (contact.version === '4.0') { + contact.rev = ICAL.Time.fromJSDate(new Date(), true) + } + if (contact.version === '3.0') { + contact.rev = ICAL.VCardTime.fromDateAndOrTimeString(new Date().toISOString(), 'date-time') + } contact.rev = ICAL.VCardTime.now().convertToZone(ICAL.Timezone.utcTimezone) const vData = contact.toStringStripQuotes() diff --git a/src/views/Contacts.vue b/src/views/Contacts.vue index 9f9f74656b..45db13d8c2 100644 --- a/src/views/Contacts.vue +++ b/src/views/Contacts.vue @@ -292,7 +292,7 @@ export default { contact.fullName = t('contacts', 'Name') - contact.rev = ICAL.VCardTime.now().convertToZone(ICAL.Timezone.utcTimezone) + contact.rev = ICAL.Time.fromJSDate(new Date(), true) // itterate over all properties (filter is not usable on objects and we need the key of the property) const properties = rfcProps.properties