mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-07-13 03:27:39 +03:00
isNonEmptyArray => arrayLength
This commit is contained in:
parent
1e49c1a6ac
commit
5590fd4860
20 changed files with 68 additions and 74 deletions
|
|
@ -1,6 +1,6 @@
|
||||||
import 'External/User/ko';
|
import 'External/User/ko';
|
||||||
|
|
||||||
import { isArray, isNonEmptyArray, pInt, pString } from 'Common/Utils';
|
import { isArray, arrayLength, pInt, pString } from 'Common/Utils';
|
||||||
import { isPosNumeric, delegateRunOnDestroy, mailToHelper } from 'Common/UtilsUser';
|
import { isPosNumeric, delegateRunOnDestroy, mailToHelper } from 'Common/UtilsUser';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
|
|
@ -261,7 +261,7 @@ class AppUser extends AbstractApp {
|
||||||
setFolderHash(FolderUserStore.currentFolderFullNameRaw(), '');
|
setFolderHash(FolderUserStore.currentFolderFullNameRaw(), '');
|
||||||
alert(getNotification(iError));
|
alert(getNotification(iError));
|
||||||
} else if (FolderUserStore.currentFolder()) {
|
} else if (FolderUserStore.currentFolder()) {
|
||||||
if (isArray(oData.Result) && 2 === oData.Result.length) {
|
if (2 === arrayLength(oData.Result)) {
|
||||||
setFolderHash(oData.Result[0], oData.Result[1]);
|
setFolderHash(oData.Result[0], oData.Result[1]);
|
||||||
} else {
|
} else {
|
||||||
setFolderHash(FolderUserStore.currentFolderFullNameRaw(), '');
|
setFolderHash(FolderUserStore.currentFolderFullNameRaw(), '');
|
||||||
|
|
@ -348,7 +348,7 @@ class AppUser extends AbstractApp {
|
||||||
* @param {boolean=} bCopy = false
|
* @param {boolean=} bCopy = false
|
||||||
*/
|
*/
|
||||||
moveMessagesToFolder(sFromFolderFullNameRaw, aUidForMove, sToFolderFullNameRaw, bCopy) {
|
moveMessagesToFolder(sFromFolderFullNameRaw, aUidForMove, sToFolderFullNameRaw, bCopy) {
|
||||||
if (sFromFolderFullNameRaw !== sToFolderFullNameRaw && isArray(aUidForMove) && aUidForMove.length) {
|
if (sFromFolderFullNameRaw !== sToFolderFullNameRaw && arrayLength(aUidForMove)) {
|
||||||
const oFromFolder = getFolderFromCacheList(sFromFolderFullNameRaw),
|
const oFromFolder = getFolderFromCacheList(sFromFolderFullNameRaw),
|
||||||
oToFolder = getFolderFromCacheList(sToFolderFullNameRaw);
|
oToFolder = getFolderFromCacheList(sToFolderFullNameRaw);
|
||||||
|
|
||||||
|
|
@ -519,8 +519,7 @@ class AppUser extends AbstractApp {
|
||||||
Remote.quota((iError, data) => {
|
Remote.quota((iError, data) => {
|
||||||
if (
|
if (
|
||||||
!iError &&
|
!iError &&
|
||||||
isArray(data.Result) &&
|
1 < arrayLength(data.Result) &&
|
||||||
1 < data.Result.length &&
|
|
||||||
isPosNumeric(data.Result[0], true) &&
|
isPosNumeric(data.Result[0], true) &&
|
||||||
isPosNumeric(data.Result[1], true)
|
isPosNumeric(data.Result[1], true)
|
||||||
) {
|
) {
|
||||||
|
|
@ -614,9 +613,9 @@ class AppUser extends AbstractApp {
|
||||||
*/
|
*/
|
||||||
folderInformationMultiply(boot = false) {
|
folderInformationMultiply(boot = false) {
|
||||||
const folders = FolderUserStore.getNextFolderNames(refreshFolders);
|
const folders = FolderUserStore.getNextFolderNames(refreshFolders);
|
||||||
if (isNonEmptyArray(folders)) {
|
if (arrayLength(folders)) {
|
||||||
Remote.folderInformationMultiply((iError, oData) => {
|
Remote.folderInformationMultiply((iError, oData) => {
|
||||||
if (!iError && isNonEmptyArray(oData.Result.List)) {
|
if (!iError && arrayLength(oData.Result.List)) {
|
||||||
const utc = Date.now();
|
const utc = Date.now();
|
||||||
oData.Result.List.forEach(item => {
|
oData.Result.List.forEach(item => {
|
||||||
const hash = getFolderHash(item.Folder),
|
const hash = getFolderHash(item.Folder),
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import { MessageSetAction } from 'Common/EnumsUser';
|
import { MessageSetAction } from 'Common/EnumsUser';
|
||||||
import { isNonEmptyArray, pInt } from 'Common/Utils';
|
import { arrayLength, pInt } from 'Common/Utils';
|
||||||
|
|
||||||
let FOLDERS_CACHE = {},
|
let FOLDERS_CACHE = {},
|
||||||
FOLDERS_NAME_CACHE = {},
|
FOLDERS_NAME_CACHE = {},
|
||||||
|
|
@ -255,7 +255,7 @@ export class MessageFlagsCache
|
||||||
* @param {Array} flags
|
* @param {Array} flags
|
||||||
*/
|
*/
|
||||||
static storeByFolderAndUid(folder, uid, flags) {
|
static storeByFolderAndUid(folder, uid, flags) {
|
||||||
if (isNonEmptyArray(flags)) {
|
if (arrayLength(flags)) {
|
||||||
this.setFor(folder, uid, flags);
|
this.setFor(folder, uid, flags);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -269,7 +269,7 @@ export class MessageFlagsCache
|
||||||
let unread = 0;
|
let unread = 0;
|
||||||
const flags = this.getFor(folder, uid);
|
const flags = this.getFor(folder, uid);
|
||||||
|
|
||||||
if (isNonEmptyArray(flags)) {
|
if (arrayLength(flags)) {
|
||||||
if (flags[0]) {
|
if (flags[0]) {
|
||||||
unread = 1;
|
unread = 1;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
/* eslint key-spacing: 0 */
|
/* eslint key-spacing: 0 */
|
||||||
/* eslint quote-props: 0 */
|
/* eslint quote-props: 0 */
|
||||||
|
|
||||||
import { isNonEmptyArray } from 'Common/Utils';
|
import { arrayLength } from 'Common/Utils';
|
||||||
|
|
||||||
const
|
const
|
||||||
cache = {},
|
cache = {},
|
||||||
|
|
@ -250,7 +250,7 @@ export const FileInfo = {
|
||||||
* @returns {string}
|
* @returns {string}
|
||||||
*/
|
*/
|
||||||
getCombinedIconClass: data => {
|
getCombinedIconClass: data => {
|
||||||
if (isNonEmptyArray(data)) {
|
if (arrayLength(data)) {
|
||||||
let icons = data
|
let icons = data
|
||||||
.map(item => item ? FileInfo.getIconClass(FileInfo.getExtension(item[0]), item[1]) : '')
|
.map(item => item ? FileInfo.getIconClass(FileInfo.getExtension(item[0]), item[1]) : '')
|
||||||
.validUnique();
|
.validUnique();
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ import { doc, elementById } from 'Common/Globals';
|
||||||
|
|
||||||
export const
|
export const
|
||||||
isArray = Array.isArray,
|
isArray = Array.isArray,
|
||||||
isNonEmptyArray = array => isArray(array) && array.length,
|
arrayLength = array => isArray(array) && array.length,
|
||||||
isFunction = v => typeof v === 'function';
|
isFunction = v => typeof v === 'function';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -116,7 +116,7 @@ export function changeTheme(value, themeTrigger = ()=>{}) {
|
||||||
}
|
}
|
||||||
rl.fetchJSON(url, init)
|
rl.fetchJSON(url, init)
|
||||||
.then(data => {
|
.then(data => {
|
||||||
if (data && isArray(data) && 2 === data.length) {
|
if (2 === arrayLength(data)) {
|
||||||
themeStyle.textContent = data[1];
|
themeStyle.textContent = data[1];
|
||||||
themeStyle.dataset.href = url;
|
themeStyle.dataset.href = url;
|
||||||
themeStyle.dataset.theme = data[0];
|
themeStyle.dataset.theme = data[0];
|
||||||
|
|
|
||||||
4
dev/External/ko.js
vendored
4
dev/External/ko.js
vendored
|
|
@ -1,7 +1,7 @@
|
||||||
import { i18nToNodes } from 'Common/Translator';
|
import { i18nToNodes } from 'Common/Translator';
|
||||||
import { doc, createElement } from 'Common/Globals';
|
import { doc, createElement } from 'Common/Globals';
|
||||||
import { SaveSettingsStep } from 'Common/Enums';
|
import { SaveSettingsStep } from 'Common/Enums';
|
||||||
import { isNonEmptyArray, isFunction } from 'Common/Utils';
|
import { arrayLength, isFunction } from 'Common/Utils';
|
||||||
|
|
||||||
const
|
const
|
||||||
koValue = value => !ko.isObservable(value) && isFunction(value) ? value() : ko.unwrap(value);
|
koValue = value => !ko.isObservable(value) && isFunction(value) ? value() : ko.unwrap(value);
|
||||||
|
|
@ -136,7 +136,7 @@ ko.extenders.limitedList = (target, limitedList) => {
|
||||||
const currentValue = ko.unwrap(target),
|
const currentValue = ko.unwrap(target),
|
||||||
list = ko.unwrap(limitedList);
|
list = ko.unwrap(limitedList);
|
||||||
|
|
||||||
if (isNonEmptyArray(list)) {
|
if (arrayLength(list)) {
|
||||||
if (list.includes(newValue)) {
|
if (list.includes(newValue)) {
|
||||||
target(newValue);
|
target(newValue);
|
||||||
} else if (list.includes(currentValue, list)) {
|
} else if (list.includes(currentValue, list)) {
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
import { isArray, isNonEmptyArray } from 'Common/Utils';
|
import { isArray, arrayLength } from 'Common/Utils';
|
||||||
|
|
||||||
export class AbstractScreen {
|
export class AbstractScreen {
|
||||||
constructor(screenName, viewModels = []) {
|
constructor(screenName, viewModels = []) {
|
||||||
|
|
@ -42,7 +42,7 @@ export class AbstractScreen {
|
||||||
if (!this.__started) {
|
if (!this.__started) {
|
||||||
this.__started = true;
|
this.__started = true;
|
||||||
const routes = this.routes();
|
const routes = this.routes();
|
||||||
if (isNonEmptyArray(routes)) {
|
if (arrayLength(routes)) {
|
||||||
let route = new Crossroads(),
|
let route = new Crossroads(),
|
||||||
fMatcher = (this.onRoute || (()=>{})).bind(this);
|
fMatcher = (this.onRoute || (()=>{})).bind(this);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import ko from 'ko';
|
import ko from 'ko';
|
||||||
|
|
||||||
import { doc, $htmlCL } from 'Common/Globals';
|
import { doc, $htmlCL } from 'Common/Globals';
|
||||||
import { isNonEmptyArray, isFunction } from 'Common/Utils';
|
import { arrayLength, isFunction } from 'Common/Utils';
|
||||||
|
|
||||||
let currentScreen = null,
|
let currentScreen = null,
|
||||||
defaultScreenName = '';
|
defaultScreenName = '';
|
||||||
|
|
@ -227,7 +227,7 @@ function screenOnRoute(screenName, subPart) {
|
||||||
currentScreen.onHide && currentScreen.onHide();
|
currentScreen.onHide && currentScreen.onHide();
|
||||||
currentScreen.onHideWithDelay && setTimeout(()=>currentScreen.onHideWithDelay(), 500);
|
currentScreen.onHideWithDelay && setTimeout(()=>currentScreen.onHideWithDelay(), 500);
|
||||||
|
|
||||||
if (isNonEmptyArray(currentScreen.viewModels)) {
|
if (arrayLength(currentScreen.viewModels)) {
|
||||||
currentScreen.viewModels.forEach(ViewModelClass => {
|
currentScreen.viewModels.forEach(ViewModelClass => {
|
||||||
if (
|
if (
|
||||||
ViewModelClass.__vm &&
|
ViewModelClass.__vm &&
|
||||||
|
|
@ -251,7 +251,7 @@ function screenOnRoute(screenName, subPart) {
|
||||||
if (currentScreen && !isSameScreen) {
|
if (currentScreen && !isSameScreen) {
|
||||||
currentScreen.onShow && currentScreen.onShow();
|
currentScreen.onShow && currentScreen.onShow();
|
||||||
|
|
||||||
if (isNonEmptyArray(currentScreen.viewModels)) {
|
if (arrayLength(currentScreen.viewModels)) {
|
||||||
currentScreen.viewModels.forEach(ViewModelClass => {
|
currentScreen.viewModels.forEach(ViewModelClass => {
|
||||||
if (
|
if (
|
||||||
ViewModelClass.__vm &&
|
ViewModelClass.__vm &&
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
import { isNonEmptyArray } from 'Common/Utils';
|
import { arrayLength } from 'Common/Utils';
|
||||||
import { ContactPropertyModel, ContactPropertyType } from 'Model/ContactProperty';
|
import { ContactPropertyModel, ContactPropertyType } from 'Model/ContactProperty';
|
||||||
import { AbstractModel } from 'Knoin/AbstractModel';
|
import { AbstractModel } from 'Knoin/AbstractModel';
|
||||||
|
|
||||||
|
|
@ -26,7 +26,7 @@ export class ContactModel extends AbstractModel {
|
||||||
let name = '',
|
let name = '',
|
||||||
email = '';
|
email = '';
|
||||||
|
|
||||||
if (isNonEmptyArray(this.properties)) {
|
if (arrayLength(this.properties)) {
|
||||||
this.properties.forEach(property => {
|
this.properties.forEach(property => {
|
||||||
if (property) {
|
if (property) {
|
||||||
if (ContactPropertyType.FirstName === property.type()) {
|
if (ContactPropertyType.FirstName === property.type()) {
|
||||||
|
|
@ -52,7 +52,7 @@ export class ContactModel extends AbstractModel {
|
||||||
const contact = super.reviveFromJson(json);
|
const contact = super.reviveFromJson(json);
|
||||||
if (contact) {
|
if (contact) {
|
||||||
let list = [];
|
let list = [];
|
||||||
if (isNonEmptyArray(json.properties)) {
|
if (arrayLength(json.properties)) {
|
||||||
json.properties.forEach(property => {
|
json.properties.forEach(property => {
|
||||||
property = ContactPropertyModel.reviveFromJson(property);
|
property = ContactPropertyModel.reviveFromJson(property);
|
||||||
property && list.push(property);
|
property && list.push(property);
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import ko from 'ko';
|
import ko from 'ko';
|
||||||
|
|
||||||
import { isNonEmptyArray, pString } from 'Common/Utils';
|
import { arrayLength, pString } from 'Common/Utils';
|
||||||
import { delegateRunOnDestroy } from 'Common/UtilsUser';
|
import { delegateRunOnDestroy } from 'Common/UtilsUser';
|
||||||
import { i18n } from 'Common/Translator';
|
import { i18n } from 'Common/Translator';
|
||||||
import { getFolderFromCacheList } from 'Common/Cache';
|
import { getFolderFromCacheList } from 'Common/Cache';
|
||||||
|
|
@ -230,7 +230,7 @@ export class FilterModel extends AbstractModel {
|
||||||
|
|
||||||
filter.conditions([]);
|
filter.conditions([]);
|
||||||
|
|
||||||
if (isNonEmptyArray(json.Conditions)) {
|
if (arrayLength(json.Conditions)) {
|
||||||
filter.conditions(
|
filter.conditions(
|
||||||
json.Conditions.map(aData => FilterConditionModel.reviveFromJson(aData)).filter(v => v)
|
json.Conditions.map(aData => FilterConditionModel.reviveFromJson(aData)).filter(v => v)
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ import { MessagePriority } from 'Common/EnumsUser';
|
||||||
import { i18n } from 'Common/Translator';
|
import { i18n } from 'Common/Translator';
|
||||||
|
|
||||||
import { encodeHtml } from 'Common/Html';
|
import { encodeHtml } from 'Common/Html';
|
||||||
import { isArray, isNonEmptyArray } from 'Common/Utils';
|
import { isArray, arrayLength } from 'Common/Utils';
|
||||||
|
|
||||||
import { serverRequestRaw } from 'Common/Links';
|
import { serverRequestRaw } from 'Common/Links';
|
||||||
|
|
||||||
|
|
@ -229,7 +229,7 @@ export class MessageModel extends AbstractModel {
|
||||||
*/
|
*/
|
||||||
fromDkimData() {
|
fromDkimData() {
|
||||||
let result = ['none', ''];
|
let result = ['none', ''];
|
||||||
if (isNonEmptyArray(this.from) && 1 === this.from.length && this.from[0] && this.from[0].dkimStatus) {
|
if (1 === arrayLength(this.from) && this.from[0] && this.from[0].dkimStatus) {
|
||||||
result = [this.from[0].dkimStatus, this.from[0].dkimValue || ''];
|
result = [this.from[0].dkimStatus, this.from[0].dkimValue || ''];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import ko from 'ko';
|
import ko from 'ko';
|
||||||
|
|
||||||
import { isNonEmptyArray } from 'Common/Utils';
|
import { arrayLength } from 'Common/Utils';
|
||||||
import { AbstractModel } from 'Knoin/AbstractModel';
|
import { AbstractModel } from 'Knoin/AbstractModel';
|
||||||
import { PgpUserStore } from 'Stores/User/Pgp';
|
import { PgpUserStore } from 'Stores/User/Pgp';
|
||||||
|
|
||||||
|
|
@ -21,7 +21,7 @@ export class OpenPgpKeyModel extends AbstractModel {
|
||||||
|
|
||||||
this.index = index;
|
this.index = index;
|
||||||
this.id = ID;
|
this.id = ID;
|
||||||
this.ids = isNonEmptyArray(IDs) ? IDs : [ID];
|
this.ids = arrayLength(IDs) ? IDs : [ID];
|
||||||
this.guid = guID;
|
this.guid = guID;
|
||||||
this.user = '';
|
this.user = '';
|
||||||
this.users = userIDs;
|
this.users = userIDs;
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ import ko from 'ko';
|
||||||
|
|
||||||
import { AbstractModel } from 'Knoin/AbstractModel';
|
import { AbstractModel } from 'Knoin/AbstractModel';
|
||||||
import { FilterModel } from 'Model/Filter';
|
import { FilterModel } from 'Model/Filter';
|
||||||
import { isNonEmptyArray, pString } from 'Common/Utils';
|
import { arrayLength, pString } from 'Common/Utils';
|
||||||
|
|
||||||
const SIEVE_FILE_NAME = 'rainloop.user';
|
const SIEVE_FILE_NAME = 'rainloop.user';
|
||||||
|
|
||||||
|
|
@ -327,7 +327,7 @@ export class SieveScriptModel extends AbstractModel
|
||||||
if (script) {
|
if (script) {
|
||||||
if (script.allowFilters()) {
|
if (script.allowFilters()) {
|
||||||
script.filters(
|
script.filters(
|
||||||
isNonEmptyArray(json.filters)
|
arrayLength(json.filters)
|
||||||
? json.filters.map(aData => FilterModel.reviveFromJson(aData)).filter(v => v)
|
? json.filters.map(aData => FilterModel.reviveFromJson(aData)).filter(v => v)
|
||||||
: sieveScriptToFilters(script.body())
|
: sieveScriptToFilters(script.body())
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
import { isArray, isNonEmptyArray, pString, pInt } from 'Common/Utils';
|
import { isArray, arrayLength, pString, pInt } from 'Common/Utils';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
getFolderHash,
|
getFolderHash,
|
||||||
|
|
@ -371,7 +371,7 @@ class RemoteUserFetch extends AbstractFetchRemote {
|
||||||
let request = true;
|
let request = true;
|
||||||
const uids = [];
|
const uids = [];
|
||||||
|
|
||||||
if (isNonEmptyArray(list)) {
|
if (arrayLength(list)) {
|
||||||
request = false;
|
request = false;
|
||||||
list.forEach(messageListItem => {
|
list.forEach(messageListItem => {
|
||||||
if (!MessageFlagsCache.getFor(messageListItem.folder, messageListItem.uid)) {
|
if (!MessageFlagsCache.getFor(messageListItem.folder, messageListItem.uid)) {
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ import ko from 'ko';
|
||||||
import { MESSAGES_PER_PAGE_VALUES } from 'Common/Consts';
|
import { MESSAGES_PER_PAGE_VALUES } from 'Common/Consts';
|
||||||
import { SaveSettingsStep } from 'Common/Enums';
|
import { SaveSettingsStep } from 'Common/Enums';
|
||||||
import { EditorDefaultType, Layout } from 'Common/EnumsUser';
|
import { EditorDefaultType, Layout } from 'Common/EnumsUser';
|
||||||
import { SettingsGet } from 'Common/Globals';
|
import { Settings, SettingsGet } from 'Common/Globals';
|
||||||
import { isArray, settingsSaveHelperSimpleFunction, addObservablesTo, addSubscribablesTo } from 'Common/Utils';
|
import { isArray, settingsSaveHelperSimpleFunction, addObservablesTo, addSubscribablesTo } from 'Common/Utils';
|
||||||
import { i18n, trigger as translatorTrigger, reload as translatorReload, convertLangName } from 'Common/Translator';
|
import { i18n, trigger as translatorTrigger, reload as translatorReload, convertLangName } from 'Common/Translator';
|
||||||
|
|
||||||
|
|
@ -119,7 +119,7 @@ export class GeneralUserSettings {
|
||||||
enableSoundNotification: value => Remote.saveSetting('SoundNotification', value ? 1 : 0),
|
enableSoundNotification: value => Remote.saveSetting('SoundNotification', value ? 1 : 0),
|
||||||
notificationSound: value => {
|
notificationSound: value => {
|
||||||
Remote.saveSetting('NotificationSound', value);
|
Remote.saveSetting('NotificationSound', value);
|
||||||
rl.settings.set('NotificationSound', value);
|
Settings.set('NotificationSound', value);
|
||||||
},
|
},
|
||||||
|
|
||||||
replySameFolder: value => Remote.saveSetting('ReplySameFolder', value ? 1 : 0),
|
replySameFolder: value => Remote.saveSetting('ReplySameFolder', value ? 1 : 0),
|
||||||
|
|
@ -138,9 +138,7 @@ export class GeneralUserSettings {
|
||||||
|
|
||||||
editMainIdentity() {
|
editMainIdentity() {
|
||||||
const identity = this.identityMain();
|
const identity = this.identityMain();
|
||||||
if (identity) {
|
identity && showScreenPopup(IdentityPopupView, [identity]);
|
||||||
showScreenPopup(IdentityPopupView, [identity]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
testSoundNotification() {
|
testSoundNotification() {
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ import ko from 'ko';
|
||||||
import { Scope, Notification } from 'Common/Enums';
|
import { Scope, Notification } from 'Common/Enums';
|
||||||
import { MessageSetAction } from 'Common/EnumsUser';
|
import { MessageSetAction } from 'Common/EnumsUser';
|
||||||
import { doc, $htmlCL, createElement, elementById } from 'Common/Globals';
|
import { doc, $htmlCL, createElement, elementById } from 'Common/Globals';
|
||||||
import { isNonEmptyArray, pInt, pString, addObservablesTo, addSubscribablesTo } from 'Common/Utils';
|
import { arrayLength, pInt, pString, addObservablesTo, addSubscribablesTo } from 'Common/Utils';
|
||||||
import { plainToHtml } from 'Common/UtilsUser';
|
import { plainToHtml } from 'Common/UtilsUser';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
|
|
@ -237,7 +237,7 @@ export const MessageUserStore = new class {
|
||||||
|
|
||||||
initUidNextAndNewMessages(folder, uidNext, newMessages) {
|
initUidNextAndNewMessages(folder, uidNext, newMessages) {
|
||||||
if (getFolderInboxName() === folder && uidNext) {
|
if (getFolderInboxName() === folder && uidNext) {
|
||||||
if (isNonEmptyArray(newMessages)) {
|
if (arrayLength(newMessages)) {
|
||||||
newMessages.forEach(item => addNewMessageCache(folder, item.Uid));
|
newMessages.forEach(item => addNewMessageCache(folder, item.Uid));
|
||||||
|
|
||||||
NotificationUserStore.playSoundNotification();
|
NotificationUserStore.playSoundNotification();
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import ko from 'ko';
|
import ko from 'ko';
|
||||||
|
|
||||||
import { i18n } from 'Common/Translator';
|
import { i18n } from 'Common/Translator';
|
||||||
import { isArray, isNonEmptyArray, pString } from 'Common/Utils';
|
import { isArray, arrayLength, pString } from 'Common/Utils';
|
||||||
import { createElement } from 'Common/Globals';
|
import { createElement } from 'Common/Globals';
|
||||||
|
|
||||||
import { AccountUserStore } from 'Stores/User/Account';
|
import { AccountUserStore } from 'Stores/User/Account';
|
||||||
|
|
@ -54,7 +54,7 @@ function domControlEncryptedClickHelper(store, dom, armoredMessage, recipients)
|
||||||
decryptedMessage.getText()
|
decryptedMessage.getText()
|
||||||
);
|
);
|
||||||
} else if (validPrivateKey) {
|
} else if (validPrivateKey) {
|
||||||
const keyIds = isNonEmptyArray(signingKeyIds) ? signingKeyIds : null,
|
const keyIds = arrayLength(signingKeyIds) ? signingKeyIds : null,
|
||||||
additional = keyIds
|
additional = keyIds
|
||||||
? keyIds.map(item => (item && item.toHex ? item.toHex() : null)).filter(v => v).join(', ')
|
? keyIds.map(item => (item && item.toHex ? item.toHex() : null)).filter(v => v).join(', ')
|
||||||
: '';
|
: '';
|
||||||
|
|
@ -110,7 +110,7 @@ function domControlSignedClickHelper(store, dom, armoredMessage) {
|
||||||
message.getText()
|
message.getText()
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
const keyIds = isNonEmptyArray(signingKeyIds) ? signingKeyIds : null,
|
const keyIds = arrayLength(signingKeyIds) ? signingKeyIds : null,
|
||||||
additional = keyIds
|
additional = keyIds
|
||||||
? keyIds.map(item => (item && item.toHex ? item.toHex() : null)).filter(v => v).join(', ')
|
? keyIds.map(item => (item && item.toHex ? item.toHex() : null)).filter(v => v).join(', ')
|
||||||
: '';
|
: '';
|
||||||
|
|
@ -186,7 +186,7 @@ export const PgpUserStore = new class {
|
||||||
}).flat().filter(v => v)
|
}).flat().filter(v => v)
|
||||||
: [];
|
: [];
|
||||||
|
|
||||||
if (!result.length && isNonEmptyArray(recipients)) {
|
if (!result.length && arrayLength(recipients)) {
|
||||||
result = recipients.map(sEmail => {
|
result = recipients.map(sEmail => {
|
||||||
const keys = sEmail ? this.findAllPrivateKeysByEmailNotNative(sEmail) : null;
|
const keys = sEmail ? this.findAllPrivateKeysByEmailNotNative(sEmail) : null;
|
||||||
return keys
|
return keys
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ import {
|
||||||
SetSystemFoldersNotification
|
SetSystemFoldersNotification
|
||||||
} from 'Common/EnumsUser';
|
} from 'Common/EnumsUser';
|
||||||
|
|
||||||
import { inFocus, pInt, isArray, isNonEmptyArray } from 'Common/Utils';
|
import { inFocus, pInt, isArray, arrayLength } from 'Common/Utils';
|
||||||
import { delegateRunOnDestroy } from 'Common/UtilsUser';
|
import { delegateRunOnDestroy } from 'Common/UtilsUser';
|
||||||
import { encodeHtml, HtmlEditor } from 'Common/Html';
|
import { encodeHtml, HtmlEditor } from 'Common/Html';
|
||||||
|
|
||||||
|
|
@ -308,7 +308,7 @@ class ComposePopupView extends AbstractViewPopup {
|
||||||
},
|
},
|
||||||
|
|
||||||
attachmentsInProcess: value => {
|
attachmentsInProcess: value => {
|
||||||
if (this.attachmentsInProcessError() && isNonEmptyArray(value)) {
|
if (this.attachmentsInProcessError() && arrayLength(value)) {
|
||||||
this.attachmentsInProcessError(false);
|
this.attachmentsInProcessError(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -385,8 +385,7 @@ class ComposePopupView extends AbstractViewPopup {
|
||||||
if (!this.emptyToError() && !this.attachmentsInErrorError() && !this.attachmentsInProcessError()) {
|
if (!this.emptyToError() && !this.attachmentsInErrorError() && !this.attachmentsInProcessError()) {
|
||||||
if (SettingsUserStore.replySameFolder()) {
|
if (SettingsUserStore.replySameFolder()) {
|
||||||
if (
|
if (
|
||||||
isArray(this.aDraftInfo) &&
|
3 === arrayLength(this.aDraftInfo) &&
|
||||||
3 === this.aDraftInfo.length &&
|
|
||||||
null != this.aDraftInfo[2] &&
|
null != this.aDraftInfo[2] &&
|
||||||
this.aDraftInfo[2].length
|
this.aDraftInfo[2].length
|
||||||
) {
|
) {
|
||||||
|
|
@ -400,7 +399,7 @@ class ComposePopupView extends AbstractViewPopup {
|
||||||
this.sendError(false);
|
this.sendError(false);
|
||||||
this.sending(true);
|
this.sending(true);
|
||||||
|
|
||||||
if (isArray(this.aDraftInfo) && 3 === this.aDraftInfo.length) {
|
if (3 === arrayLength(this.aDraftInfo)) {
|
||||||
const flagsCache = MessageFlagsCache.getFor(this.aDraftInfo[2], this.aDraftInfo[1]);
|
const flagsCache = MessageFlagsCache.getFor(this.aDraftInfo[2], this.aDraftInfo[1]);
|
||||||
if (flagsCache) {
|
if (flagsCache) {
|
||||||
if ('forward' === this.aDraftInfo[0]) {
|
if ('forward' === this.aDraftInfo[0]) {
|
||||||
|
|
@ -753,7 +752,7 @@ class ComposePopupView extends AbstractViewPopup {
|
||||||
* @param {Array} emails
|
* @param {Array} emails
|
||||||
*/
|
*/
|
||||||
addEmailsTo(fKoValue, emails) {
|
addEmailsTo(fKoValue, emails) {
|
||||||
if (isNonEmptyArray(emails)) {
|
if (arrayLength(emails)) {
|
||||||
const value = fKoValue().trim(),
|
const value = fKoValue().trim(),
|
||||||
values = emails.map(item => item ? item.toLine(false) : null)
|
values = emails.map(item => item ? item.toLine(false) : null)
|
||||||
.validUnique();
|
.validUnique();
|
||||||
|
|
@ -806,11 +805,11 @@ class ComposePopupView extends AbstractViewPopup {
|
||||||
oMessageOrArray = oMessageOrArray || null;
|
oMessageOrArray = oMessageOrArray || null;
|
||||||
if (oMessageOrArray) {
|
if (oMessageOrArray) {
|
||||||
message =
|
message =
|
||||||
isArray(oMessageOrArray) && 1 === oMessageOrArray.length
|
1 === arrayLength(oMessageOrArray)
|
||||||
? oMessageOrArray[0]
|
? oMessageOrArray[0]
|
||||||
: !isArray(oMessageOrArray)
|
: isArray(oMessageOrArray)
|
||||||
? oMessageOrArray
|
? null
|
||||||
: null;
|
: oMessageOrArray;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.oLastMessage = message;
|
this.oLastMessage = message;
|
||||||
|
|
@ -826,15 +825,15 @@ class ComposePopupView extends AbstractViewPopup {
|
||||||
excludeEmail[identity.email()] = true;
|
excludeEmail[identity.email()] = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isNonEmptyArray(aToEmails)) {
|
if (arrayLength(aToEmails)) {
|
||||||
this.to(this.emailArrayToStringLineHelper(aToEmails));
|
this.to(this.emailArrayToStringLineHelper(aToEmails));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isNonEmptyArray(aCcEmails)) {
|
if (arrayLength(aCcEmails)) {
|
||||||
this.cc(this.emailArrayToStringLineHelper(aCcEmails));
|
this.cc(this.emailArrayToStringLineHelper(aCcEmails));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isNonEmptyArray(aBccEmails)) {
|
if (arrayLength(aBccEmails)) {
|
||||||
this.bcc(this.emailArrayToStringLineHelper(aBccEmails));
|
this.bcc(this.emailArrayToStringLineHelper(aBccEmails));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -899,7 +898,7 @@ class ComposePopupView extends AbstractViewPopup {
|
||||||
this.subject(sSubject);
|
this.subject(sSubject);
|
||||||
this.prepareMessageAttachments(message, lineComposeType);
|
this.prepareMessageAttachments(message, lineComposeType);
|
||||||
|
|
||||||
this.aDraftInfo = isNonEmptyArray(aDraftInfo) && 3 === aDraftInfo.length ? aDraftInfo : null;
|
this.aDraftInfo = 3 === arrayLength(aDraftInfo) ? aDraftInfo : null;
|
||||||
this.sInReplyTo = message.sInReplyTo;
|
this.sInReplyTo = message.sInReplyTo;
|
||||||
this.sReferences = message.sReferences;
|
this.sReferences = message.sReferences;
|
||||||
break;
|
break;
|
||||||
|
|
@ -913,7 +912,7 @@ class ComposePopupView extends AbstractViewPopup {
|
||||||
this.subject(sSubject);
|
this.subject(sSubject);
|
||||||
this.prepareMessageAttachments(message, lineComposeType);
|
this.prepareMessageAttachments(message, lineComposeType);
|
||||||
|
|
||||||
this.aDraftInfo = isNonEmptyArray(aDraftInfo) && 3 === aDraftInfo.length ? aDraftInfo : null;
|
this.aDraftInfo = 3 === arrayLength(aDraftInfo) ? aDraftInfo : null;
|
||||||
this.sInReplyTo = message.sInReplyTo;
|
this.sInReplyTo = message.sInReplyTo;
|
||||||
this.sReferences = message.sReferences;
|
this.sReferences = message.sReferences;
|
||||||
break;
|
break;
|
||||||
|
|
@ -1003,7 +1002,7 @@ class ComposePopupView extends AbstractViewPopup {
|
||||||
|
|
||||||
this.setFocusInPopup();
|
this.setFocusInPopup();
|
||||||
});
|
});
|
||||||
} else if (isNonEmptyArray(oMessageOrArray)) {
|
} else if (arrayLength(oMessageOrArray)) {
|
||||||
oMessageOrArray.forEach(item => this.addMessageAsAttachment(item));
|
oMessageOrArray.forEach(item => this.addMessageAsAttachment(item));
|
||||||
|
|
||||||
this.editor(editor => {
|
this.editor(editor => {
|
||||||
|
|
@ -1024,7 +1023,7 @@ class ComposePopupView extends AbstractViewPopup {
|
||||||
}
|
}
|
||||||
|
|
||||||
const downloads = this.getAttachmentsDownloadsForUpload();
|
const downloads = this.getAttachmentsDownloadsForUpload();
|
||||||
if (isNonEmptyArray(downloads)) {
|
if (arrayLength(downloads)) {
|
||||||
Remote.messageUploadAttachments((iError, oData) => {
|
Remote.messageUploadAttachments((iError, oData) => {
|
||||||
if (!iError) {
|
if (!iError) {
|
||||||
Object.entries(oData.Result).forEach(([tempName, id]) => {
|
Object.entries(oData.Result).forEach(([tempName, id]) => {
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ import {
|
||||||
|
|
||||||
import { ComposeType } from 'Common/EnumsUser';
|
import { ComposeType } from 'Common/EnumsUser';
|
||||||
|
|
||||||
import { isNonEmptyArray, pInt } from 'Common/Utils';
|
import { arrayLength, pInt } from 'Common/Utils';
|
||||||
import { delegateRunOnDestroy, computedPaginatorHelper, showMessageComposer } from 'Common/UtilsUser';
|
import { delegateRunOnDestroy, computedPaginatorHelper, showMessageComposer } from 'Common/UtilsUser';
|
||||||
|
|
||||||
import { Selector } from 'Common/Selector';
|
import { Selector } from 'Common/Selector';
|
||||||
|
|
@ -163,7 +163,7 @@ class ContactsPopupView extends AbstractViewPopup {
|
||||||
bccEmails = null;
|
bccEmails = null;
|
||||||
|
|
||||||
const aC = this.contactsCheckedOrSelected();
|
const aC = this.contactsCheckedOrSelected();
|
||||||
if (isNonEmptyArray(aC)) {
|
if (arrayLength(aC)) {
|
||||||
aE = aC.map(oItem => {
|
aE = aC.map(oItem => {
|
||||||
if (oItem) {
|
if (oItem) {
|
||||||
const data = oItem.getNameAndEmailHelper(),
|
const data = oItem.getNameAndEmailHelper(),
|
||||||
|
|
@ -180,7 +180,7 @@ class ContactsPopupView extends AbstractViewPopup {
|
||||||
aE = aE.filter(value => !!value);
|
aE = aE.filter(value => !!value);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isNonEmptyArray(aE)) {
|
if (arrayLength(aE)) {
|
||||||
this.bBackToCompose = false;
|
this.bBackToCompose = false;
|
||||||
|
|
||||||
hideScreenPopup(ContactsPopupView);
|
hideScreenPopup(ContactsPopupView);
|
||||||
|
|
@ -447,7 +447,7 @@ class ContactsPopupView extends AbstractViewPopup {
|
||||||
let count = 0,
|
let count = 0,
|
||||||
list = [];
|
list = [];
|
||||||
|
|
||||||
if (!iError && isNonEmptyArray(data.Result.List)) {
|
if (!iError && arrayLength(data.Result.List)) {
|
||||||
data.Result.List.forEach(item => {
|
data.Result.List.forEach(item => {
|
||||||
item = ContactModel.reviveFromJson(item);
|
item = ContactModel.reviveFromJson(item);
|
||||||
item && list.push(item);
|
item && list.push(item);
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ import ko from 'ko';
|
||||||
|
|
||||||
import { Scope } from 'Common/Enums';
|
import { Scope } from 'Common/Enums';
|
||||||
import { getNotification, i18n } from 'Common/Translator';
|
import { getNotification, i18n } from 'Common/Translator';
|
||||||
import { isNonEmptyArray } from 'Common/Utils';
|
import { arrayLength } from 'Common/Utils';
|
||||||
|
|
||||||
import Remote from 'Remote/Admin/Fetch';
|
import Remote from 'Remote/Admin/Fetch';
|
||||||
|
|
||||||
|
|
@ -65,7 +65,7 @@ class PluginPopupView extends AbstractViewPopup {
|
||||||
this.readme(oPlugin.Readme);
|
this.readme(oPlugin.Readme);
|
||||||
|
|
||||||
const config = oPlugin.Config;
|
const config = oPlugin.Config;
|
||||||
if (isNonEmptyArray(config)) {
|
if (arrayLength(config)) {
|
||||||
this.configures(
|
this.configures(
|
||||||
config.map(item => ({
|
config.map(item => ({
|
||||||
value: ko.observable(item[0]),
|
value: ko.observable(item[0]),
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ import {
|
||||||
|
|
||||||
import { doc, $htmlCL, leftPanelDisabled, keyScopeReal, moveAction, Settings } from 'Common/Globals';
|
import { doc, $htmlCL, leftPanelDisabled, keyScopeReal, moveAction, Settings } from 'Common/Globals';
|
||||||
|
|
||||||
import { isNonEmptyArray, inFocus } from 'Common/Utils';
|
import { arrayLength, inFocus } from 'Common/Utils';
|
||||||
import { mailToHelper, showMessageComposer } from 'Common/UtilsUser';
|
import { mailToHelper, showMessageComposer } from 'Common/UtilsUser';
|
||||||
|
|
||||||
import { SMAudio } from 'Common/Audio';
|
import { SMAudio } from 'Common/Audio';
|
||||||
|
|
@ -78,7 +78,7 @@ class MessageViewMailBoxUserView extends AbstractViewRight {
|
||||||
this.allowMessageListActions = Settings.capa(Capa.MessageListActions);
|
this.allowMessageListActions = Settings.capa(Capa.MessageListActions);
|
||||||
|
|
||||||
const attachmentsActions = Settings.app('attachmentsActions');
|
const attachmentsActions = Settings.app('attachmentsActions');
|
||||||
this.attachmentsActions = ko.observableArray(isNonEmptyArray(attachmentsActions) ? attachmentsActions : []);
|
this.attachmentsActions = ko.observableArray(arrayLength(attachmentsActions) ? attachmentsActions : []);
|
||||||
|
|
||||||
this.message = MessageUserStore.message;
|
this.message = MessageUserStore.message;
|
||||||
this.hasCheckedMessages = MessageUserStore.hasCheckedMessages;
|
this.hasCheckedMessages = MessageUserStore.hasCheckedMessages;
|
||||||
|
|
@ -176,10 +176,8 @@ class MessageViewMailBoxUserView extends AbstractViewRight {
|
||||||
|
|
||||||
viewFromDkimStatusTitle:() => {
|
viewFromDkimStatusTitle:() => {
|
||||||
const status = this.viewFromDkimData();
|
const status = this.viewFromDkimData();
|
||||||
if (isNonEmptyArray(status)) {
|
if (arrayLength(status) && status[0]) {
|
||||||
if (status[0]) {
|
return status[1] || 'DKIM: ' + status[0];
|
||||||
return status[1] || 'DKIM: ' + status[0];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return '';
|
return '';
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue