Преглед на файлове

no automatic remote content for contact requests

loading remote content in contact requests
always require explicit consent of the user.
moreover, contact request do not alter
the otherwise used never/once/always settings.
B. Petersen преди 2 години
родител
ревизия
6d7adb4b75
променени са 2 файла, в които са добавени 22 реда и са изтрити 15 реда
  1. 1 1
      deltachat-ios/Chat/ChatViewController.swift
  2. 21 14
      deltachat-ios/Controller/FullMessageViewController.swift

+ 1 - 1
deltachat-ios/Chat/ChatViewController.swift

@@ -2080,7 +2080,7 @@ extension ChatViewController: BaseMessageCellDelegate {
         } else if msg.type == DC_MSG_WEBXDC {
         } else if msg.type == DC_MSG_WEBXDC {
             showWebxdcViewFor(message: msg)
             showWebxdcViewFor(message: msg)
         } else {
         } else {
-            let fullMessageViewController = FullMessageViewController(dcContext: dcContext, messageId: msg.id)
+            let fullMessageViewController = FullMessageViewController(dcContext: dcContext, messageId: msg.id, isContactRequest: dcChat.isContactRequest)
             navigationController?.pushViewController(fullMessageViewController, animated: true)
             navigationController?.pushViewController(fullMessageViewController, animated: true)
         }
         }
     }
     }

+ 21 - 14
deltachat-ios/Controller/FullMessageViewController.swift

@@ -17,6 +17,7 @@ class FullMessageViewController: WebViewViewController {
     }
     }
 
 
     var messageId: Int
     var messageId: Int
+    private var isContactRequest: Bool
     private var loadContentOnce = false
     private var loadContentOnce = false
 
 
     // Block just everything :)
     // Block just everything :)
@@ -34,8 +35,9 @@ class FullMessageViewController: WebViewViewController {
     """
     """
     
     
 
 
-    init(dcContext: DcContext, messageId: Int) {
+    init(dcContext: DcContext, messageId: Int, isContactRequest: Bool) {
         self.messageId = messageId
         self.messageId = messageId
+        self.isContactRequest = isContactRequest
         super.init(dcContext: dcContext)
         super.init(dcContext: dcContext)
         self.allowSearch = true
         self.allowSearch = true
     }
     }
@@ -58,7 +60,7 @@ class FullMessageViewController: WebViewViewController {
 
 
     override func viewWillAppear(_ animated: Bool) {
     override func viewWillAppear(_ animated: Bool) {
         super.viewWillAppear(animated)
         super.viewWillAppear(animated)
-        if UserDefaults.standard.bool(forKey: "html_load_remote_content") {
+        if !isContactRequest && UserDefaults.standard.bool(forKey: "html_load_remote_content") {
             loadHtml()
             loadHtml()
         } else {
         } else {
             loadRestrictedHtml()
             loadRestrictedHtml()
@@ -72,7 +74,7 @@ class FullMessageViewController: WebViewViewController {
         var alwaysCheckmark = ""
         var alwaysCheckmark = ""
         if loadContentOnce {
         if loadContentOnce {
             onceCheckmark = checkmark
             onceCheckmark = checkmark
-        } else if UserDefaults.standard.bool(forKey: "html_load_remote_content") {
+        } else if !isContactRequest && UserDefaults.standard.bool(forKey: "html_load_remote_content") {
             alwaysCheckmark = checkmark
             alwaysCheckmark = checkmark
         } else {
         } else {
             neverCheckmark = checkmark
             neverCheckmark = checkmark
@@ -81,14 +83,15 @@ class FullMessageViewController: WebViewViewController {
         let alert = UIAlertController(title: String.localized("load_remote_content"),
         let alert = UIAlertController(title: String.localized("load_remote_content"),
                                       message: String.localized("load_remote_content_ask"),
                                       message: String.localized("load_remote_content_ask"),
                                       preferredStyle: .safeActionSheet)
                                       preferredStyle: .safeActionSheet)
-        let alwaysAction = UIAlertAction(title: "\(alwaysCheckmark)\(String.localized("always"))", style: .default, handler: alwaysActionPressed(_:))
-        let neverAction = UIAlertAction(title: "\(neverCheckmark)\(String.localized("never"))", style: .default, handler: neverActionPressed(_:))
-        let onceAction = UIAlertAction(title: "\(onceCheckmark)\(String.localized("once"))", style: .default, handler: onceActionPressed(_:))
-
+        if isContactRequest {
+            alert.addAction(UIAlertAction(title: "\(neverCheckmark)\(String.localized("no"))", style: .default, handler: neverActionPressed(_:)))
+            alert.addAction(UIAlertAction(title: "\(onceCheckmark)\(String.localized("once"))", style: .default, handler: onceActionPressed(_:)))
+        } else {
+            alert.addAction(UIAlertAction(title: "\(neverCheckmark)\(String.localized("never"))", style: .default, handler: neverActionPressed(_:)))
+            alert.addAction(UIAlertAction(title: "\(onceCheckmark)\(String.localized("once"))", style: .default, handler: onceActionPressed(_:)))
+            alert.addAction(UIAlertAction(title: "\(alwaysCheckmark)\(String.localized("always"))", style: .default, handler: alwaysActionPressed(_:)))
+        }
 
 
-        alert.addAction(onceAction)
-        alert.addAction(alwaysAction)
-        alert.addAction(neverAction)
         alert.addAction(UIAlertAction(title: String.localized("cancel"), style: .cancel, handler: nil))
         alert.addAction(UIAlertAction(title: String.localized("cancel"), style: .cancel, handler: nil))
         self.present(alert, animated: true, completion: nil)
         self.present(alert, animated: true, completion: nil)
     }
     }
@@ -101,15 +104,19 @@ class FullMessageViewController: WebViewViewController {
     }
     }
 
 
     @objc func onceActionPressed(_ action: UIAlertAction) {
     @objc func onceActionPressed(_ action: UIAlertAction) {
-        UserDefaults.standard.set(false, forKey: "html_load_remote_content")
-        UserDefaults.standard.synchronize()
+        if !isContactRequest {
+            UserDefaults.standard.set(false, forKey: "html_load_remote_content")
+            UserDefaults.standard.synchronize()
+        }
         loadContentOnce = true
         loadContentOnce = true
         loadUnrestricedHtml()
         loadUnrestricedHtml()
     }
     }
 
 
     @objc func neverActionPressed(_ action: UIAlertAction) {
     @objc func neverActionPressed(_ action: UIAlertAction) {
-        UserDefaults.standard.set(false, forKey: "html_load_remote_content")
-        UserDefaults.standard.synchronize()
+        if !isContactRequest {
+            UserDefaults.standard.set(false, forKey: "html_load_remote_content")
+            UserDefaults.standard.synchronize()
+        }
         loadContentOnce = false
         loadContentOnce = false
         loadRestrictedHtml()
         loadRestrictedHtml()
     }
     }