- removed nested ListViews inside StackLayouts, in order to reduce the
memory footprint and improve performance, and also to be able to better
manage the scrolling
- no more unrolled multiple listviews, which again hurt the performance;
now the views instantiate the delegates dynamically on the fly
- the tab bar and the search fields now stick to the top of the page,
with the users list view scrolling independently
- both views now uniformly use the common `ContactListItemDelegate`
- the received/sent CRs are now combined into one `pendingContacts`
model
- factored out common search/filter criteria into a new, separate SFPM
`UserFilterContainer` component
- fix an issue where StatusContactVerificationIcons wasn't properly
displaying the "blocked" state/icon
- fix documentation comments, removed relative imports, and updated some
Fixes#16612Fixes#16958
* refactor(contacts): refactor 5 contact models into one and filter in QML
Fixes#16549
Refactors the 5 types of contact models (all, mutuals, banned, received and sent) into only the `allContacts` and use an Adaptor on the QML side to filter into the needed models.
This cleans the Nim side a lot and makes applying updates to the contacts' model way simpler.
* chore(contacts): remove useless and duplicated contact properties
OptionalName and isSyncing were never used.
DefaultDisplayName was not really used and is actually a duplication of preferredDisplayName, so I replaced the limited usages of DefaultDisplayName by preferredDisplayName
* refactor(contacts): improve updates by not removing and re-adding
We used to update contact items by removing them from the models and re-adding them. This is highly inefficient.
Instead, the proper way is to update only the values that changed.
* user_model: onItemChanged signal removed
* user_model: sorting by online status no longer needed on nim side
* Chat/RootStore: contactsModel property removed
* ContactsStore encapsulation improved
* ContactsStore: contacts model adaptor moved outside store
---------
Co-authored-by: Michał Cieślak <michalcieslak@status.im>