|
@@ -54,6 +54,7 @@ class IncomingThread {
|
|
|
} else if message.getCode() == CoreMessage_TMessageCode.PUSH_MYSELF || message.getCode() == CoreMessage_TMessageCode.PUSH_MYSELF_ACK || message.getCode() == CoreMessage_TMessageCode.PULL_MYSELF {
|
|
|
pushMyself(message: message)
|
|
|
} else if message.getCode() == CoreMessage_TMessageCode.PUSH_BUDDY {
|
|
|
+ makeNotifAddFriend(message: message)
|
|
|
initBatchBuddy(message: message)
|
|
|
} else if message.getCode() == CoreMessage_TMessageCode.INIT_BATCH_BUDDY {
|
|
|
initBatchBuddy(message: message)
|
|
@@ -156,6 +157,83 @@ class IncomingThread {
|
|
|
/**
|
|
|
*
|
|
|
*/
|
|
|
+ var floating: FloatingNotificationBanner!
|
|
|
+
|
|
|
+ private func makeNotifAddFriend(message: TMessage) {
|
|
|
+ let data = message.getBody(key: CoreMessage_TMessageKey.DATA)
|
|
|
+ if let jsonArray = try! JSONSerialization.jsonObject(with: data.data(using: String.Encoding.utf8)!, options: JSONSerialization.ReadingOptions()) as? [AnyObject] {
|
|
|
+ for json in jsonArray {
|
|
|
+ DispatchQueue.main.async { [self] in
|
|
|
+ let container = UIView()
|
|
|
+ container.backgroundColor = .gray
|
|
|
+ let profileImage = UIImageView()
|
|
|
+ profileImage.frame.size = CGSize(width: 60, height: 60)
|
|
|
+ container.addSubview(profileImage)
|
|
|
+ profileImage.translatesAutoresizingMaskIntoConstraints = false
|
|
|
+ NSLayoutConstraint.activate([
|
|
|
+ profileImage.leadingAnchor.constraint(equalTo: container.leadingAnchor, constant: 8.0),
|
|
|
+ profileImage.centerYAnchor.constraint(equalTo: container.centerYAnchor),
|
|
|
+ profileImage.widthAnchor.constraint(equalToConstant: 60),
|
|
|
+ profileImage.heightAnchor.constraint(equalToConstant: 60),
|
|
|
+ ])
|
|
|
+
|
|
|
+ let title = UILabel()
|
|
|
+ container.addSubview(title)
|
|
|
+ title.translatesAutoresizingMaskIntoConstraints = false
|
|
|
+ NSLayoutConstraint.activate([
|
|
|
+ title.leadingAnchor.constraint(equalTo: profileImage.trailingAnchor, constant: 8.0),
|
|
|
+ title.centerYAnchor.constraint(equalTo: container.centerYAnchor),
|
|
|
+ ])
|
|
|
+ title.font = UIFont.systemFont(ofSize: 14)
|
|
|
+ let firstname = CoreMessage_TMessageUtil.getString(json: json, key: CoreMessage_TMessageKey.FIRST_NAME)
|
|
|
+ let lastname = CoreMessage_TMessageUtil.getString(json: json, key: CoreMessage_TMessageKey.LAST_NAME)
|
|
|
+ title.text = (firstname + " " + lastname).trimmingCharacters(in: .whitespaces) + " " + "added you as friend".localized()
|
|
|
+ title.textColor = .white
|
|
|
+
|
|
|
+ if floating != nil {
|
|
|
+ floating.dismiss()
|
|
|
+ }
|
|
|
+ floating = FloatingNotificationBanner(customView: container)
|
|
|
+ floating.bannerHeight = 100.0
|
|
|
+ floating.transparency = 0.9
|
|
|
+
|
|
|
+ let profile = CoreMessage_TMessageUtil.getString(json: json, key: CoreMessage_TMessageKey.THUMB_ID)
|
|
|
+ if profile != "" {
|
|
|
+ profileImage.circle()
|
|
|
+ do {
|
|
|
+ let documentDir = try FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true)
|
|
|
+ let file = documentDir.appendingPathComponent(profile)
|
|
|
+ if FileManager().fileExists(atPath: file.path) {
|
|
|
+ profileImage.image = UIImage(contentsOfFile: file.path)
|
|
|
+ profileImage.backgroundColor = .clear
|
|
|
+ } else {
|
|
|
+ Download().start(forKey: profile) { (name, progress) in
|
|
|
+ guard progress == 100 else {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ DispatchQueue.main.async { [self] in
|
|
|
+ profileImage.image = UIImage(contentsOfFile: file.path)
|
|
|
+ profileImage.backgroundColor = .clear
|
|
|
+ floating.show(queuePosition: .front, bannerPosition: .top, queue: NotificationBannerQueue(maxBannersOnScreenSimultaneously: 1), on: nil, edgeInsets: UIEdgeInsets(top: 8.0, left: 8.0, bottom: 0, right: 8.0), cornerRadius: 8.0, shadowColor: .clear, shadowOpacity: .zero, shadowBlurRadius: .zero, shadowCornerRadius: .zero, shadowOffset: .zero, shadowEdgeInsets: nil)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch {}
|
|
|
+ profileImage.contentMode = .scaleAspectFill
|
|
|
+ } else {
|
|
|
+ profileImage.circle()
|
|
|
+ profileImage.image = UIImage(systemName: "person")
|
|
|
+ profileImage.contentMode = .scaleAspectFit
|
|
|
+ profileImage.backgroundColor = .lightGray
|
|
|
+ profileImage.tintColor = .white
|
|
|
+ }
|
|
|
+ floating.show(queuePosition: .front, bannerPosition: .top, queue: NotificationBannerQueue(maxBannersOnScreenSimultaneously: 1), on: nil, edgeInsets: UIEdgeInsets(top: 8.0, left: 8.0, bottom: 0, right: 8.0), cornerRadius: 8.0, shadowColor: .clear, shadowOpacity: .zero, shadowBlurRadius: .zero, shadowCornerRadius: .zero, shadowOffset: .zero, shadowEdgeInsets: nil)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
private func inquiry(message: TMessage) {
|
|
|
let message_id = message.getBody(key: CoreMessage_TMessageKey.MESSAGE_ID, default_value: "")
|
|
@@ -876,7 +954,6 @@ class IncomingThread {
|
|
|
if let delegate = Nexilis.shared.personInfoDelegate {
|
|
|
delegate.onUpdatePersonInfo(state: 99, message: "delete_buddy,\(l_pin)")
|
|
|
}
|
|
|
- return
|
|
|
}
|
|
|
ack(message: message)
|
|
|
}
|