瀏覽代碼

wrote ContactCellViewModel factory method to avoid duplicated code

nayooti 5 年之前
父節點
當前提交
0d16dd5712
共有 2 個文件被更改,包括 22 次插入1 次删除
  1. 3 1
      deltachat-ios/ViewModel/ChatListViewModel.swift
  2. 19 0
      deltachat-ios/ViewModel/ContactCellViewModel.swift

+ 3 - 1
deltachat-ios/ViewModel/ChatListViewModel.swift

@@ -110,7 +110,7 @@ class ChatListViewModel: NSObject, ChatListViewModelProtocol {
             case .chats:
                 break
             case .contacts:
-                return makeContactCellViewModel(contactId: searchResultContactIds[row])
+                return ContactCellViewModel.make(contactId: searchResultContactIds[row], searchText: searchText, dcContext: dcContext)
             case .messages:
                 return makeMessageCellViewModel(msgId: searchResultMessageIds[row])
             }
@@ -223,6 +223,7 @@ private extension ChatListViewModel {
         return viewModel
     }
 
+    /*
     func makeContactCellViewModel(contactId: Int) -> AvatarCellViewModel {
         let contact = DcContact(id: contactId)
         let nameIndexes = contact.displayName.containsExact(subSequence: searchText)
@@ -239,6 +240,7 @@ private extension ChatListViewModel {
         )
         return viewModel
     }
+    */
 
     func makeMessageCellViewModel(msgId: Int) -> AvatarCellViewModel {
         let msg: DcMsg = DcMsg(id: msgId)

+ 19 - 0
deltachat-ios/ViewModel/ContactCellViewModel.swift

@@ -100,3 +100,22 @@ class ChatCellViewModel: AvatarCellViewModel {
         self.summary = cellData.summary
     }
 }
+
+extension ContactCellViewModel {
+    static func make(contactId: Int, searchText: String?, dcContext: DcContext) -> ContactCellViewModel {
+        let contact = DcContact(id: contactId)
+        let nameIndexes = contact.displayName.containsExact(subSequence: searchText)
+        let emailIndexes = contact.email.containsExact(subSequence: searchText)
+        let chatId: Int? = dcContext.getChatIdByContactId(contactId)
+            // contact contains searchText
+        let viewModel = ContactCellViewModel(
+            contactData: ContactCellData(
+                contactId: contact.id,
+                chatId: chatId
+            ),
+            titleHighlightIndexes: nameIndexes,
+            subtitleHighlightIndexes: emailIndexes
+        )
+        return viewModel
+    }
+}