diff --git a/package-lock.json b/package-lock.json index f2825ad65690619d8149d3a47b2411961e14182d..5b61ee876c649109d39412e4c992422103e80390 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2346,6 +2346,12 @@ "uniq": "^1.0.1" } }, + "prettier": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", + "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", + "dev": true + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -10175,9 +10181,9 @@ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" }, "prettier": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", - "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.1.tgz", + "integrity": "sha512-piXGBcY1zoFOG0MvHpNE5reAGseLmaCRifQ/fmfF49BcYkInEs/naD/unxGNAeOKFA5+JxVrPyMvMlpzcd20UA==", "dev": true }, "prettier-linter-helpers": { diff --git a/package.json b/package.json index 478f322f6ed6479fc056cac967e589b3c26d4534..b8634051b718a210c12705154913202cd0d2d313 100644 --- a/package.json +++ b/package.json @@ -93,7 +93,7 @@ "jsdom-global": "^3.0.2", "mocha": "^6.2.2", "node-sass": "^4.13.1", - "prettier": "1.19.1", + "prettier": "2.0.1", "sass-loader": "^8.0.2", "sinon": "^9.0.1", "sinon-chai": "^3.4.0", diff --git a/src/ReplyBuilder.js b/src/ReplyBuilder.js index fe57b6335e3370a207ca489978f77ee6cfde6df7..f826be9d921511def23618dc3fb084013821bf7d 100644 --- a/src/ReplyBuilder.js +++ b/src/ReplyBuilder.js @@ -55,7 +55,7 @@ const RecipientType = Object.seal({ export const buildRecipients = (envelope, ownAddress) => { let recipientType = RecipientType.None - const isOwnAddress = a => a.email === ownAddress.email + const isOwnAddress = (a) => a.email === ownAddress.email const isNotOwnAddress = negate(isOwnAddress) // Locate why we received this envelope @@ -133,8 +133,8 @@ const replyPrepends = [ /* * Ref https://tools.ietf.org/html/rfc5322#section-3.6.5 */ -export const buildReplySubject = original => { - if (replyPrepends.some(prepend => original.toLowerCase().startsWith(`${prepend}:`))) { +export const buildReplySubject = (original) => { + if (replyPrepends.some((prepend) => original.toLowerCase().startsWith(`${prepend}:`))) { return original } @@ -168,8 +168,8 @@ const forwardPrepends = [ '转å‘', ] -export const buildForwardSubject = original => { - if (forwardPrepends.some(prepend => original.toLowerCase().startsWith(`${prepend}:`))) { +export const buildForwardSubject = (original) => { + if (forwardPrepends.some((prepend) => original.toLowerCase().startsWith(`${prepend}:`))) { return original } diff --git a/src/components/AccountForm.vue b/src/components/AccountForm.vue index 26badffcbb8b753ad4320b1d2683b1be3defe83d..409fda7dd9fef65459a01774df973590d2f27b3c 100644 --- a/src/components/AccountForm.vue +++ b/src/components/AccountForm.vue @@ -370,7 +370,7 @@ export default { this.loading = true this.saveChanges() - .catch(error => logger.error('could not save account details', {error})) + .catch((error) => logger.error('could not save account details', {error})) .then(() => (this.loading = false)) }, }, diff --git a/src/components/AppSettingsMenu.vue b/src/components/AppSettingsMenu.vue index 730ac0a1fc728b80f1f1ebe4b6a1ca8f96cdc9fb..418495d16b593f3f284da16e88a81f946257101b 100644 --- a/src/components/AppSettingsMenu.vue +++ b/src/components/AppSettingsMenu.vue @@ -91,7 +91,7 @@ export default { key: 'external-avatars', value: e.target.checked ? 'true' : 'false', }) - .catch(error => Logger.error('could not save preferences', {error})) + .catch((error) => Logger.error('could not save preferences', {error})) .then(() => { this.loadingAvatarSettings = false }) @@ -104,12 +104,12 @@ export default { key: 'collect-data', value: e.target.checked ? 'true' : 'false', }) - .catch(error => Logger.error('could not save preferences', {error})) + .catch((error) => Logger.error('could not save preferences', {error})) .then(() => { this.loadingOptOutSettings = false }) }, - registerProtocolHandler: function() { + registerProtocolHandler: function () { if (window.navigator.registerProtocolHandler) { var url = window.location.protocol + '//' + window.location.host + generateUrl('apps/mail/compose?uri=%s') diff --git a/src/components/Avatar.vue b/src/components/Avatar.vue index f5c6364d7e0a3754a4f443a201cbe54f7889e3aa..91edaa3783e9a0b640a7fba2303487030f4fbafe 100644 --- a/src/components/Avatar.vue +++ b/src/components/Avatar.vue @@ -56,7 +56,7 @@ export default { }, }, mounted() { - fetchAvatarUrlMemoized(this.email).then(url => { + fetchAvatarUrlMemoized(this.email).then((url) => { this.avatarUrl = url this.loading = false }) diff --git a/src/components/Composer.vue b/src/components/Composer.vue index eed5c667a527023b762ce4053c3c8af009a18f9c..5fecc636a1df5774a5bf221eeaede94dc87c60b8 100644 --- a/src/components/Composer.vue +++ b/src/components/Composer.vue @@ -269,7 +269,7 @@ export default { subjectVal: this.subject, bodyVal: this.isPlainText ? textToSimpleHtml(this.body) : this.body, attachments: [], - noReply: this.to.some(to => to.email.startsWith('noreply@') || to.email.startsWith('no-reply@')), + noReply: this.to.some((to) => to.email.startsWith('noreply@') || to.email.startsWith('no-reply@')), submitButtonTitle: t('mail', 'Send'), draftsPromise: Promise.resolve(), attachmentsPromise: Promise.resolve(), @@ -287,12 +287,12 @@ export default { }, computed: { aliases() { - return this.$store.getters.accounts.filter(a => !a.isUnified) + return this.$store.getters.accounts.filter((a) => !a.isUnified) }, selectableRecipients() { return this.newRecipients .concat(this.autocompleteRecipients) - .map(recipient => ({...recipient, label: recipient.label || recipient.email})) + .map((recipient) => ({...recipient, label: recipient.label || recipient.email})) }, isReply() { return this.to.length > 0 @@ -314,7 +314,7 @@ export default { }, beforeMount() { if (this.fromAccount) { - this.selectedAlias = this.aliases.find(alias => alias.id === this.fromAccount) + this.selectedAlias = this.aliases.find((alias) => alias.id === this.fromAccount) } else { this.selectedAlias = this.aliases[0] } @@ -358,9 +358,9 @@ export default { saveDraft(data) { this.savingDraft = true this.draftsPromise = this.draftsPromise - .then(uid => this.draft(data(uid))) + .then((uid) => this.draft(data(uid))) .catch(logger.error.bind(logger)) - .then(uid => { + .then((uid) => { this.savingDraft = false return uid }) @@ -378,14 +378,14 @@ export default { if (term === undefined || term === '') { return } - debouncedSearch(term).then(results => { + debouncedSearch(term).then((results) => { this.autocompleteRecipients = uniqBy('email')(this.autocompleteRecipients.concat(results)) }) }, onAttachmentsUploading(uploaded) { this.attachmentsPromise = this.attachmentsPromise .then(() => uploaded) - .catch(error => logger.error('could not upload attachments', {error})) + .catch((error) => logger.error('could not upload attachments', {error})) .then(() => logger.debug('attachments uploaded')) }, onBodyKeyPress(event) { @@ -418,10 +418,10 @@ export default { .then(() => (this.state = STATES.SENDING)) .then(() => this.draftsPromise) .then(this.getMessageData) - .then(data => this.send(data)) + .then((data) => this.send(data)) .then(() => logger.info('message sent')) .then(() => (this.state = STATES.FINISHED)) - .catch(error => { + .catch((error) => { logger.error('could not send message', {error}) if (error && error.toString) { this.errorText = error.toString() diff --git a/src/components/ComposerAttachments.vue b/src/components/ComposerAttachments.vue index ae3064ad422f5fd3a96812d45505c1dfbdf030e9..e8115596b0abe75a7bf7094676761f3786602247 100644 --- a/src/components/ComposerAttachments.vue +++ b/src/components/ComposerAttachments.vue @@ -101,11 +101,11 @@ export default { Vue.set(this, 'uploads', {}) - const progress = id => (prog, uploaded) => { + const progress = (id) => (prog, uploaded) => { this.uploads[id].uploaded = uploaded } - const promises = map(file => { + const promises = map((file) => { Vue.set(this.uploads, file.name, { total: file.size, uploaded: 0, @@ -118,7 +118,7 @@ export default { })(e.target.files) const done = Promise.all(promises) - .catch(error => Logger.error('could not upload all attachments', {error})) + .catch((error) => Logger.error('could not upload all attachments', {error})) .then(() => (this.uploading = false)) this.$emit('upload', done) @@ -130,13 +130,13 @@ export default { return picker .pick(t('mail', 'Choose a file to add as attachment')) - .then(path => this.emitNewAttachment(this.fileNameToAttachment(path))) - .catch(error => Logger.error('could not choose a file as attachment', {error})) + .then((path) => this.emitNewAttachment(this.fileNameToAttachment(path))) + .catch((error) => Logger.error('could not choose a file as attachment', {error})) }, onDelete(attachment) { this.$emit( 'input', - this.value.filter(a => a !== attachment) + this.value.filter((a) => a !== attachment) ) }, }, diff --git a/src/components/EditorSettings.vue b/src/components/EditorSettings.vue index 4f81a9b39da32a0a012c7617d32bdc38d14c8c58..e7d7f80e8b28fdddc9cf0f045ff45182567d7145 100644 --- a/src/components/EditorSettings.vue +++ b/src/components/EditorSettings.vue @@ -66,7 +66,7 @@ export default { .then(() => { Logger.info('editor mode updated') }) - .catch(error => { + .catch((error) => { Logger.error('could not update editor mode', {error}) this.editorMode = oldVal throw error diff --git a/src/components/Envelope.vue b/src/components/Envelope.vue index d7bf3c816a5bd9e308d90718f8e5a2638ffc4a50..a53421d71cd4b742322fca41ea993d682166b0d1 100644 --- a/src/components/Envelope.vue +++ b/src/components/Envelope.vue @@ -105,7 +105,7 @@ export default { addresses() { // Show recipients' label/address in a sent folder if (this.folder.specialRole === 'sent') { - let recipients = [this.data.to, this.data.cc].flat().map(function(recipient) { + let recipients = [this.data.to, this.data.cc].flat().map(function (recipient) { return recipient.label ? recipient.label : recipient.email }) return recipients.length > 0 ? recipients.join(', ') : t('mail', 'Blind copy recipients only') @@ -116,7 +116,7 @@ export default { avatarEmail() { // Show first recipients' avatar in a sent folder (or undefined when sent to Bcc only) if (this.folder.specialRole === 'sent') { - let recipients = [this.data.to, this.data.cc].flat().map(function(recipient) { + let recipients = [this.data.to, this.data.cc].flat().map(function (recipient) { return recipient.email }) return recipients.length > 0 ? recipients[0] : undefined diff --git a/src/components/Itinerary.vue b/src/components/Itinerary.vue index ee4a76124f79247be6d6da3817e509c9ca179b58..373884064114c9eed044ce06fd87fa9aad250d8c 100644 --- a/src/components/Itinerary.vue +++ b/src/components/Itinerary.vue @@ -64,8 +64,8 @@ export default { }, mounted() { getUserCalendarsOnce() - .then(calendars => (this.calendars = calendars)) - .catch(error => logger.error('Could not load calendars', {error})) + .then((calendars) => (this.calendars = calendars)) + .catch((error) => logger.error('Could not load calendars', {error})) }, } </script> diff --git a/src/components/Mailbox.vue b/src/components/Mailbox.vue index eefb40fc7cb40c11857fc2672e32393a4808945c..24d8a4e9f6fafcd4797e284a25e62c9197ea1bb1 100644 --- a/src/components/Mailbox.vue +++ b/src/components/Mailbox.vue @@ -171,14 +171,14 @@ export default { } } catch (error) { await matchError(error, { - [MailboxLockedError.getName()]: async error => { + [MailboxLockedError.getName()]: async (error) => { logger.info('Mailbox is locked', {error}) await wait(15 * 1000) // Keep trying await this.loadEnvelopes() }, - [MailboxNotCachedError.getName()]: async error => { + [MailboxNotCachedError.getName()]: async (error) => { logger.info('Mailbox not cached. Triggering initialization', {error}) this.loadingEnvelopes = false @@ -189,7 +189,7 @@ export default { this.error = error } }, - default: error => { + default: (error) => { logger.error('Could not fetch envelopes', {error}) this.loadingEnvelopes = false this.error = error @@ -223,7 +223,7 @@ export default { return } - const current = envelopes.filter(e => e.uid === currentUid) + const current = envelopes.filter((e) => e.uid === currentUid) if (current.length === 0) { logger.debug('ignoring shortcut: currently displayed messages is not in current envelope list') return @@ -268,14 +268,14 @@ export default { this.onDelete(env.uid) this.$store .dispatch('deleteMessage', {accountId: env.accountId, folderId: env.folderId, id: env.id}) - .catch(error => logger.error('could not delete envelope', {env, error})) + .catch((error) => logger.error('could not delete envelope', {env, error})) break case 'flag': logger.debug('flagging envelope via shortkey', {env}) this.$store .dispatch('toggleEnvelopeFlagged', env) - .catch(error => logger.error('could not flag envelope via shortkey', {env, error})) + .catch((error) => logger.error('could not flag envelope via shortkey', {env, error})) break case 'refresh': logger.debug('syncing envelopes via shortkey') @@ -288,7 +288,7 @@ export default { logger.debug('marking message as seen/unseen via shortkey', {env}) this.$store .dispatch('toggleEnvelopeSeen', env) - .catch(error => + .catch((error) => logger.error('could not mark envelope as seen/unseen via shortkey', {env, error}) ) break diff --git a/src/components/MessageAttachment.vue b/src/components/MessageAttachment.vue index 6b05b53063ce5b6b047938d14080f84ed3b2b8d6..216e6f3fd1e65cf55556937c01b93034afc1b114 100644 --- a/src/components/MessageAttachment.vue +++ b/src/components/MessageAttachment.vue @@ -129,7 +129,7 @@ export default { return this.fileName + ' (' + formatFileSize(this.size) + ')' }, calendarMenuEntries() { - return this.calendars.map(cal => { + return this.calendars.map((cal) => { return { icon: 'icon-add', text: cal.displayname, @@ -143,7 +143,7 @@ export default { return formatFileSize(size) }, saveToCloud() { - const saveAttachment = (accountId, folderId, messageId, attachmentId) => directory => { + const saveAttachment = (accountId, folderId, messageId, attachmentId) => (directory) => { return saveAttachmentToFiles(accountId, folderId, messageId, attachmentId, directory) } const {accountId, folderId, id} = parseUid(this.$route.params.messageUid) @@ -156,13 +156,13 @@ export default { return picker .pick() - .then(dest => { + .then((dest) => { this.savingToCloud = true return dest }) .then(saveAttachment(accountId, folderId, id, this.id)) .then(() => Logger.info('saved')) - .catch(e => Logger.error('not saved', {error: e})) + .catch((e) => Logger.error('not saved', {error: e})) .then(() => (this.savingToCloud = false)) }, download() { @@ -171,7 +171,7 @@ export default { }, loadCalendars() { this.loadingCalendars = true - getUserCalendars().then(calendars => { + getUserCalendars().then((calendars) => { this.calendars = calendars this.showCalendarPopover = true this.loadingCalendars = false @@ -185,7 +185,7 @@ export default { downloadAttachment(this.url) .then(importCalendarEvent(url)) .then(() => Logger.info('calendar imported')) - .catch(e => Logger.error('import error', {error: e})) + .catch((e) => Logger.error('import error', {error: e})) .then(() => (this.showCalendarPopover = false)) } }, diff --git a/src/components/MessageAttachments.vue b/src/components/MessageAttachments.vue index c155fc4ee603e65e3dfcd532b981c3148e318ba5..c75261c7b185d0552a58e802c0914e4ba6ed2cec 100644 --- a/src/components/MessageAttachments.vue +++ b/src/components/MessageAttachments.vue @@ -86,20 +86,20 @@ export default { .setType(1) .build() - const saveAttachments = (accountId, folderId, messageId) => directory => { + const saveAttachments = (accountId, folderId, messageId) => (directory) => { return saveAttachmentsToFiles(accountId, folderId, messageId, directory) } const {accountId, folderId, id} = parseUid(this.$route.params.messageUid) return picker .pick() - .then(dest => { + .then((dest) => { this.savingToCloud = true return dest }) .then(saveAttachments(accountId, folderId, id)) .then(() => Logger.info('saved')) - .catch(error => Logger.error('not saved', {error})) + .catch((error) => Logger.error('not saved', {error})) .then(() => (this.savingToCloud = false)) }, }, diff --git a/src/components/MessageHTMLBody.vue b/src/components/MessageHTMLBody.vue index f6fe0b871ab5af24d5b1abcec5aeb90581716e55..ce08ae2431d194dfa12ab8318411c253c39c5d3c 100644 --- a/src/components/MessageHTMLBody.vue +++ b/src/components/MessageHTMLBody.vue @@ -64,13 +64,13 @@ export default { onShowBlockedContent() { const iframeDoc = this.getIframeDoc() logger.debug('showing external images') - iframeDoc.querySelectorAll('[data-original-src]').forEach(node => { + iframeDoc.querySelectorAll('[data-original-src]').forEach((node) => { node.style.display = null node.setAttribute('src', node.getAttribute('data-original-src')) }) iframeDoc .querySelectorAll('[data-original-style]') - .forEach(node => node.setAttribute('style', node.getAttribute('data-original-style'))) + .forEach((node) => node.setAttribute('style', node.getAttribute('data-original-style'))) this.hasBlockedContent = false }, diff --git a/src/components/Navigation.vue b/src/components/Navigation.vue index d3bec14b88fd54caf1028a6552c289ba954583fd..d3627af581ad94b9dbbc9ee23377df1166328a56 100644 --- a/src/components/Navigation.vue +++ b/src/components/Navigation.vue @@ -99,10 +99,10 @@ export default { }, computed: { menu() { - return this.$store.getters.accounts.map(account => { + return this.$store.getters.accounts.map((account) => { const folders = this.$store.getters .getFolders(account.id) - .filter(folder => !account.collapsed || SHOW_COLLAPSED.indexOf(folder.specialRole) !== -1) + .filter((folder) => !account.collapsed || SHOW_COLLAPSED.indexOf(folder.specialRole) !== -1) //.map(folderToEntry) return { diff --git a/src/components/NavigationAccount.vue b/src/components/NavigationAccount.vue index 1674f3ea364250bb883c738202814d2e4aa66dc9..80bfbebdabc14ff76f2d03b36f42012785fed88e 100644 --- a/src/components/NavigationAccount.vue +++ b/src/components/NavigationAccount.vue @@ -122,7 +122,7 @@ export default { this.$store .dispatch('createFolder', {account: this.account, name}) .then(() => logger.info(`folder ${name} created`)) - .catch(error => { + .catch((error) => { logger.error('could not create folder', {error}) throw error }) @@ -138,17 +138,17 @@ export default { // TODO: update store and handle this more efficiently location.href = generateUrl('/apps/mail') }) - .catch(error => logger.error('could not delete account', {error})) + .catch((error) => logger.error('could not delete account', {error})) }, changeAccountOrderUp() { this.$store .dispatch('moveAccount', {account: this.account, up: true}) - .catch(error => logger.error('could not move account up', {error})) + .catch((error) => logger.error('could not move account up', {error})) }, changeAccountOrderDown() { this.$store .dispatch('moveAccount', {account: this.account}) - .catch(error => logger.error('could not move account down', {error})) + .catch((error) => logger.error('could not move account down', {error})) }, }, } diff --git a/src/components/NavigationFolder.vue b/src/components/NavigationFolder.vue index 49207de0653986d613ede6e6529dc985487f5ba2..88960a1bd7815ffc4288a9fcf0f69e793cda4b29 100644 --- a/src/components/NavigationFolder.vue +++ b/src/components/NavigationFolder.vue @@ -224,7 +224,7 @@ export default { name: withPrefix, }) .then(() => logger.info(`folder ${withPrefix} created`)) - .catch(error => { + .catch((error) => { logger.error(`could not create folder ${withPrefix}`, {error}) throw error }) @@ -238,7 +238,7 @@ export default { folderId: this.folder.id, }) .then(() => logger.info(`folder ${this.folder.id} marked as read`)) - .catch(error => logger.error(`could not mark folder ${this.folder.id} as read`, {error})) + .catch((error) => logger.error(`could not mark folder ${this.folder.id} as read`, {error})) .then(() => (this.loadingMarkAsRead = false)) }, }, diff --git a/src/components/NewMessageDetail.vue b/src/components/NewMessageDetail.vue index 0a0d1ad18020332c211b8741d4c1a0decc301af9..39be8ae6ce76e5c420c8087d72865191fbadc2f4 100644 --- a/src/components/NewMessageDetail.vue +++ b/src/components/NewMessageDetail.vue @@ -167,7 +167,7 @@ export default { this.$store .dispatch('fetchMessage', draftUid) - .then(draft => { + .then((draft) => { if (draft.uid !== this.$route.params.draftUid) { Logger.debug("User navigated away, loaded draft won't be shown") return @@ -184,7 +184,7 @@ export default { this.loading = false }) - .catch(error => { + .catch((error) => { Logger.error('could not load draft ' + draftUid, {error}) if (error.isError) { this.errorMessage = t('mail', 'Could not load your draft') @@ -200,7 +200,7 @@ export default { this.$store .dispatch('fetchMessage', uid) - .then(message => { + .then((message) => { if (message.uid !== this.$route.query.uid) { Logger.debug("User navigated away, loaded original message won't be used") return @@ -217,17 +217,17 @@ export default { folderId: message.folderId, id: message.id, }) - ).then(resp => resp.data) + ).then((resp) => resp.data) } else { return message.body } }) - .then(body => { + .then((body) => { this.originalBody = body this.loading = false }) - .catch(error => { + .catch((error) => { Logger.error('could not load original message ' + uid, {error}) if (error.isError) { this.errorMessage = t('mail', 'Could not load original message') diff --git a/src/components/SignatureSettings.vue b/src/components/SignatureSettings.vue index b48415291e44044735527ed116d4cf6d94fe03bb..cd984a7d6ac7862d7051d2bb470a5d36e71a09ca 100644 --- a/src/components/SignatureSettings.vue +++ b/src/components/SignatureSettings.vue @@ -85,7 +85,7 @@ export default { this.signature = '' this.loading = false }) - .catch(error => { + .catch((error) => { logger.error('could not delete account signature', {error}) throw error }) @@ -99,7 +99,7 @@ export default { logger.info('signature updated') this.loading = false }) - .catch(error => { + .catch((error) => { logger.error('could not update account signature', {error}) throw error }) diff --git a/src/components/TextEditor.vue b/src/components/TextEditor.vue index c5076f894c6f64ff08bd2fd7791b1d5dedf3d5b4..38be4aaf39b564b525c40e2dff59cf473a38f775 100644 --- a/src/components/TextEditor.vue +++ b/src/components/TextEditor.vue @@ -127,7 +127,7 @@ export default { logger.debug('CKEditor editor is ready', {editor, schema}) // Set 0 pixel margin to all <p> elements - editor.conversion.for('downcast').add(dispatcher => { + editor.conversion.for('downcast').add((dispatcher) => { dispatcher.on( 'insert:paragraph', (evt, data, conversionApi) => { diff --git a/src/components/itinerary/CalendarImport.vue b/src/components/itinerary/CalendarImport.vue index 7cbe052c4d64ecd776fa7849970c15871e7dc063..1ecdbaed108126595c5dc459fee18248c5bfd319 100644 --- a/src/components/itinerary/CalendarImport.vue +++ b/src/components/itinerary/CalendarImport.vue @@ -53,7 +53,7 @@ export default { }, computed: { cals() { - return this.calendars.map(original => { + return this.calendars.map((original) => { this.$set(original, 'loading', false) return original }) diff --git a/src/components/itinerary/EventReservation.vue b/src/components/itinerary/EventReservation.vue index 8de5234918b2eb580ff1a9e42f4c554d53136557..5c750b5cce6a27ea15ddc8d0caa120920005a576 100644 --- a/src/components/itinerary/EventReservation.vue +++ b/src/components/itinerary/EventReservation.vue @@ -90,9 +90,7 @@ export default { } else { // Assume it's 2h and user will adjust if necessary // TODO: handle 'duration' https://schema.org/Event - return moment('2019-10-22T12:00:00Z') - .add(2, 'hours') - .format() + return moment('2019-10-22T12:00:00Z').add(2, 'hours').format() } }, handleImport(calendar) { @@ -131,7 +129,7 @@ export default { logger.debug('event successfully imported') OCP.Toast.success(t('mail', 'Event imported into {calendar}', {calendar: calendar.displayname})) }) - .catch(error => { + .catch((error) => { logger.error('Could not import event', {error}) OCP.Toast.error(t('mail', 'Could not create event')) }) diff --git a/src/components/itinerary/FlightReservation.vue b/src/components/itinerary/FlightReservation.vue index 7d903b95b3079bb1b7e1bec1b49217ea97fc1ad3..bc023add75b5f0fcc4b70267ee140456206fbc9c 100644 --- a/src/components/itinerary/FlightReservation.vue +++ b/src/components/itinerary/FlightReservation.vue @@ -124,7 +124,7 @@ export default { logger.debug('event successfully imported') OCP.Toast.success(t('mail', 'Event imported into {calendar}', {calendar: calendar.displayname})) }) - .catch(error => { + .catch((error) => { logger.error('Could not import event', {error}) OCP.Toast.error(t('mail', 'Could not create event')) }) diff --git a/src/components/itinerary/TrainReservation.vue b/src/components/itinerary/TrainReservation.vue index 3afd348e3cb7a78ab09a3664d24878490d3ee304..51daa1e5d1f2456199dea745ddd707b4586e959c 100644 --- a/src/components/itinerary/TrainReservation.vue +++ b/src/components/itinerary/TrainReservation.vue @@ -136,7 +136,7 @@ export default { logger.debug('event successfully imported') OCP.Toast.success(t('mail', 'Event imported into {calendar}', {calendar: calendar.displayname})) }) - .catch(error => { + .catch((error) => { logger.error('Could not import event', {error}) OCP.Toast.error(t('mail', 'Could not create event')) }) diff --git a/src/components/settings/ProvisioningSettings.vue b/src/components/settings/ProvisioningSettings.vue index 07027b8616cc7c5d579e77f02261e28dda49abe2..a0d6eec7e87b2c5e515e1643ce06bef171a8f409 100644 --- a/src/components/settings/ProvisioningSettings.vue +++ b/src/components/settings/ProvisioningSettings.vue @@ -337,7 +337,7 @@ export default { .then(() => { logger.info('provisioning settings updated') }) - .catch(error => { + .catch((error) => { // TODO: show user feedback logger.error('Could not save provisioning settings', {error}) }) @@ -352,7 +352,7 @@ export default { .then(() => { logger.info('deprovisioned successfully') }) - .catch(error => { + .catch((error) => { logger.error('could not deprovision accounts', {error}) }) .then(() => { diff --git a/src/errors/convert.js b/src/errors/convert.js index 4d816fe155503e30de36c6400b266bf2920258d4..55fcca369b731ad5b5850c4aa63856fcbdf3eabc 100644 --- a/src/errors/convert.js +++ b/src/errors/convert.js @@ -30,7 +30,7 @@ const map = { /** * @param {object} axiosError */ -export const convertAxiosError = axiosError => { +export const convertAxiosError = (axiosError) => { if (!('response' in axiosError)) { // No conversion return axiosError diff --git a/src/http/ErrorResponseParser.js b/src/http/ErrorResponseParser.js index 1ba28438efb3ee82025b3cfdcc8e49d8faa70008..86484cf5d71d567b6c83f0d35dff624c20d9fb90 100644 --- a/src/http/ErrorResponseParser.js +++ b/src/http/ErrorResponseParser.js @@ -19,11 +19,11 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -const isErrorResponse = resp => { +const isErrorResponse = (resp) => { return 'x-mail-response' in resp.headers && resp.data.status === 'error' } -export const parseErrorResponse = resp => { +export const parseErrorResponse = (resp) => { if (!isErrorResponse(resp)) { return resp } diff --git a/src/i18n/MailboxTranslator.js b/src/i18n/MailboxTranslator.js index 6e1b5729bf32fa792f549705c8925ff55767a80e..fe975709e54e8038cbe2a31612498f6df285fa40 100644 --- a/src/i18n/MailboxTranslator.js +++ b/src/i18n/MailboxTranslator.js @@ -21,7 +21,7 @@ import {translate as t} from '@nextcloud/l10n' -const translateSpecial = folder => { +const translateSpecial = (folder) => { if (folder.specialUse.includes('all')) { // TRANSLATORS: translated mail box name return t('mail', 'All') @@ -61,7 +61,7 @@ const translateSpecial = folder => { throw new Error(`unknown special use ${folder.specialUse}`) } -export const translate = folder => { +export const translate = (folder) => { if (folder.specialUse.length > 0) { try { return translateSpecial(folder) diff --git a/src/imap/MailboxHierarchy.js b/src/imap/MailboxHierarchy.js index 8177e96409eddb36d8e02d01b69074159db383d1..e90b1ce7b3156830c24010da34158da5459e4423 100644 --- a/src/imap/MailboxHierarchy.js +++ b/src/imap/MailboxHierarchy.js @@ -38,21 +38,21 @@ export const buildMailboxHierarchy = (mailboxes, havePrefix) => { return mailboxes } - const cloned = mailboxes.map(mailbox => { + const cloned = mailboxes.map((mailbox) => { return { folders: [], ...mailbox, } }) - const top = cloned.filter(mailbox => getParentId(mailbox, havePrefix) === undefined) + const top = cloned.filter((mailbox) => getParentId(mailbox, havePrefix) === undefined) - cloned.forEach(mailbox => { + cloned.forEach((mailbox) => { if (top.indexOf(mailbox) !== -1) { return } const parentId = getParentId(mailbox, havePrefix) - const parent = cloned.filter(mailbox => atob(mailbox.id) === parentId)[0] + const parent = cloned.filter((mailbox) => atob(mailbox.id) === parentId)[0] if (parent) { parent.folders.push(mailbox) } diff --git a/src/imap/MailboxPrefix.js b/src/imap/MailboxPrefix.js index 3f224e3e5a5959213f5779d3ad39f319ecd98e3d..291a2eb023710b6420ce382d7ab4bd21f82db9c9 100644 --- a/src/imap/MailboxPrefix.js +++ b/src/imap/MailboxPrefix.js @@ -21,9 +21,9 @@ const PREFIX = 'INBOX' -export const havePrefix = mailboxes => { +export const havePrefix = (mailboxes) => { return ( - mailboxes.filter(mailbox => { + mailboxes.filter((mailbox) => { const hierarchy = mailbox.id.split(mailbox.delimiter) if (hierarchy.length < 1 || hierarchy[0] !== PREFIX) { return false diff --git a/src/imap/MailboxSorter.js b/src/imap/MailboxSorter.js index 69ed32897275be125ef74e8d9fdd9465c9a63c0c..913bc2a81e0c7a126a7bf725f286f07e02b0b71e 100644 --- a/src/imap/MailboxSorter.js +++ b/src/imap/MailboxSorter.js @@ -23,7 +23,7 @@ import clone from 'lodash/fp/clone' const specialRolesOrder = ['all', 'inbox', 'flagged', 'drafts', 'sent', 'archive', 'junk', 'trash'] -export const sortMailboxes = mailboxes => { +export const sortMailboxes = (mailboxes) => { const c = clone(mailboxes) c.sort((f1, f2) => { if (f1.specialUse.length && f2.specialUse.length) { diff --git a/src/logger.js b/src/logger.js index 4b687d295fef5fb8eda3aebfd16b25f0b5196713..71907ff2953eb0c66bb20457fa92bb7f344d3fdd 100644 --- a/src/logger.js +++ b/src/logger.js @@ -21,7 +21,4 @@ import {getLoggerBuilder} from '@nextcloud/logger' -export default getLoggerBuilder() - .setApp('mail') - .detectUser() - .build() +export default getLoggerBuilder().setApp('mail').detectUser().build() diff --git a/src/main.js b/src/main.js index f56480bf8b7d52729d53c7794655280442636b5a..1562f693a49d01c836dafbbf34646670650fa8da 100644 --- a/src/main.js +++ b/src/main.js @@ -43,7 +43,7 @@ Vue.mixin(Nextcloud) Vue.use(VueShortKey, {prevent: ['input', 'div']}) Vue.use(VTooltip) -const getPreferenceFromPage = key => { +const getPreferenceFromPage = (key) => { const elem = document.getElementById(key) if (!elem) { return @@ -69,7 +69,7 @@ store.commit('savePreference', { }) const accounts = JSON.parse(atob(getPreferenceFromPage('serialized-accounts'))) -accounts.map(fixAccountId).forEach(account => { +accounts.map(fixAccountId).forEach((account) => { const folders = account.folders store.commit('addAccount', account) }) @@ -78,5 +78,5 @@ new Vue({ el: '#content', router, store, - render: h => h(App), + render: (h) => h(App), }) diff --git a/src/service/AccountService.js b/src/service/AccountService.js index d2a900af50ac258fc4e2d07a85c96176df1cf238..579e4bdc2b3f20af33709827202bd80418a4dc8f 100644 --- a/src/service/AccountService.js +++ b/src/service/AccountService.js @@ -1,20 +1,20 @@ import {generateUrl} from '@nextcloud/router' import HttpClient from '@nextcloud/axios' -export const fixAccountId = original => { +export const fixAccountId = (original) => { return { id: original.accountId, ...original, } } -export const create = data => { +export const create = (data) => { const url = generateUrl('/apps/mail/api/accounts') return HttpClient.post(url, data) - .then(resp => resp.data) + .then((resp) => resp.data) .then(fixAccountId) - .catch(e => { + .catch((e) => { if (e.response && e.response.status === 400) { throw e.response.data } @@ -29,17 +29,17 @@ export const patch = (account, data) => { }) return HttpClient.patch(url, data) - .then(resp => resp.data) + .then((resp) => resp.data) .then(fixAccountId) } -export const update = data => { +export const update = (data) => { const url = generateUrl(`/apps/mail/api/accounts/{id}`, { id: data.accountId, }) return HttpClient.put(url, data) - .then(resp => resp.data) + .then((resp) => resp.data) .then(fixAccountId) } @@ -52,28 +52,28 @@ export const updateSignature = (account, signature) => { } return HttpClient.put(url, data) - .then(resp => resp.data) + .then((resp) => resp.data) .then(fixAccountId) } export const fetchAll = () => { const url = generateUrl('/apps/mail/api/accounts') - return HttpClient.get(url).then(resp => resp.data.map(fixAccountId)) + return HttpClient.get(url).then((resp) => resp.data.map(fixAccountId)) } -export const fetch = id => { +export const fetch = (id) => { const url = generateUrl('/apps/mail/api/accounts/{id}', { id, }) - return HttpClient.get(url).then(resp => fixAccountId(resp.data)) + return HttpClient.get(url).then((resp) => fixAccountId(resp.data)) } -export const deleteAccount = id => { +export const deleteAccount = (id) => { const url = generateUrl('/apps/mail/api/accounts/{id}', { id, }) - return HttpClient.delete(url).then(resp => fixAccountId(resp.data)) + return HttpClient.delete(url).then((resp) => fixAccountId(resp.data)) } diff --git a/src/service/AttachmentService.js b/src/service/AttachmentService.js index 3a6fa295e667e467710c69d647eab215d32fe97f..536af14e77ab2dc42cd2d90349774871b9ed86b5 100644 --- a/src/service/AttachmentService.js +++ b/src/service/AttachmentService.js @@ -43,19 +43,19 @@ export function saveAttachmentsToFiles(accountId, folderId, messageId, directory } export function downloadAttachment(url) { - return Axios.get(url).then(res => res.data) + return Axios.get(url).then((res) => res.data) } export const uploadLocalAttachment = (file, progress) => { const url = generateUrl('/apps/mail/api/attachments') const data = new FormData() const opts = { - onUploadProgress: prog => progress(prog, prog.loaded, prog.total), + onUploadProgress: (prog) => progress(prog, prog.loaded, prog.total), } data.append('attachment', file) return Axios.post(url, data, opts) - .then(resp => resp.data) + .then((resp) => resp.data) .then(({id}) => { return { file, diff --git a/src/service/AutocompleteService.js b/src/service/AutocompleteService.js index 15b7a2402b2ba933515e6c525db00519158996f2..5e214211d78c6fee252fb63ddbe8c22ec28449d2 100644 --- a/src/service/AutocompleteService.js +++ b/src/service/AutocompleteService.js @@ -22,10 +22,10 @@ import Axios from '@nextcloud/axios' import {generateUrl} from '@nextcloud/router' -export const findRecipient = term => { +export const findRecipient = (term) => { const url = generateUrl('/apps/mail/api/autoComplete?term={term}', { term, }) - return Axios.get(url).then(resp => resp.data) + return Axios.get(url).then((resp) => resp.data) } diff --git a/src/service/AvatarService.js b/src/service/AvatarService.js index 05e9f0910f8c4f47c5e55fd7224db04bb1d99ff8..213dcb606770c79fa9fa3b9f194ea3f912dfcfb3 100644 --- a/src/service/AvatarService.js +++ b/src/service/AvatarService.js @@ -24,7 +24,7 @@ import memoize from 'lodash/fp/memoize' import Axios from '@nextcloud/axios' import {generateUrl} from '@nextcloud/router' -export const fetchAvatarUrl = email => { +export const fetchAvatarUrl = (email) => { if (email === null) { return Promise.resolve(undefined) } @@ -34,8 +34,8 @@ export const fetchAvatarUrl = email => { }) return Axios.get(url) - .then(resp => resp.data) - .then(avatar => { + .then((resp) => resp.data) + .then((avatar) => { if (avatar.isExternal) { return generateUrl('/apps/mail/api/avatars/image/{email}', { email: email, @@ -44,7 +44,7 @@ export const fetchAvatarUrl = email => { return avatar.url } }) - .catch(err => { + .catch((err) => { if (err.response.status === 404) { return undefined } diff --git a/src/service/DAVService.js b/src/service/DAVService.js index 8682aeae6e84454124a889b0fbf23261bac1ef34..ef93d6a95b1d839d48551869be7c339a57dde144 100644 --- a/src/service/DAVService.js +++ b/src/service/DAVService.js @@ -48,11 +48,11 @@ const props = [ '{http://owncloud.org/ns}invite', ] -const getResponseCodeFromHTTPResponse = t => { +const getResponseCodeFromHTTPResponse = (t) => { return parseInt(t.split(' ')[1]) } -const getACLFromResponse = properties => { +const getACLFromResponse = (properties) => { let canWrite = false let acl = properties['{DAV:}acl'] if (acl) { @@ -71,7 +71,7 @@ const getACLFromResponse = properties => { properties.canWrite = canWrite } -const getCalendarData = properties => { +const getCalendarData = (properties) => { getACLFromResponse(properties) const data = { @@ -105,10 +105,10 @@ export const getUserCalendars = () => { .propFind(url, props, 1, { requesttoken: getRequestToken(), }) - .then(data => { + .then((data) => { const calendars = [] - data.body.forEach(cal => { + data.body.forEach((cal) => { if (cal.propStat.length < 1) { return } @@ -128,9 +128,7 @@ export const getUserCalendars = () => { const getRandomString = () => { let str = '' for (let i = 0; i < 7; i++) { - str += Math.random() - .toString(36) - .substring(7) + str += Math.random().toString(36).substring(7) } return str } @@ -143,21 +141,21 @@ const createICalElement = () => { return root } -const splitCalendar = data => { +const splitCalendar = (data) => { const timezones = [] const allObjects = {} const jCal = ical.parse(data) const components = new ical.Component(jCal) const vtimezones = components.getAllSubcomponents('vtimezone') - vtimezones.forEach(vtimezone => timezones.push(vtimezone)) + vtimezones.forEach((vtimezone) => timezones.push(vtimezone)) const componentNames = ['vevent', 'vjournal', 'vtodo'] - componentNames.forEach(componentName => { + componentNames.forEach((componentName) => { const vobjects = components.getAllSubcomponents(componentName) allObjects[componentName] = {} - vobjects.forEach(vobject => { + vobjects.forEach((vobject) => { var uid = vobject.getFirstPropertyValue('uid') allObjects[componentName][uid] = allObjects[componentName][uid] || [] allObjects[componentName][uid].push(vobject) @@ -165,7 +163,7 @@ const splitCalendar = data => { }) const split = [] - componentNames.forEach(componentName => { + componentNames.forEach((componentName) => { split[componentName] = [] for (let objectsId in allObjects[componentName]) { const objects = allObjects[componentName][objectsId] @@ -190,7 +188,7 @@ const splitCalendar = data => { * @param {Object} data * @returns {Promise} */ -export const importCalendarEvent = url => data => { +export const importCalendarEvent = (url) => (data) => { Logger.debug('importing events into calendar', { url, data, @@ -199,7 +197,7 @@ export const importCalendarEvent = url => data => { const file = splitCalendar(data) const components = ['vevent', 'vjournal', 'vtodo'] - components.forEach(componentName => { + components.forEach((componentName) => { for (let componentId in file.split[componentName]) { const component = file.split[componentName][componentId] Logger.info('importing event component', {component}) diff --git a/src/service/FolderService.js b/src/service/FolderService.js index b7f5c91ecf767d135150e68bddb772604c8ca1e6..722b2e4d6b13b8b90eff8efe06e04d148fe3fdf1 100644 --- a/src/service/FolderService.js +++ b/src/service/FolderService.js @@ -8,7 +8,7 @@ export function fetchAll(accountId) { // FIXME: this return format is weird and should be avoided // TODO: respect `resp.data.delimiter` value - return Axios.get(url).then(resp => resp.data.folders) + return Axios.get(url).then((resp) => resp.data.folders) } export function create(accountId, name) { @@ -19,7 +19,7 @@ export function create(accountId, name) { const data = { name, } - return Axios.post(url, data).then(resp => resp.data) + return Axios.post(url, data).then((resp) => resp.data) } export function getFolderStats(accountId, folderId) { @@ -28,7 +28,7 @@ export function getFolderStats(accountId, folderId) { folderId, }) - return Axios.get(url).then(resp => resp.data) + return Axios.get(url).then((resp) => resp.data) } export function markFolderRead(accountId, folderId) { @@ -37,5 +37,5 @@ export function markFolderRead(accountId, folderId) { folderId, }) - return Axios.post(url).then(resp => resp.data) + return Axios.post(url).then((resp) => resp.data) } diff --git a/src/service/MessageService.js b/src/service/MessageService.js index 5c3d13a596343f68421a93fc2eef3c07c4365d87..845888e7c5e870a97c8d542bf3e1ac57b5bace60 100644 --- a/src/service/MessageService.js +++ b/src/service/MessageService.js @@ -22,8 +22,8 @@ export function fetchEnvelope(accountId, folderId, id) { return axios .get(url) - .then(resp => resp.data) - .catch(error => { + .then((resp) => resp.data) + .catch((error) => { if (error.response && error.response.status === 404) { return undefined } @@ -49,9 +49,9 @@ export function fetchEnvelopes(accountId, folderId, query, cursor) { .get(url, { params, }) - .then(resp => resp.data) + .then((resp) => resp.data) .then(map(amendEnvelopeWithIds(accountId, folderId))) - .catch(error => { + .catch((error) => { throw convertAxiosError(error) }) } @@ -112,8 +112,8 @@ export function fetchMessage(accountId, folderId, id) { return axios .get(url) - .then(resp => resp.data) - .catch(error => { + .then((resp) => resp.data) + .catch((error) => { if (error.response && error.response.status === 404) { return undefined } @@ -126,7 +126,7 @@ export function saveDraft(accountId, data) { accountId, }) - return axios.post(url, data).then(resp => resp.data) + return axios.post(url, data).then((resp) => resp.data) } export function sendMessage(accountId, data) { @@ -134,7 +134,7 @@ export function sendMessage(accountId, data) { accountId, }) - return axios.post(url, data).then(resp => resp.data) + return axios.post(url, data).then((resp) => resp.data) } export function deleteMessage(accountId, folderId, id) { @@ -144,5 +144,5 @@ export function deleteMessage(accountId, folderId, id) { id, }) - return axios.delete(url).then(resp => resp.data) + return axios.delete(url).then((resp) => resp.data) } diff --git a/src/service/NotificationService.js b/src/service/NotificationService.js index fb3111a38d7c9b3f4387177751d0816024e193c0..87a7ab42aa52812455b3456f9f164f76bc2738c3 100644 --- a/src/service/NotificationService.js +++ b/src/service/NotificationService.js @@ -62,8 +62,8 @@ const showNotification = (title, body, icon) => { } } -const getNotificationBody = messages => { - const labels = messages.filter(m => m.from.length > 0).map(m => m.from[0].label) +const getNotificationBody = (messages) => { + const labels = messages.filter((m) => m.from.length > 0).map((m) => m.from[0].label) let from = uniq(labels) if (from.length > 2) { from = from.slice(0, 2) @@ -83,7 +83,7 @@ const getNotificationBody = messages => { } } -export const showNewMessagesNotification = messages => { +export const showNewMessagesNotification = (messages) => { showNotification( t('mail', 'Nextcloud Mail'), getNotificationBody(messages), diff --git a/src/service/PreferenceService.js b/src/service/PreferenceService.js index 205c5506c0fb48f967f1400b3105d828c982fe5d..56ec390000dc4c3ffcc0c72471b8b0bd617d0637 100644 --- a/src/service/PreferenceService.js +++ b/src/service/PreferenceService.js @@ -32,13 +32,13 @@ export const savePreference = (key, value) => { value, } - return Axios.put(url, data).then(resp => resp.data) + return Axios.put(url, data).then((resp) => resp.data) } -export const getPreference = key => { +export const getPreference = (key) => { const url = generateUrl('/apps/mail/api/preferences/{key}', { key, }) - return Axios.get(url).then(resp => resp.data) + return Axios.get(url).then((resp) => resp.data) } diff --git a/src/service/SettingsService.js b/src/service/SettingsService.js index e83cc3bf2127c1b6e9ca7f7983271d528c5003df..18eef59b91907ca51a44829952e96d3409992c80 100644 --- a/src/service/SettingsService.js +++ b/src/service/SettingsService.js @@ -22,14 +22,14 @@ import axios from '@nextcloud/axios' import {generateUrl} from '@nextcloud/router' -export const saveProvisioningSettings = config => { +export const saveProvisioningSettings = (config) => { const url = generateUrl('/apps/mail/api/settings/provisioning') - return axios.post(url, config).then(resp => resp.data) + return axios.post(url, config).then((resp) => resp.data) } export const disableProvisioning = () => { const url = generateUrl('/apps/mail/api/settings/provisioning') - return axios.delete(url).then(resp => resp.data) + return axios.delete(url).then((resp) => resp.data) } diff --git a/src/store/actions.js b/src/store/actions.js index 07ab0ff228cc5170f243e5bd8c563489c462dc17..c739c615e294568890bc32d7215bac3194523cdc 100644 --- a/src/store/actions.js +++ b/src/store/actions.js @@ -92,22 +92,22 @@ export default { }) }, fetchAccounts({commit, getters}) { - return fetchAllAccounts().then(accounts => { - accounts.forEach(account => commit('addAccount', account)) + return fetchAllAccounts().then((accounts) => { + accounts.forEach((account) => commit('addAccount', account)) return getters.accounts }) }, fetchAccount({commit}, id) { - return fetchAccount(id).then(account => { + return fetchAccount(id).then((account) => { commit('addAccount', account) return account }) }, createAccount({commit}, config) { - return createAccount(config).then(account => { + return createAccount(config).then((account) => { logger.debug(`account ${account.id} created, fetching folders …`, account) return fetchAllFolders(account.id) - .then(folders => { + .then((folders) => { account.folders = folders commit('addAccount', account) }) @@ -116,14 +116,14 @@ export default { }) }, updateAccount({commit}, config) { - return updateAccount(config).then(account => { + return updateAccount(config).then((account) => { console.debug('account updated', account) commit('editAccount', account) return account }) }, patchAccount({commit}, {account, data}) { - return patchAccount(account, data).then(account => { + return patchAccount(account, data).then((account) => { console.debug('account patched', account, data) commit('editAccount', data) return account @@ -138,13 +138,13 @@ export default { }) }, deleteAccount({commit}, account) { - return deleteAccount(account.id).catch(err => { + return deleteAccount(account.id).catch((err) => { console.error('could not delete account', err) throw err }) }, createFolder({commit}, {account, name}) { - return createFolder(account.id, name).then(folder => { + return createFolder(account.id, name).then((folder) => { console.debug(`folder ${name} created for account ${account.id}`, {folder}) commit('addFolder', {account, folder}) }) @@ -187,7 +187,7 @@ export default { return cached } - return fetchEnvelope(accountId, folderId, id).then(envelope => { + return fetchEnvelope(accountId, folderId, id).then((envelope) => { // Only commit if not undefined (not found) if (envelope) { commit('addEnvelope', { @@ -206,7 +206,7 @@ export default { if (folder.isUnified) { const fetchIndividualLists = pipe( - map(f => + map((f) => dispatch('fetchEnvelopes', { accountId: f.accountId, folderId: f.id, @@ -223,7 +223,7 @@ export default { andThen(sliceToPage), andThen( tap( - map(envelope => + map((envelope) => commit('addEnvelope', { accountId, folderId, @@ -242,7 +242,7 @@ export default { fetchEnvelopes, andThen( tap( - map(envelope => + map((envelope) => commit('addEnvelope', { accountId, folderId, @@ -287,7 +287,7 @@ export default { return nextPage.length < PAGE_SIZE || (c <= head(nextPage).dateInt && c >= last(nextPage).dateInt) }) - const foldersToFetch = accounts => + const foldersToFetch = (accounts) => pipe( findIndividualFolders(getters.getFolders, folder.specialRole), filter(needsFetch(query, nextLocalUnifiedEnvelopePage(accounts))) @@ -297,7 +297,7 @@ export default { if (fs.length) { return pipe( - map(f => + map((f) => dispatch('fetchNextEnvelopePage', { accountId: f.accountId, folderId: f.id, @@ -316,7 +316,7 @@ export default { } const page = nextLocalUnifiedEnvelopePage(getters.accounts) - page.map(envelope => + page.map((envelope) => commit('addEnvelope', { accountId, folderId, @@ -338,8 +338,8 @@ export default { return Promise.reject(new Error('Cannot find last envelope. Required for the folder cursor')) } - return fetchEnvelopes(accountId, folderId, query, lastEnvelope.dateInt).then(envelopes => { - envelopes.forEach(envelope => + return fetchEnvelopes(accountId, folderId, query, lastEnvelope.dateInt).then((envelopes) => { + envelopes.forEach((envelope) => commit('addEnvelope', { accountId, folderId, @@ -356,13 +356,13 @@ export default { if (folder.isUnified) { return Promise.all( getters.accounts - .filter(account => !account.isUnified) - .map(account => + .filter((account) => !account.isUnified) + .map((account) => Promise.all( getters .getFolders(account.id) - .filter(f => f.specialRole === folder.specialRole) - .map(folder => + .filter((f) => f.specialRole === folder.specialRole) + .map((folder) => dispatch('syncEnvelopes', { accountId: account.id, folderId: folder.id, @@ -375,13 +375,13 @@ export default { ) } - const uids = getters.getEnvelopes(accountId, folderId, query).map(env => env.id) + const uids = getters.getEnvelopes(accountId, folderId, query).map((env) => env.id) return syncEnvelopes(accountId, folderId, uids, query, init) - .then(syncData => { + .then((syncData) => { const unifiedFolder = getters.getUnifiedFolder(folder.specialRole) - syncData.newMessages.forEach(envelope => { + syncData.newMessages.forEach((envelope) => { commit('addEnvelope', { accountId, folderId, @@ -394,12 +394,12 @@ export default { }) } }) - syncData.changedMessages.forEach(envelope => { + syncData.changedMessages.forEach((envelope) => { commit('updateEnvelope', { envelope, }) }) - syncData.vanishedMessages.forEach(id => { + syncData.vanishedMessages.forEach((id) => { commit('removeEnvelope', { accountId, folderId, @@ -411,7 +411,7 @@ export default { return syncData.newMessages }) - .catch(error => { + .catch((error) => { return matchError(error, { [SyncIncompleteError.getName()]() { console.warn('(initial) sync is incomplete, retriggering') @@ -426,10 +426,10 @@ export default { async syncInboxes({getters, dispatch}) { return await Promise.all( getters.accounts - .filter(a => !a.isUnified) - .map(account => { + .filter((a) => !a.isUnified) + .map((account) => { return Promise.all( - getters.getFolders(account.id).map(async folder => { + getters.getFolders(account.id).map(async (folder) => { if (folder.specialRole !== 'inbox') { return } @@ -449,8 +449,8 @@ export default { }) ) }) - ).then(results => { - const newMessages = flatMapDeep(identity, results).filter(m => m !== undefined) + ).then((results) => { + const newMessages = flatMapDeep(identity, results).filter((m) => m !== undefined) if (newMessages.length > 0) { showNewMessagesNotification(newMessages) } @@ -465,7 +465,7 @@ export default { value: !oldState, }) - setEnvelopeFlag(envelope.accountId, envelope.folderId, envelope.id, 'flagged', !oldState).catch(e => { + setEnvelopeFlag(envelope.accountId, envelope.folderId, envelope.id, 'flagged', !oldState).catch((e) => { console.error('could not toggle message flagged state', e) // Revert change @@ -485,7 +485,7 @@ export default { value: !oldState, }) - setEnvelopeFlag(envelope.accountId, envelope.folderId, envelope.id, 'unseen', !oldState).catch(e => { + setEnvelopeFlag(envelope.accountId, envelope.folderId, envelope.id, 'unseen', !oldState).catch((e) => { console.error('could not toggle message unseen state', e) // Revert change @@ -498,7 +498,7 @@ export default { }, fetchMessage({commit}, uid) { const {accountId, folderId, id} = parseUid(uid) - return fetchMessage(accountId, folderId, id).then(message => { + return fetchMessage(accountId, folderId, id).then((message) => { // Only commit if not undefined (not found) if (message) { commit('addMessage', { @@ -531,7 +531,7 @@ export default { commit('removeMessage', {accountId, folder, id}) console.log('message removed') }) - .catch(err => { + .catch((err) => { console.error('could not delete message', err) const envelope = getters.getEnvelope(accountId, folderId, id) if (envelope) { diff --git a/src/store/getters.js b/src/store/getters.js index 3b4e9698a07e24c15ec864b3798b84693fa2d089..68859f503d9cc080e723506737a644e746a7ebc3 100644 --- a/src/store/getters.js +++ b/src/store/getters.js @@ -25,44 +25,44 @@ import {UNIFIED_ACCOUNT_ID} from './constants' import {normalizedEnvelopeListId, normalizedFolderId, normalizedMessageId} from './normalization' export const getters = { - getPreference: state => (key, def) => { + getPreference: (state) => (key, def) => { return defaultTo(def, state.preferences[key]) }, - getAccount: state => id => { + getAccount: (state) => (id) => { return state.accounts[id] }, - accounts: state => { - return state.accountList.map(id => state.accounts[id]) + accounts: (state) => { + return state.accountList.map((id) => state.accounts[id]) }, - getFolder: state => (accountId, folderId) => { + getFolder: (state) => (accountId, folderId) => { return state.folders[normalizedFolderId(accountId, folderId)] }, - getFolders: state => accountId => { - return state.accounts[accountId].folders.map(folderId => state.folders[folderId]) + getFolders: (state) => (accountId) => { + return state.accounts[accountId].folders.map((folderId) => state.folders[folderId]) }, getSubfolders: (state, getters) => (accountId, folderId) => { const folder = getters.getFolder(accountId, folderId) - return folder.folders.map(id => state.folders[id]) + return folder.folders.map((id) => state.folders[id]) }, - getUnifiedFolder: state => specialRole => { + getUnifiedFolder: (state) => (specialRole) => { return head( state.accounts[UNIFIED_ACCOUNT_ID].folders - .map(folderId => state.folders[folderId]) - .filter(folder => folder.specialRole === specialRole) + .map((folderId) => state.folders[folderId]) + .filter((folder) => folder.specialRole === specialRole) ) }, - getEnvelope: state => (accountId, folderId, id) => { + getEnvelope: (state) => (accountId, folderId, id) => { return state.envelopes[normalizedMessageId(accountId, folderId, id)] }, - getEnvelopeById: state => id => { + getEnvelopeById: (state) => (id) => { return state.envelopes[id] }, getEnvelopes: (state, getters) => (accountId, folderId, query) => { const list = getters.getFolder(accountId, folderId).envelopeLists[normalizedEnvelopeListId(query)] || [] - return list.map(msgId => state.envelopes[msgId]) + return list.map((msgId) => state.envelopes[msgId]) }, - getMessage: state => (accountId, folderId, id) => { + getMessage: (state) => (accountId, folderId, id) => { return state.messages[normalizedMessageId(accountId, folderId, id)] }, } diff --git a/src/store/mutations.js b/src/store/mutations.js index c9b5cb8f38a527ae1cdc56e1ab9aca40beb78a4d..9d877dbea99ac780b67a59b494fd1f95e44865d1 100644 --- a/src/store/mutations.js +++ b/src/store/mutations.js @@ -29,7 +29,7 @@ import {normalizedFolderId, normalizedMessageId, normalizedEnvelopeListId} from import {sortMailboxes} from '../imap/MailboxSorter' import {UNIFIED_ACCOUNT_ID} from './constants' -const addFolderToState = (state, account) => folder => { +const addFolderToState = (state, account) => (folder) => { const id = normalizedFolderId(account.id, folder.id) folder.accountId = account.id folder.envelopeLists = {} @@ -37,7 +37,7 @@ const addFolderToState = (state, account) => folder => { return id } -const sortAccounts = accounts => { +const sortAccounts = (accounts) => { accounts.sort((a1, a2) => a1.order - a2.order) return accounts } @@ -52,14 +52,14 @@ export default { Vue.set( state, 'accountList', - sortAccounts(state.accountList.concat([account.id]).map(id => state.accounts[id])).map(a => a.id) + sortAccounts(state.accountList.concat([account.id]).map((id) => state.accounts[id])).map((a) => a.id) ) // Save the folders to the store, but only keep IDs in the account's folder list const folders = buildMailboxHierarchy(sortMailboxes(account.folders || []), havePrefix(account.folders)) Vue.set(account, 'folders', []) const addToState = addFolderToState(state, account) - folders.forEach(folder => { + folders.forEach((folder) => { // Add all folders (including subfolders to state, but only toplevel to account const id = addToState(folder) Vue.set(folder, 'folders', folder.folders.map(addToState)) @@ -75,7 +75,7 @@ export default { Vue.set( state, 'accountList', - sortAccounts(state.accountList.map(id => state.accounts[id])).map(a => a.id) + sortAccounts(state.accountList.map((id) => state.accounts[id])).map((a) => a.id) ) }, toggleAccountCollapsed(state, accountId) { @@ -83,12 +83,12 @@ export default { }, addFolder(state, {account, folder}) { // Flatten the existing ones before updating the hierarchy - const existing = account.folders.map(id => state.folders[id]) - existing.forEach(folder => { + const existing = account.folders.map((id) => state.folders[id]) + existing.forEach((folder) => { if (!folder.folders) { return } - folder.folders.map(id => existing.push(state.folders[id])) + folder.folders.map((id) => existing.push(state.folders[id])) folder.folders = [] }) // Save the folders to the store, but only keep IDs in the account's folder list @@ -96,7 +96,7 @@ export default { const folders = buildMailboxHierarchy(sortMailboxes(existing), havePrefix(existing)) Vue.set(account, 'folders', []) const addToState = addFolderToState(state, account) - folders.forEach(folder => { + folders.forEach((folder) => { // Add all folders (including subfolders to state, but only toplevel to account const id = addToState(folder) Vue.set(folder, 'folders', folder.folders.map(addToState)) @@ -112,7 +112,7 @@ export default { Vue.set( folder.envelopeLists, listId, - sortedUniq(orderBy(id => state.envelopes[id].dateInt, 'desc', existing.concat([envelope.uid]))) + sortedUniq(orderBy((id) => state.envelopes[id].dateInt, 'desc', existing.concat([envelope.uid]))) ) }, updateEnvelope(state, {envelope}) { @@ -144,9 +144,9 @@ export default { const unifiedAccount = state.accounts[UNIFIED_ACCOUNT_ID] unifiedAccount.folders - .map(fId => state.folders[fId]) - .filter(f => f.specialRole === folder.specialRole) - .forEach(folder => { + .map((fId) => state.folders[fId]) + .filter((f) => f.specialRole === folder.specialRole) + .forEach((folder) => { const list = folder.envelopeLists[normalizedEnvelopeListId(query)] if (!list) { console.warn( diff --git a/src/tests/unit/ReplyBuilder.spec.js b/src/tests/unit/ReplyBuilder.spec.js index 6905e53e26a57d42e777d16fb4b507dd874fb002..2b8ef6f2ab4a0de36d01b055d15a8ab4e067ef26 100644 --- a/src/tests/unit/ReplyBuilder.spec.js +++ b/src/tests/unit/ReplyBuilder.spec.js @@ -50,11 +50,11 @@ describe('ReplyBuilder', () => { let envelope - beforeEach(function() { + beforeEach(function () { envelope = {} }) - const createAddress = addr => { + const createAddress = (addr) => { return { label: addr, email: addr, @@ -62,8 +62,8 @@ describe('ReplyBuilder', () => { } const assertSameAddressList = (l1, l2) => { - const rawL1 = l1.map(a => a.email) - const rawL2 = l2.map(a => a.email) + const rawL1 = l1.map((a) => a.email) + const rawL2 = l2.map((a) => a.email) rawL1.sort() rawL2.sort() expect(rawL1).to.deep.equal(rawL2) diff --git a/src/tests/unit/errors/match.spec.js b/src/tests/unit/errors/match.spec.js index bf0897161953a759c34ca66a054081e68523981b..a21265109fcbce92a23fcd89ff10095d38fb63e8 100644 --- a/src/tests/unit/errors/match.spec.js +++ b/src/tests/unit/errors/match.spec.js @@ -22,33 +22,33 @@ import {matchError} from '../../../errors/match' describe('match', () => { - it('throws an error when nothing matches', done => { + it('throws an error when nothing matches', (done) => { const error = new Error('henlo') matchError(error, {}).catch(() => done()) }) - it('uses the default', done => { + it('uses the default', (done) => { const map = { - default: error => 3, + default: (error) => 3, } const error = new Error('henlo') - matchError(error, map).then(result => { + matchError(error, map).then((result) => { expect(expect(result).to.equal(3)) done() }) }) - it('matches errors', done => { + it('matches errors', (done) => { const map = { - MyErr: error => 2, - default: error => 3, + MyErr: (error) => 2, + default: (error) => 3, } const error = new Error('henlo') error.name = 'MyErr' - matchError(error, map).then(result => { + matchError(error, map).then((result) => { expect(expect(result).to.equal(2)) done() }) diff --git a/src/tests/unit/store/actions.spec.js b/src/tests/unit/store/actions.spec.js index b887071018b34d351b085ab10020eac50006ea2c..a0e0065a69340c321d460886fe128c9fce4c143d 100644 --- a/src/tests/unit/store/actions.spec.js +++ b/src/tests/unit/store/actions.spec.js @@ -153,7 +153,7 @@ describe('Vuex store actions', () => { sinon.stub(MessageService, 'fetchEnvelopes').returns( Promise.resolve( reverse( - range(1, 21).map(n => ({ + range(1, 21).map((n) => ({ id: n, uid: normalizedMessageId(13, 'INBOX', n), dateInt: n * 10000, @@ -169,7 +169,7 @@ describe('Vuex store actions', () => { expect(page).to.deep.equal( reverse( - range(1, 21).map(n => ({ + range(1, 21).map((n) => ({ id: n, uid: normalizedMessageId(13, 'INBOX', n), dateInt: n * 10000, diff --git a/src/tests/unit/util/wait.spec.js b/src/tests/unit/util/wait.spec.js index 90a74ae3cbeeaab383659515c367cf1514484bf4..2501194495b9fccd3f28f1569f5859dfeef7457c 100644 --- a/src/tests/unit/util/wait.spec.js +++ b/src/tests/unit/util/wait.spec.js @@ -22,7 +22,7 @@ import {wait} from '../../../util/wait' describe('wait', () => { - it('waits', done => { + it('waits', (done) => { wait(0).then(done) }) }) diff --git a/src/util/AccountColor.js b/src/util/AccountColor.js index 8cef360bfb32656b78a260d568a2b73ccf7905b7..587e48d620f42ac6d3b0982a69fa81e9d8949547 100644 --- a/src/util/AccountColor.js +++ b/src/util/AccountColor.js @@ -22,7 +22,7 @@ import md5 from 'md5' import conv from 'color-convert' -export const calculateAccountColor = name => { +export const calculateAccountColor = (name) => { const hashed = md5(name) const hsl = conv.hex.hsl(hashed) const fixedHsl = [Math.round(hsl[0] / 40) * 40, hsl[1], hsl[2]] diff --git a/src/util/CrashReport.js b/src/util/CrashReport.js index 59f33f11890177ca8279b221512b0ec03894dadf..02dd077823b178b31cda25f45139917e9015dd5e 100644 --- a/src/util/CrashReport.js +++ b/src/util/CrashReport.js @@ -21,7 +21,7 @@ import IssueTemplateBuilder from 'nextcloud_issuetemplate_builder' -const flattenError = error => { +const flattenError = (error) => { let text = '' if (error.type) { text += error.type + ': ' @@ -37,8 +37,8 @@ const flattenError = error => { return text } -const flattenTrace = trace => { - return trace.reduce(function(acc, entry) { +const flattenTrace = (trace) => { + return trace.reduce(function (acc, entry) { var text = '' if (entry.class) { text += ' at ' + entry.class + '::' + entry.function @@ -52,7 +52,7 @@ const flattenTrace = trace => { }, '') } -export const getReportUrl = error => { +export const getReportUrl = (error) => { console.error(error) var message = error.message || 'An unkown error occurred.' if (!message.endsWith('.')) { diff --git a/src/util/EnvelopeUidParser.js b/src/util/EnvelopeUidParser.js index 4aabdcf0f0db68b0d4b9fe052c10fdbf46e8a463..96da73cb33672ac05e821fc05a667668f078e959 100644 --- a/src/util/EnvelopeUidParser.js +++ b/src/util/EnvelopeUidParser.js @@ -21,7 +21,7 @@ const reg = /^(-?\d+)-((?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{4}))-(\d+)$/ -export const parseUid = str => { +export const parseUid = (str) => { const match = reg.exec(str) if (match === null) { diff --git a/src/util/ErrorMessageFactory.js b/src/util/ErrorMessageFactory.js index 3a3c1b27788c688874cb54c2700df0e77b0c5529..818e54dd0bbc879b7c50448869a19d987cda399f 100644 --- a/src/util/ErrorMessageFactory.js +++ b/src/util/ErrorMessageFactory.js @@ -29,7 +29,7 @@ const getRandomSmiley = () => { * @param {Folder} folder * @returns {string} */ -export const getRandomFolderErrorMessage = folder => { +export const getRandomFolderErrorMessage = (folder) => { const folderName = folder.get('name') const rawTexts = [ t('mail', 'Could not load {tag}{name}{endtag}', { @@ -42,7 +42,7 @@ export const getRandomFolderErrorMessage = folder => { name: folderName, }), ] - const texts = rawTexts.map(text => text.replace('{tag}', '<strong>').replace('{endtag}', '</strong>')) + const texts = rawTexts.map((text) => text.replace('{tag}', '<strong>').replace('{endtag}', '</strong>')) const text = texts[Math.floor(Math.random() * texts.length)] return text + ' ' + getRandomSmiley() } diff --git a/src/util/HtmlHelper.js b/src/util/HtmlHelper.js index f74cb176c0eb4c603f0f66e4e229a2c4a6fe22ec..a1206d421c39d2e07ab2754274fd23e6125ae5b6 100644 --- a/src/util/HtmlHelper.js +++ b/src/util/HtmlHelper.js @@ -10,7 +10,7 @@ import {fromString} from 'html-to-text' -export const htmlToText = html => { +export const htmlToText = (html) => { const withBlockBreaks = html.replace(/<\/div>/gi, '</div><br>') const text = fromString(withBlockBreaks, { @@ -19,12 +19,12 @@ export const htmlToText = html => { ignoreImage: true, wordwrap: false, format: { - blockquote: function(element, fn, options) { + blockquote: function (element, fn, options) { return fn(element.children, options) .replace(/\n\n\n/g, '\n\n') // remove triple line breaks .replace(/^/gm, '> ') // add > quotation to each line }, - paragraph: function(element, fn, options) { + paragraph: function (element, fn, options) { return fn(element.children, options) + '\n' }, }, @@ -36,6 +36,6 @@ export const htmlToText = html => { .replace(/ $/gm, '') // trim white space at end of each line } -export const textToSimpleHtml = text => { +export const textToSimpleHtml = (text) => { return text.replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1<br>$2') } diff --git a/src/util/wait.js b/src/util/wait.js index 7a9dff8be45c200419e4f6ad35aa76c8ef375889..97f7951136ff0aeb3cfd948b9fefc731cb060c7d 100644 --- a/src/util/wait.js +++ b/src/util/wait.js @@ -19,8 +19,8 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -export const wait = ms => { - return new Promise(res => { +export const wait = (ms) => { + return new Promise((res) => { setTimeout(res, ms) }) } diff --git a/src/views/AccountSettings.vue b/src/views/AccountSettings.vue index 9ddd15c887ad36bef74f757e751a6bc9e61acb2c..a7beda159ed270777cc9176f1d0213dfc2a38405 100644 --- a/src/views/AccountSettings.vue +++ b/src/views/AccountSettings.vue @@ -78,8 +78,8 @@ export default { ...data, accountId: this.$route.params.accountId, }) - .then(account => account) - .catch(error => { + .then((account) => account) + .catch((error) => { Logger.error('account update failed:', {error}) throw error diff --git a/src/views/Setup.vue b/src/views/Setup.vue index 4de985c5a1df2eddb8aa979f65f9b45078514f8d..141516f6ce6af677c2cef189b466cba1a5dad315 100644 --- a/src/views/Setup.vue +++ b/src/views/Setup.vue @@ -47,7 +47,7 @@ export default { return this.$store .dispatch('createAccount', data) - .then(account => { + .then((account) => { logger.info('account successfully created, redirecting …') this.$router.push({ name: 'home', @@ -55,7 +55,7 @@ export default { return account }) - .catch(error => { + .catch((error) => { logger.error('Could not create account', {error}) if (error.message) {