From e27df6bc0999de121f4068d6859ea6e48322fd41 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Mon, 19 Mar 2018 19:42:38 -0400 Subject: [PATCH] null checks on sort function values --- src/services/cipher.service.ts | 10 ++++++++++ src/services/collection.service.ts | 10 ++++++++++ src/services/folder.service.ts | 10 ++++++++++ 3 files changed, 30 insertions(+) diff --git a/src/services/cipher.service.ts b/src/services/cipher.service.ts index 4ceb882531..5f7dc33a27 100644 --- a/src/services/cipher.service.ts +++ b/src/services/cipher.service.ts @@ -481,6 +481,16 @@ export class CipherService implements CipherServiceAbstraction { let aName = a.name; let bName = b.name; + if (aName == null && bName != null) { + return -1; + } + if (aName != null && bName == null) { + return 1; + } + if (aName == null && bName == null) { + return 0; + } + const result = this.i18nService.collator ? this.i18nService.collator.compare(aName, bName) : aName.localeCompare(bName); diff --git a/src/services/collection.service.ts b/src/services/collection.service.ts index f860f5d9d3..caca3c8920 100644 --- a/src/services/collection.service.ts +++ b/src/services/collection.service.ts @@ -127,6 +127,16 @@ export class CollectionService implements CollectionServiceAbstraction { private getLocaleSortingFunction(): (a: CollectionView, b: CollectionView) => number { return (a, b) => { + if (a.name == null && b.name != null) { + return -1; + } + if (a.name != null && b.name == null) { + return 1; + } + if (a.name == null && b.name == null) { + return 0; + } + return this.i18nService.collator ? this.i18nService.collator.compare(a.name, b.name) : a.name.localeCompare(b.name); }; diff --git a/src/services/folder.service.ts b/src/services/folder.service.ts index 002085c8a5..f596941bb3 100644 --- a/src/services/folder.service.ts +++ b/src/services/folder.service.ts @@ -166,6 +166,16 @@ export class FolderService implements FolderServiceAbstraction { private getLocaleSortingFunction(): (a: FolderView, b: FolderView) => number { return (a, b) => { + if (a.name == null && b.name != null) { + return -1; + } + if (a.name != null && b.name == null) { + return 1; + } + if (a.name == null && b.name == null) { + return 0; + } + return this.i18nService.collator ? this.i18nService.collator.compare(a.name, b.name) : a.name.localeCompare(b.name); };