Browse Source

add action star and change font placeholder search

alqindiirsyam 2 năm trước cách đây
mục cha
commit
ef93b56aae
30 tập tin đã thay đổi với 231 bổ sung40 xóa
  1. 1 2
      appbuilder-ios/AppBuilder/AppBuilder/SecondTabViewController.swift
  2. BIN
      appbuilder-ios/DigiXLite/DigiXLite.xcworkspace/xcuserdata/akhmadalqindiirsyam.xcuserdatad/UserInterfaceState.xcuserstate
  3. 1 1
      appbuilder-ios/DigiXLite/DigiXLite/Source/View/Call/QmeraCallContactViewController.swift
  4. 1 1
      appbuilder-ios/DigiXLite/DigiXLite/Source/View/Chat/EditorGroup.swift
  5. 7 1
      appbuilder-ios/DigiXLite/DigiXLite/Source/View/Chat/EditorPersonal.swift
  6. 1 1
      appbuilder-ios/DigiXLite/DigiXLite/Source/View/Chat/EditorStarMessages.swift
  7. 90 9
      appbuilder-ios/DigiXLite/DigiXLite/Source/View/Chat/ListGroupImages.swift
  8. 1 1
      appbuilder-ios/DigiXLite/DigiXLite/Source/View/Contact/ContactCallViewController.swift
  9. 1 1
      appbuilder-ios/DigiXLite/DigiXLite/Source/View/Control/AddFriendTableViewController.swift
  10. 1 1
      appbuilder-ios/DigiXLite/DigiXLite/Source/View/Control/BroadcastMembersTableViewController.swift
  11. 1 1
      appbuilder-ios/DigiXLite/DigiXLite/Source/View/Control/ContactChatViewController.swift
  12. 1 0
      appbuilder-ios/DigiXLite/DigiXLite/Source/View/Control/GroupMemberViewController.swift
  13. 1 0
      appbuilder-ios/DigiXLite/DigiXLite/Source/View/Control/SetInternalCSAccount.swift
  14. 1 0
      appbuilder-ios/DigiXLite/DigiXLite/Source/View/Streaming/QmeraGroupChooserViewController.swift
  15. 1 0
      appbuilder-ios/DigiXLite/DigiXLite/Source/View/Streaming/QmeraUserChooserViewController.swift
  16. 1 1
      appbuilder-ios/DigiXLite/DigiXLite/Source/View/Streaming/SeminarListViewController.swift
  17. 1 1
      appbuilder-ios/NexilisLite/NexilisLite/Source/View/Call/QmeraCallContactViewController.swift
  18. 1 1
      appbuilder-ios/NexilisLite/NexilisLite/Source/View/Chat/EditorGroup.swift
  19. 20 3
      appbuilder-ios/NexilisLite/NexilisLite/Source/View/Chat/EditorPersonal.swift
  20. 1 1
      appbuilder-ios/NexilisLite/NexilisLite/Source/View/Chat/EditorStarMessages.swift
  21. 89 9
      appbuilder-ios/NexilisLite/NexilisLite/Source/View/Chat/ListGroupImages.swift
  22. 1 1
      appbuilder-ios/NexilisLite/NexilisLite/Source/View/Contact/ContactCallViewController.swift
  23. 1 1
      appbuilder-ios/NexilisLite/NexilisLite/Source/View/Control/AddFriendTableViewController.swift
  24. 1 1
      appbuilder-ios/NexilisLite/NexilisLite/Source/View/Control/BroadcastMembersTableViewController.swift
  25. 1 1
      appbuilder-ios/NexilisLite/NexilisLite/Source/View/Control/ContactChatViewController.swift
  26. 1 0
      appbuilder-ios/NexilisLite/NexilisLite/Source/View/Control/GroupMemberViewController.swift
  27. 1 0
      appbuilder-ios/NexilisLite/NexilisLite/Source/View/Control/SetInternalCSAccount.swift
  28. 1 0
      appbuilder-ios/NexilisLite/NexilisLite/Source/View/Streaming/QmeraGroupChooserViewController.swift
  29. 1 0
      appbuilder-ios/NexilisLite/NexilisLite/Source/View/Streaming/QmeraUserChooserViewController.swift
  30. 1 1
      appbuilder-ios/NexilisLite/NexilisLite/Source/View/Streaming/SeminarListViewController.swift

+ 1 - 2
appbuilder-ios/AppBuilder/AppBuilder/SecondTabViewController.swift

@@ -43,8 +43,7 @@ class SecondTabViewController: UIViewController, UIScrollViewDelegate, UIGesture
         searchController.searchBar.barTintColor = .secondaryColor
         searchController.searchBar.searchTextField.backgroundColor = .secondaryColor
         searchController.obscuresBackgroundDuringPresentation = false
-        searchController.searchBar.placeholder = "Search chats & messages".localized()
-        
+        searchController.searchBar.searchTextField.attributedPlaceholder = NSAttributedString(string: "Search chats & messages".localized(), attributes: [NSAttributedString.Key.foregroundColor: UIColor.gray, NSAttributedString.Key.font: UIFont.systemFont(ofSize: 16)])
         return searchController
     }()
     

BIN
appbuilder-ios/DigiXLite/DigiXLite.xcworkspace/xcuserdata/akhmadalqindiirsyam.xcuserdatad/UserInterfaceState.xcuserstate


+ 1 - 1
appbuilder-ios/DigiXLite/DigiXLite/Source/View/Call/QmeraCallContactViewController.swift

@@ -15,7 +15,7 @@ class QmeraCallContactViewController: UITableViewController {
         searchController.searchBar.barTintColor = .secondaryColor
         searchController.searchBar.searchTextField.backgroundColor = .secondaryColor
         searchController.obscuresBackgroundDuringPresentation = false
-        searchController.searchBar.placeholder = "Search".localized()
+        searchController.searchBar.searchTextField.attributedPlaceholder = NSAttributedString(string: "Search".localized(), attributes: [NSAttributedString.Key.foregroundColor: UIColor.gray, NSAttributedString.Key.font: UIFont.systemFont(ofSize: 16)])
         return searchController
     }()
     

+ 1 - 1
appbuilder-ios/DigiXLite/DigiXLite/Source/View/Chat/EditorGroup.swift

@@ -2170,7 +2170,7 @@ extension EditorGroup: UIContextMenuInteractionDelegate {
                 self.tableChatView.reloadRows(at: [indexPath!], with: .none)
             })
         } else {
-            star = UIAction(title: "Unstar".localized(), image: UIImage(systemName: "star.fill"), handler: {(_) in
+            star = UIAction(title: "Unstar".localized(), image: UIImage(systemName: "star.slash.fill"), handler: {(_) in
                 if self.removed {
                     return
                 }

+ 7 - 1
appbuilder-ios/DigiXLite/DigiXLite/Source/View/Chat/EditorPersonal.swift

@@ -3396,7 +3396,7 @@ extension EditorPersonal: UIContextMenuInteractionDelegate {
                 self.tableChatView.reloadRows(at: [indexPath!], with: .none)
             })
         } else {
-            star = UIAction(title: "Unstar".localized(), image: UIImage(systemName: "star.fill"), handler: {(_) in
+            star = UIAction(title: "Unstar".localized(), image: UIImage(systemName: "star.slash.fill"), handler: {(_) in
                 if self.removed {
                     return
                 }
@@ -5514,6 +5514,12 @@ extension EditorPersonal: UITableViewDelegate, UITableViewDataSource {
         listGroupingImages.listGroupingImages = sender.listImageFromGrouping
         listGroupingImages.titleName = titleText
         listGroupingImages.isInitiator = sender.isInitiator
+        listGroupingImages.updateEditor = { [self] updatedData in
+            groupImages[sender.listImageFromGrouping[0].messageId] = updatedData
+            DispatchQueue.main.async { [self] in
+                tableChatView.reloadData()
+            }
+        }
         self.navigationController?.pushViewController(listGroupingImages, animated: true)
     }
     

+ 1 - 1
appbuilder-ios/DigiXLite/DigiXLite/Source/View/Chat/EditorStarMessages.swift

@@ -994,7 +994,7 @@ public class EditorStarMessages: UIViewController, UITableViewDataSource, UITabl
     public func contextMenuInteraction(_ interaction: UIContextMenuInteraction, configurationForMenuAtLocation location: CGPoint) -> UIContextMenuConfiguration? {
         let indexPath = self.tableChatView.indexPathForRow(at: interaction.view!.convert(location, to: self.tableChatView))
         let dataMessages = self.dataMessages.filter({ $0["chat_date"] as! String == dataDates[indexPath!.section]})
-        let star = UIAction(title: "Unstar".localized(), image: UIImage(systemName: "star.fill"), handler: {(_) in
+        let star = UIAction(title: "Unstar".localized(), image: UIImage(systemName: "star.slash.fill"), handler: {(_) in
             DispatchQueue.global().async {
                 Database.shared.database?.inTransaction({ (fmdb, rollback) in
                     _ = Database.shared.updateRecord(fmdb: fmdb, table: "MESSAGE", cvalues: [

+ 90 - 9
appbuilder-ios/DigiXLite/DigiXLite/Source/View/Chat/ListGroupImages.swift

@@ -22,6 +22,7 @@ class ListGroupImages: UIViewController, UITableViewDataSource, UITableViewDeleg
     var startYVisible: CGFloat!
     var endYVisible: CGFloat!
     var indexSelected = 0
+    var updateEditor: (([ImageGrouping]) -> ())?
 
     override func viewDidLoad() {
         super.viewDidLoad()
@@ -33,6 +34,10 @@ class ListGroupImages: UIViewController, UITableViewDataSource, UITableViewDeleg
         centeredTitleView.subtitleLabel.text = String(listGroupingImages.count) + " " + "images".localized()
         navigationItem.titleView = centeredTitleView
         
+        let selectButton = UIBarButtonItem(title: "Select".localized(), style: .plain, target: self, action: #selector(selectAction))
+        selectButton.setTitleTextAttributes([NSAttributedString.Key.foregroundColor: UIColor.white, NSAttributedString.Key.font: UIFont.systemFont(ofSize: 16)], for: .normal)
+        navigationItem.rightBarButtonItem = selectButton
+        
         tableViewImages.register(UITableViewCell.self, forCellReuseIdentifier: "cellGrupingImages")
         tableViewImages.dataSource = self
         tableViewImages.delegate = self
@@ -77,8 +82,13 @@ class ListGroupImages: UIViewController, UITableViewDataSource, UITableViewDeleg
             content.imageProperties.tintColor = .black
             switch indexPath.row {
             case 0:
-                content.image = UIImage(systemName: "star.fill")
-                content.text = "Star".localized()
+                if listGroupingImages[indexSelected].dataMessage["is_stared"] as! String == "1" {
+                    content.image = UIImage(systemName: "star.slash.fill")
+                    content.text = "Unstar".localized()
+                } else {
+                    content.image = UIImage(systemName: "star.fill")
+                    content.text = "Star".localized()
+                }
             case 1:
                 content.image = UIImage(systemName: "arrowshape.turn.up.left.fill")
                 content.text = "Reply".localized()
@@ -101,8 +111,9 @@ class ListGroupImages: UIViewController, UITableViewDataSource, UITableViewDeleg
         cell.selectionStyle = .none
         
         let containerImages = UIImageView()
+        containerImages.contentMode = .scaleAspectFit
         cell.contentView.addSubview(containerImages)
-        containerImages.anchor(top: cell.contentView.topAnchor, left: cell.contentView.leftAnchor, bottom: cell.contentView.bottomAnchor, right: cell.contentView.rightAnchor, paddingBottom: 15, height: UIScreen.main.bounds.height - 104)
+        containerImages.anchor(top: cell.contentView.topAnchor, left: cell.contentView.leftAnchor, bottom: cell.contentView.bottomAnchor, right: cell.contentView.rightAnchor, paddingBottom: 15, height: getImageSize(image: listGroupingImages[indexPath.row].imageId)!.height)
         
         if !copySession && !forwardSession && !deleteSession {
             let longPressRecognizer = LongPressImageVIew(target: self, action: #selector(handleLongPress(_:)))
@@ -128,10 +139,11 @@ class ListGroupImages: UIViewController, UITableViewDataSource, UITableViewDeleg
             }
 
         }
+        
         let containerTimeStatus = UIView()
         containerImages.addSubview(containerTimeStatus)
-        containerTimeStatus.anchor(bottom: containerImages.bottomAnchor, right: containerImages.rightAnchor, height: 15)
-        let widthcontainerTimeStatus = containerTimeStatus.widthAnchor.constraint(equalToConstant: 50)
+        containerTimeStatus.anchor(bottom: containerImages.bottomAnchor, right: containerImages.rightAnchor, height: 20)
+        let widthcontainerTimeStatus = containerTimeStatus.widthAnchor.constraint(equalToConstant: 60)
         widthcontainerTimeStatus.isActive = true
         containerTimeStatus.layer.cornerRadius = 5.0
         containerTimeStatus.layer.masksToBounds = true
@@ -145,12 +157,12 @@ class ListGroupImages: UIViewController, UITableViewDataSource, UITableViewDeleg
         formatter.locale = NSLocale(localeIdentifier: "id") as Locale?
         timeInImage.text = formatter.string(from: date as Date)
         timeInImage.textColor = .white
-        timeInImage.font = UIFont.systemFont(ofSize: 10, weight: .medium)
+        timeInImage.font = UIFont.systemFont(ofSize: 12, weight: .medium)
         
         if isInitiator {
             let statusInImage = UIImageView()
             containerTimeStatus.addSubview(statusInImage)
-            statusInImage.anchor(right: containerTimeStatus.rightAnchor, centerY: containerTimeStatus.centerYAnchor, width: 15, height: 15)
+            statusInImage.anchor(right: containerTimeStatus.rightAnchor, centerY: containerTimeStatus.centerYAnchor, width: 20, height: 20)
             if listGroupingImages[indexPath.row].status == "1" || listGroupingImages[indexPath.row].status == "2"  {
                 statusInImage.image = UIImage(named: "checklist", in: Bundle.resourceBundle(for: DigiX.self), with: nil)!.withTintColor(UIColor.white)
             } else if listGroupingImages[indexPath.row].status == "3" {
@@ -160,8 +172,17 @@ class ListGroupImages: UIViewController, UITableViewDataSource, UITableViewDeleg
             }
             timeInImage.anchor(right: statusInImage.leftAnchor, centerY: containerTimeStatus.centerYAnchor, height: 15)
         } else {
-            timeInImage.anchor(right: containerTimeStatus.rightAnchor, paddingRight: 5, centerY: containerTimeStatus.centerYAnchor, height: 15)
-            widthcontainerTimeStatus.constant = 40
+            timeInImage.anchor(right: containerTimeStatus.rightAnchor, paddingRight: 5, centerY: containerTimeStatus.centerYAnchor, height: 20)
+            widthcontainerTimeStatus.constant = widthcontainerTimeStatus.constant - 10
+        }
+        
+        if listGroupingImages[indexPath.row].dataMessage["is_stared"] as! String == "1" {
+            let iconStar = UIImageView()
+            containerTimeStatus.addSubview(iconStar)
+            iconStar.anchor(right: timeInImage.leftAnchor, paddingRight: 2, centerY: containerTimeStatus.centerYAnchor, width: 20, height: 20)
+            widthcontainerTimeStatus.constant = widthcontainerTimeStatus.constant + 20
+            iconStar.image = UIImage(systemName: "star.fill")
+            iconStar.tintColor = .white
         }
         return cell
     }
@@ -172,6 +193,27 @@ class ListGroupImages: UIViewController, UITableViewDataSource, UITableViewDeleg
             switch indexPath.row {
             case 0:
                 popover.dismiss()
+                if listGroupingImages[indexSelected].dataMessage["is_stared"] as! String == "0" {
+                    DispatchQueue.global().async { [self] in
+                        Database.shared.database?.inTransaction({ (fmdb, rollback) in
+                            _ = Database.shared.updateRecord(fmdb: fmdb, table: "MESSAGE", cvalues: [
+                                "is_stared" : 1
+                            ], _where: "message_id = '\(listGroupingImages[indexSelected].messageId)'")
+                        })
+                    }
+                    listGroupingImages[indexSelected].dataMessage["is_stared"] = "1"
+                } else {
+                    DispatchQueue.global().async { [self] in
+                        Database.shared.database?.inTransaction({ (fmdb, rollback) in
+                            _ = Database.shared.updateRecord(fmdb: fmdb, table: "MESSAGE", cvalues: [
+                                "is_stared" : 0
+                            ], _where: "message_id = '\(listGroupingImages[indexSelected].messageId)'")
+                        })
+                    }
+                    listGroupingImages[indexSelected].dataMessage["is_stared"] = "0"
+                }
+                tableViewImages.reloadRows(at: [IndexPath(row: indexSelected, section: 0)], with: .none)
+                updateEditor!(listGroupingImages)
             case 1:
                 popover.dismiss()
             case 2:
@@ -232,6 +274,45 @@ class ListGroupImages: UIViewController, UITableViewDataSource, UITableViewDeleg
             UINotificationFeedbackGenerator().notificationOccurred(.success)
         }
     }
+    
+    @objc func selectAction() {
+        
+    }
+    
+    func getImageSize(image: String) -> CGSize? {
+        let nsDocumentDirectory = FileManager.SearchPathDirectory.documentDirectory
+        let nsUserDomainMask = FileManager.SearchPathDomainMask.userDomainMask
+        let paths = NSSearchPathForDirectoriesInDomains(nsDocumentDirectory, nsUserDomainMask, true)
+        if let dirPath = paths.first {
+            let imageURL = URL(fileURLWithPath: dirPath).appendingPathComponent(image)
+            let image = UIImage(contentsOfFile: imageURL.path)
+            let imageWidth = image!.size.width
+            let imageHeight = image!.size.height
+
+            // Calculate the aspect ratio of the image
+            let aspectRatio = imageWidth / imageHeight
+
+            // Get the available width and height of the screen
+            let screenWidth = UIScreen.main.bounds.width
+            let screenHeight = UIScreen.main.bounds.height
+
+            // Calculate the size to display the image while maintaining its aspect ratio
+            var displayWidth: CGFloat = 0.0
+            var displayHeight: CGFloat = 0.0
+
+            if imageWidth > imageHeight {
+                // Landscape image
+                displayWidth = screenWidth
+                displayHeight = screenWidth / aspectRatio
+            } else {
+                // Portrait or square image
+                displayHeight = screenHeight
+                displayWidth = screenHeight * aspectRatio
+            }
+            return CGSize(width: displayWidth, height: displayHeight)
+        }
+        return nil
+    }
 }
 
 class CenteredTitleSubtitleView: UIView {

+ 1 - 1
appbuilder-ios/DigiXLite/DigiXLite/Source/View/Contact/ContactCallViewController.swift

@@ -86,7 +86,7 @@ class ContactCallViewController: UIViewController {
         searchController.searchBar.barTintColor = .secondaryColor
         searchController.searchBar.searchTextField.backgroundColor = .secondaryColor
         searchController.obscuresBackgroundDuringPresentation = false
-        searchController.searchBar.searchTextField.attributedPlaceholder = NSAttributedString(string: "Search".localized(), attributes: [NSAttributedString.Key.foregroundColor: UIColor.gray])
+        searchController.searchBar.searchTextField.attributedPlaceholder = NSAttributedString(string: "Search".localized(), attributes: [NSAttributedString.Key.foregroundColor: UIColor.gray, NSAttributedString.Key.font: UIFont.systemFont(ofSize: 16)])
         searchController.searchBar.setMagnifyingGlassColorTo(color: .mainColor)
         searchController.searchBar.tintColor = .mainColor
         

+ 1 - 1
appbuilder-ios/DigiXLite/DigiXLite/Source/View/Control/AddFriendTableViewController.swift

@@ -66,7 +66,7 @@ class AddFriendTableViewController: UITableViewController {
         searchController.searchBar.barTintColor = .secondaryColor
         searchController.searchBar.searchTextField.backgroundColor = .secondaryColor
         searchController.obscuresBackgroundDuringPresentation = false
-        searchController.searchBar.searchTextField.attributedPlaceholder = NSAttributedString(string: "Search".localized(), attributes: [NSAttributedString.Key.foregroundColor: UIColor.gray])
+        searchController.searchBar.searchTextField.attributedPlaceholder = NSAttributedString(string: "Search".localized(), attributes: [NSAttributedString.Key.foregroundColor: UIColor.gray, NSAttributedString.Key.font: UIFont.systemFont(ofSize: 16)])
         searchController.searchBar.setMagnifyingGlassColorTo(color: .mainColor)
         searchController.searchBar.tintColor = .mainColor
         

+ 1 - 1
appbuilder-ios/DigiXLite/DigiXLite/Source/View/Control/BroadcastMembersTableViewController.swift

@@ -81,7 +81,7 @@ class BroadcastMembersTableViewController: UITableViewController, UISearchContro
         searchController.searchBar.barTintColor = .secondaryColor
         searchController.searchBar.searchTextField.backgroundColor = .secondaryColor
         searchController.obscuresBackgroundDuringPresentation = false
-        searchController.searchBar.searchTextField.attributedPlaceholder = NSAttributedString(string: "Search".localized(), attributes: [NSAttributedString.Key.foregroundColor: UIColor.gray])
+        searchController.searchBar.searchTextField.attributedPlaceholder = NSAttributedString(string: "Search".localized(), attributes: [NSAttributedString.Key.foregroundColor: UIColor.gray, NSAttributedString.Key.font: UIFont.systemFont(ofSize: 16)])
         searchController.searchBar.setMagnifyingGlassColorTo(color: .mainColor)
         searchController.searchBar.tintColor = .mainColor
         UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).setTitleTextAttributes([NSAttributedString.Key.foregroundColor: UIColor.white], for: .normal)

+ 1 - 1
appbuilder-ios/DigiXLite/DigiXLite/Source/View/Control/ContactChatViewController.swift

@@ -161,7 +161,7 @@ class ContactChatViewController: UITableViewController {
         searchController.obscuresBackgroundDuringPresentation = false
         searchController.searchBar.setMagnifyingGlassColorTo(color: .mainColor)
         searchController.searchBar.tintColor = .mainColor
-        searchController.searchBar.searchTextField.attributedPlaceholder = NSAttributedString(string: "Search".localized(), attributes: [NSAttributedString.Key.foregroundColor: UIColor.gray])
+        searchController.searchBar.searchTextField.attributedPlaceholder = NSAttributedString(string: "Search".localized(), attributes: [NSAttributedString.Key.foregroundColor: UIColor.gray, NSAttributedString.Key.font: UIFont.systemFont(ofSize: 16)])
         
         
         navigationItem.searchController = searchController

+ 1 - 0
appbuilder-ios/DigiXLite/DigiXLite/Source/View/Control/GroupMemberViewController.swift

@@ -51,6 +51,7 @@ class GroupMemberViewController: UITableViewController {
         searchController.searchBar.barTintColor = .secondaryColor
         searchController.searchBar.searchTextField.backgroundColor = .secondaryColor
         searchController.obscuresBackgroundDuringPresentation = false
+        searchController.searchBar.searchTextField.attributedPlaceholder = NSAttributedString(string: "Search".localized(), attributes: [NSAttributedString.Key.foregroundColor: UIColor.gray, NSAttributedString.Key.font: UIFont.systemFont(ofSize: 16)])
         
         definesPresentationContext = true
         

+ 1 - 0
appbuilder-ios/DigiXLite/DigiXLite/Source/View/Control/SetInternalCSAccount.swift

@@ -40,6 +40,7 @@ public class SetInternalCSAccount: UITableViewController {
         searchController.searchBar.barTintColor = .secondaryColor
         searchController.searchBar.searchTextField.backgroundColor = .secondaryColor
         searchController.obscuresBackgroundDuringPresentation = false
+        searchController.searchBar.searchTextField.attributedPlaceholder = NSAttributedString(string: "Search".localized(), attributes: [NSAttributedString.Key.foregroundColor: UIColor.gray, NSAttributedString.Key.font: UIFont.systemFont(ofSize: 16)])
         
         definesPresentationContext = true
         

+ 1 - 0
appbuilder-ios/DigiXLite/DigiXLite/Source/View/Streaming/QmeraGroupChooserViewController.swift

@@ -57,6 +57,7 @@ class QmeraGroupStreamingViewController: UITableViewController {
         searchController.searchBar.barTintColor = .secondaryColor
         searchController.searchBar.searchTextField.backgroundColor = .secondaryColor
         searchController.obscuresBackgroundDuringPresentation = false
+        searchController.searchBar.searchTextField.attributedPlaceholder = NSAttributedString(string: "Search".localized(), attributes: [NSAttributedString.Key.foregroundColor: UIColor.gray, NSAttributedString.Key.font: UIFont.systemFont(ofSize: 16)])
         
         definesPresentationContext = true
         

+ 1 - 0
appbuilder-ios/DigiXLite/DigiXLite/Source/View/Streaming/QmeraUserChooserViewController.swift

@@ -58,6 +58,7 @@ class QmeraUserChooserViewController: UITableViewController {
         searchController.searchBar.barTintColor = .secondaryColor
         searchController.searchBar.searchTextField.backgroundColor = .secondaryColor
         searchController.obscuresBackgroundDuringPresentation = false
+        searchController.searchBar.searchTextField.attributedPlaceholder = NSAttributedString(string: "Search".localized(), attributes: [NSAttributedString.Key.foregroundColor: UIColor.gray, NSAttributedString.Key.font: UIFont.systemFont(ofSize: 16)])
         
         definesPresentationContext = true
         

+ 1 - 1
appbuilder-ios/DigiXLite/DigiXLite/Source/View/Streaming/SeminarListViewController.swift

@@ -60,7 +60,7 @@ class SeminarListViewController: UIViewController {
         searchController.searchBar.barTintColor = .secondaryColor
         searchController.searchBar.searchTextField.backgroundColor = .secondaryColor
         searchController.obscuresBackgroundDuringPresentation = false
-        searchController.searchBar.searchTextField.attributedPlaceholder = NSAttributedString(string: "Search".localized(), attributes: [NSAttributedString.Key.foregroundColor: UIColor.gray])
+        searchController.searchBar.searchTextField.attributedPlaceholder = NSAttributedString(string: "Search".localized(), attributes: [NSAttributedString.Key.foregroundColor: UIColor.gray, NSAttributedString.Key.font: UIFont.systemFont(ofSize: 16)])
         searchController.searchBar.setMagnifyingGlassColorTo(color: .mainColor)
         searchController.searchBar.tintColor = .mainColor
         

+ 1 - 1
appbuilder-ios/NexilisLite/NexilisLite/Source/View/Call/QmeraCallContactViewController.swift

@@ -15,7 +15,7 @@ class QmeraCallContactViewController: UITableViewController {
         searchController.searchBar.barTintColor = .secondaryColor
         searchController.searchBar.searchTextField.backgroundColor = .secondaryColor
         searchController.obscuresBackgroundDuringPresentation = false
-        searchController.searchBar.placeholder = "Search".localized()
+        searchController.searchBar.searchTextField.attributedPlaceholder = NSAttributedString(string: "Search chats & messages".localized(), attributes: [NSAttributedString.Key.foregroundColor: UIColor.gray, NSAttributedString.Key.font: UIFont.systemFont(ofSize: 16)])
         return searchController
     }()
     

+ 1 - 1
appbuilder-ios/NexilisLite/NexilisLite/Source/View/Chat/EditorGroup.swift

@@ -2172,7 +2172,7 @@ extension EditorGroup: UIContextMenuInteractionDelegate {
                 self.tableChatView.reloadRows(at: [indexPath!], with: .none)
             })
         } else {
-            star = UIAction(title: "Unstar".localized(), image: UIImage(systemName: "star.fill"), handler: {(_) in
+            star = UIAction(title: "Unstar".localized(), image: UIImage(systemName: "star.slash.fill"), handler: {(_) in
                 if self.removed {
                     return
                 }

+ 20 - 3
appbuilder-ios/NexilisLite/NexilisLite/Source/View/Chat/EditorPersonal.swift

@@ -3407,7 +3407,7 @@ extension EditorPersonal: UIContextMenuInteractionDelegate {
                 self.tableChatView.reloadRows(at: [indexPath!], with: .none)
             })
         } else {
-            star = UIAction(title: "Unstar".localized(), image: UIImage(systemName: "star.fill"), handler: {(_) in
+            star = UIAction(title: "Unstar".localized(), image: UIImage(systemName: "star.slash.fill"), handler: {(_) in
                 if self.removed {
                     return
                 }
@@ -4691,8 +4691,8 @@ extension EditorPersonal: UITableViewDelegate, UITableViewDataSource {
             timeMessage.leadingAnchor.constraint(equalTo: containerMessage.trailingAnchor, constant: 8).isActive = true
         }
         
+        let imageStared = UIImageView()
         if dataMessages[indexPath.row]["is_stared"] as? String == "1" && (dataMessages[indexPath.row]["lock"] == nil || dataMessages[indexPath.row]["lock"] as! String == "0") {
-            let imageStared = UIImageView()
             cell.contentView.addSubview(imageStared)
             imageStared.translatesAutoresizingMaskIntoConstraints = false
             if (dataMessages[indexPath.row]["f_pin"] as? String == idMe) {
@@ -4931,6 +4931,7 @@ extension EditorPersonal: UITableViewDelegate, UITableViewDataSource {
             if let listImages = groupImages[messageIdChat] {
                 timeMessage.isHidden = true
                 statusMessage.isHidden = true
+                imageStared.isHidden = true
                 topMarginText.constant = topMarginText.constant + 225
                 let listImageThumb: [UIImageView] = [UIImageView(), UIImageView(), UIImageView(), UIImageView()]
                 for i in 0..<4 {
@@ -5001,8 +5002,18 @@ extension EditorPersonal: UITableViewDelegate, UITableViewDataSource {
                         timeInImage.anchor(right: statusInImage.leftAnchor, centerY: containerTimeStatus.centerYAnchor, height: 15)
                     } else {
                         timeInImage.anchor(right: containerTimeStatus.rightAnchor, paddingRight: 5, centerY: containerTimeStatus.centerYAnchor, height: 15)
-                        widthcontainerTimeStatus.constant = 40
+                        widthcontainerTimeStatus.constant = widthcontainerTimeStatus.constant - 10
                     }
+                    
+                    if listImages[i].dataMessage["is_stared"] as? String == "1" {
+                        let iconStar = UIImageView()
+                        containerTimeStatus.addSubview(iconStar)
+                        iconStar.anchor(right: timeInImage.leftAnchor, paddingRight: 2, centerY: containerTimeStatus.centerYAnchor, width: 15, height: 15)
+                        widthcontainerTimeStatus.constant = widthcontainerTimeStatus.constant + 15
+                        iconStar.image = UIImage(systemName: "star.fill")
+                        iconStar.tintColor = .white
+                    }
+                    
                     if !copySession && !forwardSession && !deleteSession {
                         let objectTap = ObjectGesture(target: self, action: #selector(imageGroupingTapped(_:)))
                         listImageThumb[i].isUserInteractionEnabled = true
@@ -5525,6 +5536,12 @@ extension EditorPersonal: UITableViewDelegate, UITableViewDataSource {
         listGroupingImages.listGroupingImages = sender.listImageFromGrouping
         listGroupingImages.titleName = titleText
         listGroupingImages.isInitiator = sender.isInitiator
+        listGroupingImages.updateEditor = { [self] updatedData in
+            groupImages[sender.listImageFromGrouping[0].messageId] = updatedData
+            DispatchQueue.main.async { [self] in
+                tableChatView.reloadData()
+            }
+        }
         self.navigationController?.pushViewController(listGroupingImages, animated: true)
     }
     

+ 1 - 1
appbuilder-ios/NexilisLite/NexilisLite/Source/View/Chat/EditorStarMessages.swift

@@ -994,7 +994,7 @@ public class EditorStarMessages: UIViewController, UITableViewDataSource, UITabl
     public func contextMenuInteraction(_ interaction: UIContextMenuInteraction, configurationForMenuAtLocation location: CGPoint) -> UIContextMenuConfiguration? {
         let indexPath = self.tableChatView.indexPathForRow(at: interaction.view!.convert(location, to: self.tableChatView))
         let dataMessages = self.dataMessages.filter({ $0["chat_date"] as! String == dataDates[indexPath!.section]})
-        let star = UIAction(title: "Unstar".localized(), image: UIImage(systemName: "star.fill"), handler: {(_) in
+        let star = UIAction(title: "Unstar".localized(), image: UIImage(systemName: "star.slash.fill"), handler: {(_) in
             DispatchQueue.global().async {
                 Database.shared.database?.inTransaction({ (fmdb, rollback) in
                     _ = Database.shared.updateRecord(fmdb: fmdb, table: "MESSAGE", cvalues: [

+ 89 - 9
appbuilder-ios/NexilisLite/NexilisLite/Source/View/Chat/ListGroupImages.swift

@@ -22,6 +22,7 @@ class ListGroupImages: UIViewController, UITableViewDataSource, UITableViewDeleg
     var startYVisible: CGFloat!
     var endYVisible: CGFloat!
     var indexSelected = 0
+    var updateEditor: (([ImageGrouping]) -> ())?
 
     override func viewDidLoad() {
         super.viewDidLoad()
@@ -33,6 +34,10 @@ class ListGroupImages: UIViewController, UITableViewDataSource, UITableViewDeleg
         centeredTitleView.subtitleLabel.text = String(listGroupingImages.count) + " " + "images".localized()
         navigationItem.titleView = centeredTitleView
         
+        let selectButton = UIBarButtonItem(title: "Select".localized(), style: .plain, target: self, action: #selector(selectAction))
+        selectButton.setTitleTextAttributes([NSAttributedString.Key.foregroundColor: UIColor.white, NSAttributedString.Key.font: UIFont.systemFont(ofSize: 16)], for: .normal)
+        navigationItem.rightBarButtonItem = selectButton
+        
         tableViewImages.register(UITableViewCell.self, forCellReuseIdentifier: "cellGrupingImages")
         tableViewImages.dataSource = self
         tableViewImages.delegate = self
@@ -77,8 +82,13 @@ class ListGroupImages: UIViewController, UITableViewDataSource, UITableViewDeleg
             content.imageProperties.tintColor = .black
             switch indexPath.row {
             case 0:
-                content.image = UIImage(systemName: "star.fill")
-                content.text = "Star".localized()
+                if listGroupingImages[indexSelected].dataMessage["is_stared"] as! String == "1" {
+                    content.image = UIImage(systemName: "star.slash.fill")
+                    content.text = "Unstar".localized()
+                } else {
+                    content.image = UIImage(systemName: "star.fill")
+                    content.text = "Star".localized()
+                }
             case 1:
                 content.image = UIImage(systemName: "arrowshape.turn.up.left.fill")
                 content.text = "Reply".localized()
@@ -101,8 +111,9 @@ class ListGroupImages: UIViewController, UITableViewDataSource, UITableViewDeleg
         cell.selectionStyle = .none
         
         let containerImages = UIImageView()
+        containerImages.contentMode = .scaleAspectFit
         cell.contentView.addSubview(containerImages)
-        containerImages.anchor(top: cell.contentView.topAnchor, left: cell.contentView.leftAnchor, bottom: cell.contentView.bottomAnchor, right: cell.contentView.rightAnchor, paddingBottom: 15, height: UIScreen.main.bounds.height - 104)
+        containerImages.anchor(top: cell.contentView.topAnchor, left: cell.contentView.leftAnchor, bottom: cell.contentView.bottomAnchor, right: cell.contentView.rightAnchor, paddingBottom: 15, height: getImageSize(image: listGroupingImages[indexPath.row].imageId)!.height)
         
         if !copySession && !forwardSession && !deleteSession {
             let longPressRecognizer = LongPressImageVIew(target: self, action: #selector(handleLongPress(_:)))
@@ -131,8 +142,8 @@ class ListGroupImages: UIViewController, UITableViewDataSource, UITableViewDeleg
         
         let containerTimeStatus = UIView()
         containerImages.addSubview(containerTimeStatus)
-        containerTimeStatus.anchor(bottom: containerImages.bottomAnchor, right: containerImages.rightAnchor, height: 15)
-        let widthcontainerTimeStatus = containerTimeStatus.widthAnchor.constraint(equalToConstant: 50)
+        containerTimeStatus.anchor(bottom: containerImages.bottomAnchor, right: containerImages.rightAnchor, height: 20)
+        let widthcontainerTimeStatus = containerTimeStatus.widthAnchor.constraint(equalToConstant: 60)
         widthcontainerTimeStatus.isActive = true
         containerTimeStatus.layer.cornerRadius = 5.0
         containerTimeStatus.layer.masksToBounds = true
@@ -146,12 +157,12 @@ class ListGroupImages: UIViewController, UITableViewDataSource, UITableViewDeleg
         formatter.locale = NSLocale(localeIdentifier: "id") as Locale?
         timeInImage.text = formatter.string(from: date as Date)
         timeInImage.textColor = .white
-        timeInImage.font = UIFont.systemFont(ofSize: 10, weight: .medium)
+        timeInImage.font = UIFont.systemFont(ofSize: 12, weight: .medium)
         
         if isInitiator {
             let statusInImage = UIImageView()
             containerTimeStatus.addSubview(statusInImage)
-            statusInImage.anchor(right: containerTimeStatus.rightAnchor, centerY: containerTimeStatus.centerYAnchor, width: 15, height: 15)
+            statusInImage.anchor(right: containerTimeStatus.rightAnchor, centerY: containerTimeStatus.centerYAnchor, width: 20, height: 20)
             if listGroupingImages[indexPath.row].status == "1" || listGroupingImages[indexPath.row].status == "2"  {
                 statusInImage.image = UIImage(named: "checklist", in: Bundle.resourceBundle(for: Nexilis.self), with: nil)!.withTintColor(UIColor.white)
             } else if listGroupingImages[indexPath.row].status == "3" {
@@ -161,8 +172,17 @@ class ListGroupImages: UIViewController, UITableViewDataSource, UITableViewDeleg
             }
             timeInImage.anchor(right: statusInImage.leftAnchor, centerY: containerTimeStatus.centerYAnchor, height: 15)
         } else {
-            timeInImage.anchor(right: containerTimeStatus.rightAnchor, paddingRight: 5, centerY: containerTimeStatus.centerYAnchor, height: 15)
-            widthcontainerTimeStatus.constant = 40
+            timeInImage.anchor(right: containerTimeStatus.rightAnchor, paddingRight: 5, centerY: containerTimeStatus.centerYAnchor, height: 20)
+            widthcontainerTimeStatus.constant = widthcontainerTimeStatus.constant - 10
+        }
+        
+        if listGroupingImages[indexPath.row].dataMessage["is_stared"] as! String == "1" {
+            let iconStar = UIImageView()
+            containerTimeStatus.addSubview(iconStar)
+            iconStar.anchor(right: timeInImage.leftAnchor, paddingRight: 2, centerY: containerTimeStatus.centerYAnchor, width: 20, height: 20)
+            widthcontainerTimeStatus.constant = widthcontainerTimeStatus.constant + 20
+            iconStar.image = UIImage(systemName: "star.fill")
+            iconStar.tintColor = .white
         }
         return cell
     }
@@ -173,6 +193,27 @@ class ListGroupImages: UIViewController, UITableViewDataSource, UITableViewDeleg
             switch indexPath.row {
             case 0:
                 popover.dismiss()
+                if listGroupingImages[indexSelected].dataMessage["is_stared"] as! String == "0" {
+                    DispatchQueue.global().async { [self] in
+                        Database.shared.database?.inTransaction({ (fmdb, rollback) in
+                            _ = Database.shared.updateRecord(fmdb: fmdb, table: "MESSAGE", cvalues: [
+                                "is_stared" : 1
+                            ], _where: "message_id = '\(listGroupingImages[indexSelected].messageId)'")
+                        })
+                    }
+                    listGroupingImages[indexSelected].dataMessage["is_stared"] = "1"
+                } else {
+                    DispatchQueue.global().async { [self] in
+                        Database.shared.database?.inTransaction({ (fmdb, rollback) in
+                            _ = Database.shared.updateRecord(fmdb: fmdb, table: "MESSAGE", cvalues: [
+                                "is_stared" : 0
+                            ], _where: "message_id = '\(listGroupingImages[indexSelected].messageId)'")
+                        })
+                    }
+                    listGroupingImages[indexSelected].dataMessage["is_stared"] = "0"
+                }
+                tableViewImages.reloadRows(at: [IndexPath(row: indexSelected, section: 0)], with: .none)
+                updateEditor!(listGroupingImages)
             case 1:
                 popover.dismiss()
             case 2:
@@ -233,6 +274,45 @@ class ListGroupImages: UIViewController, UITableViewDataSource, UITableViewDeleg
             UINotificationFeedbackGenerator().notificationOccurred(.success)
         }
     }
+    
+    @objc func selectAction() {
+        
+    }
+    
+    func getImageSize(image: String) -> CGSize? {
+        let nsDocumentDirectory = FileManager.SearchPathDirectory.documentDirectory
+        let nsUserDomainMask = FileManager.SearchPathDomainMask.userDomainMask
+        let paths = NSSearchPathForDirectoriesInDomains(nsDocumentDirectory, nsUserDomainMask, true)
+        if let dirPath = paths.first {
+            let imageURL = URL(fileURLWithPath: dirPath).appendingPathComponent(image)
+            let image = UIImage(contentsOfFile: imageURL.path)
+            let imageWidth = image!.size.width
+            let imageHeight = image!.size.height
+
+            // Calculate the aspect ratio of the image
+            let aspectRatio = imageWidth / imageHeight
+
+            // Get the available width and height of the screen
+            let screenWidth = UIScreen.main.bounds.width
+            let screenHeight = UIScreen.main.bounds.height
+
+            // Calculate the size to display the image while maintaining its aspect ratio
+            var displayWidth: CGFloat = 0.0
+            var displayHeight: CGFloat = 0.0
+
+            if imageWidth > imageHeight {
+                // Landscape image
+                displayWidth = screenWidth
+                displayHeight = screenWidth / aspectRatio
+            } else {
+                // Portrait or square image
+                displayHeight = screenHeight
+                displayWidth = screenHeight * aspectRatio
+            }
+            return CGSize(width: displayWidth, height: displayHeight)
+        }
+        return nil
+    }
 }
 
 class CenteredTitleSubtitleView: UIView {

+ 1 - 1
appbuilder-ios/NexilisLite/NexilisLite/Source/View/Contact/ContactCallViewController.swift

@@ -86,7 +86,7 @@ class ContactCallViewController: UIViewController {
         searchController.searchBar.barTintColor = .secondaryColor
         searchController.searchBar.searchTextField.backgroundColor = .secondaryColor
         searchController.obscuresBackgroundDuringPresentation = false
-        searchController.searchBar.searchTextField.attributedPlaceholder = NSAttributedString(string: "Search".localized(), attributes: [NSAttributedString.Key.foregroundColor: UIColor.gray])
+        searchController.searchBar.searchTextField.attributedPlaceholder = NSAttributedString(string: "Search".localized(), attributes: [NSAttributedString.Key.foregroundColor: UIColor.gray, NSAttributedString.Key.font: UIFont.systemFont(ofSize: 16)])
         searchController.searchBar.setMagnifyingGlassColorTo(color: .mainColor)
         searchController.searchBar.tintColor = .mainColor
         

+ 1 - 1
appbuilder-ios/NexilisLite/NexilisLite/Source/View/Control/AddFriendTableViewController.swift

@@ -66,7 +66,7 @@ class AddFriendTableViewController: UITableViewController {
         searchController.searchBar.barTintColor = .secondaryColor
         searchController.searchBar.searchTextField.backgroundColor = .secondaryColor
         searchController.obscuresBackgroundDuringPresentation = false
-        searchController.searchBar.searchTextField.attributedPlaceholder = NSAttributedString(string: "Search".localized(), attributes: [NSAttributedString.Key.foregroundColor: UIColor.gray])
+        searchController.searchBar.searchTextField.attributedPlaceholder = NSAttributedString(string: "Search".localized(), attributes: [NSAttributedString.Key.foregroundColor: UIColor.gray, NSAttributedString.Key.font: UIFont.systemFont(ofSize: 16)])
         searchController.searchBar.setMagnifyingGlassColorTo(color: .mainColor)
         searchController.searchBar.tintColor = .mainColor
         

+ 1 - 1
appbuilder-ios/NexilisLite/NexilisLite/Source/View/Control/BroadcastMembersTableViewController.swift

@@ -81,7 +81,7 @@ class BroadcastMembersTableViewController: UITableViewController, UISearchContro
         searchController.searchBar.barTintColor = .secondaryColor
         searchController.searchBar.searchTextField.backgroundColor = .secondaryColor
         searchController.obscuresBackgroundDuringPresentation = false
-        searchController.searchBar.searchTextField.attributedPlaceholder = NSAttributedString(string: "Search".localized(), attributes: [NSAttributedString.Key.foregroundColor: UIColor.gray])
+        searchController.searchBar.searchTextField.attributedPlaceholder = NSAttributedString(string: "Search".localized(), attributes: [NSAttributedString.Key.foregroundColor: UIColor.gray, NSAttributedString.Key.font: UIFont.systemFont(ofSize: 16)])
         searchController.searchBar.setMagnifyingGlassColorTo(color: .mainColor)
         searchController.searchBar.tintColor = .mainColor
         UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).setTitleTextAttributes([NSAttributedString.Key.foregroundColor: UIColor.white], for: .normal)

+ 1 - 1
appbuilder-ios/NexilisLite/NexilisLite/Source/View/Control/ContactChatViewController.swift

@@ -161,7 +161,7 @@ class ContactChatViewController: UITableViewController {
         searchController.obscuresBackgroundDuringPresentation = false
         searchController.searchBar.setMagnifyingGlassColorTo(color: .mainColor)
         searchController.searchBar.tintColor = .mainColor
-        searchController.searchBar.searchTextField.attributedPlaceholder = NSAttributedString(string: "Search".localized(), attributes: [NSAttributedString.Key.foregroundColor: UIColor.gray])
+        searchController.searchBar.searchTextField.attributedPlaceholder = NSAttributedString(string: "Search".localized(), attributes: [NSAttributedString.Key.foregroundColor: UIColor.gray, NSAttributedString.Key.font: UIFont.systemFont(ofSize: 16)])
         
         
         navigationItem.searchController = searchController

+ 1 - 0
appbuilder-ios/NexilisLite/NexilisLite/Source/View/Control/GroupMemberViewController.swift

@@ -51,6 +51,7 @@ class GroupMemberViewController: UITableViewController {
         searchController.searchBar.barTintColor = .secondaryColor
         searchController.searchBar.searchTextField.backgroundColor = .secondaryColor
         searchController.obscuresBackgroundDuringPresentation = false
+        searchController.searchBar.searchTextField.attributedPlaceholder = NSAttributedString(string: "Search".localized(), attributes: [NSAttributedString.Key.foregroundColor: UIColor.gray, NSAttributedString.Key.font: UIFont.systemFont(ofSize: 16)])
         
         definesPresentationContext = true
         

+ 1 - 0
appbuilder-ios/NexilisLite/NexilisLite/Source/View/Control/SetInternalCSAccount.swift

@@ -40,6 +40,7 @@ public class SetInternalCSAccount: UITableViewController {
         searchController.searchBar.barTintColor = .secondaryColor
         searchController.searchBar.searchTextField.backgroundColor = .secondaryColor
         searchController.obscuresBackgroundDuringPresentation = false
+        searchController.searchBar.searchTextField.attributedPlaceholder = NSAttributedString(string: "Search".localized(), attributes: [NSAttributedString.Key.foregroundColor: UIColor.gray, NSAttributedString.Key.font: UIFont.systemFont(ofSize: 16)])
         
         definesPresentationContext = true
         

+ 1 - 0
appbuilder-ios/NexilisLite/NexilisLite/Source/View/Streaming/QmeraGroupChooserViewController.swift

@@ -57,6 +57,7 @@ class QmeraGroupStreamingViewController: UITableViewController {
         searchController.searchBar.barTintColor = .secondaryColor
         searchController.searchBar.searchTextField.backgroundColor = .secondaryColor
         searchController.obscuresBackgroundDuringPresentation = false
+        searchController.searchBar.searchTextField.attributedPlaceholder = NSAttributedString(string: "Search".localized(), attributes: [NSAttributedString.Key.foregroundColor: UIColor.gray, NSAttributedString.Key.font: UIFont.systemFont(ofSize: 16)])
         
         definesPresentationContext = true
         

+ 1 - 0
appbuilder-ios/NexilisLite/NexilisLite/Source/View/Streaming/QmeraUserChooserViewController.swift

@@ -58,6 +58,7 @@ class QmeraUserChooserViewController: UITableViewController {
         searchController.searchBar.barTintColor = .secondaryColor
         searchController.searchBar.searchTextField.backgroundColor = .secondaryColor
         searchController.obscuresBackgroundDuringPresentation = false
+        searchController.searchBar.searchTextField.attributedPlaceholder = NSAttributedString(string: "Search".localized(), attributes: [NSAttributedString.Key.foregroundColor: UIColor.gray, NSAttributedString.Key.font: UIFont.systemFont(ofSize: 16)])
         
         definesPresentationContext = true
         

+ 1 - 1
appbuilder-ios/NexilisLite/NexilisLite/Source/View/Streaming/SeminarListViewController.swift

@@ -60,7 +60,7 @@ class SeminarListViewController: UIViewController {
         searchController.searchBar.barTintColor = .secondaryColor
         searchController.searchBar.searchTextField.backgroundColor = .secondaryColor
         searchController.obscuresBackgroundDuringPresentation = false
-        searchController.searchBar.searchTextField.attributedPlaceholder = NSAttributedString(string: "Search".localized(), attributes: [NSAttributedString.Key.foregroundColor: UIColor.gray])
+        searchController.searchBar.searchTextField.attributedPlaceholder = NSAttributedString(string: "Search".localized(), attributes: [NSAttributedString.Key.foregroundColor: UIColor.gray, NSAttributedString.Key.font: UIFont.systemFont(ofSize: 16)])
         searchController.searchBar.setMagnifyingGlassColorTo(color: .mainColor)
         searchController.searchBar.tintColor = .mainColor