mirror of
https://github.com/oxen-io/session-ios.git
synced 2023-12-13 21:30:14 +01:00
face9da02b
Fixed a bug where the scroll to bottom button wasn't working Fixed an issue where searching was running on the main thread (which could cause UI issues) Updated the searching to interrupt the previous query when the search term changes Updated the in-conversation settings to be use the new config-based approach (deleted the OWSConversationSettingsViewController)
106 lines
3.3 KiB
Swift
106 lines
3.3 KiB
Swift
// Copyright © 2022 Rangeproof Pty Ltd. All rights reserved.
|
|
|
|
import UIKit
|
|
import YYImage
|
|
import SessionUIKit
|
|
|
|
/// Shown when the user taps a profile picture in the conversation settings.
|
|
final class ProfilePictureVC: BaseVC {
|
|
private let image: UIImage?
|
|
private let animatedImage: YYImage?
|
|
private let snTitle: String
|
|
|
|
private var imageSize: CGFloat { (UIScreen.main.bounds.width - (2 * Values.largeSpacing)) }
|
|
|
|
// MARK: - UI
|
|
|
|
private lazy var fallbackView: UIView = {
|
|
let result: UIView = UIView()
|
|
result.clipsToBounds = true
|
|
result.themeBackgroundColor = .backgroundSecondary
|
|
result.layer.cornerRadius = (imageSize / 2)
|
|
result.isHidden = (
|
|
image != nil ||
|
|
animatedImage != nil
|
|
)
|
|
result.set(.width, to: imageSize)
|
|
result.set(.height, to: imageSize)
|
|
|
|
return result
|
|
}()
|
|
|
|
private lazy var imageView: UIImageView = {
|
|
let result: UIImageView = UIImageView(image: image)
|
|
result.clipsToBounds = true
|
|
result.contentMode = .scaleAspectFill
|
|
result.layer.cornerRadius = (imageSize / 2)
|
|
result.isHidden = (image == nil)
|
|
result.set(.width, to: imageSize)
|
|
result.set(.height, to: imageSize)
|
|
|
|
return result
|
|
}()
|
|
|
|
private lazy var animatedImageView: YYAnimatedImageView = {
|
|
let result: YYAnimatedImageView = YYAnimatedImageView(image: animatedImage)
|
|
result.clipsToBounds = true
|
|
result.contentMode = .scaleAspectFill
|
|
result.layer.cornerRadius = (imageSize / 2)
|
|
result.isHidden = (animatedImage == nil)
|
|
result.set(.width, to: imageSize)
|
|
result.set(.height, to: imageSize)
|
|
|
|
return result
|
|
}()
|
|
|
|
// MARK: - Initialization
|
|
|
|
init(image: UIImage?, animatedImage: YYImage?, title: String) {
|
|
self.image = image
|
|
self.animatedImage = animatedImage
|
|
self.snTitle = title
|
|
|
|
super.init(nibName: nil, bundle: nil)
|
|
}
|
|
|
|
override init(nibName: String?, bundle: Bundle?) {
|
|
preconditionFailure("Use init(image:) instead.")
|
|
}
|
|
|
|
required init?(coder: NSCoder) {
|
|
preconditionFailure("Use init(coder:) instead.")
|
|
}
|
|
|
|
override func viewDidLoad() {
|
|
view.themeBackgroundColor = .backgroundPrimary
|
|
|
|
setNavBarTitle(snTitle)
|
|
|
|
// Close button
|
|
let closeButton = UIBarButtonItem(
|
|
image: #imageLiteral(resourceName: "X").withRenderingMode(.alwaysTemplate),
|
|
style: .plain,
|
|
target: self,
|
|
action: #selector(close)
|
|
)
|
|
closeButton.themeTintColor = .textPrimary
|
|
navigationItem.leftBarButtonItem = closeButton
|
|
|
|
view.addSubview(fallbackView)
|
|
view.addSubview(imageView)
|
|
view.addSubview(animatedImageView)
|
|
|
|
fallbackView.center(in: view)
|
|
imageView.center(in: view)
|
|
animatedImageView.center(in: view)
|
|
|
|
// Gesture recognizer
|
|
let swipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: #selector(close))
|
|
swipeGestureRecognizer.direction = .down
|
|
view.addGestureRecognizer(swipeGestureRecognizer)
|
|
}
|
|
|
|
@objc private func close() {
|
|
presentingViewController?.dismiss(animated: true, completion: nil)
|
|
}
|
|
}
|