Explorar o código

Sort contacts by display name before storing them

Danilo Bargen %!s(int64=7) %!d(string=hai) anos
pai
achega
1a60b7a99e
Modificáronse 1 ficheiros con 7 adicións e 0 borrados
  1. 7 0
      src/threema/container.ts

+ 7 - 0
src/threema/container.ts

@@ -120,6 +120,13 @@ class Receivers implements threema.Container.Receivers {
      * Set contacts.
      */
     public setContacts(data: threema.ContactReceiver[]): void {
+        data.sort((a: threema.Receiver, b: threema.Receiver) => {
+            if (a.id.startsWith('*') && !b.id.startsWith('*')) { return 1; }
+            if (!a.id.startsWith('*') && b.id.startsWith('*')) { return -1; }
+            if (a.displayName < b.displayName) { return -1; }
+            if (a.displayName > b.displayName) { return 1; }
+            return 0;
+        });
         this.contacts = new Map(data.map((c) => {
             c.type = 'contact';
             return [c.id, c];