mirror of
https://github.com/oxen-io/session-ios.git
synced 2023-12-13 21:30:14 +01:00
34fea96db3
Added code to prevent the garbage collection job from auto-running more often than once every 23 hours Fixed a bug where if the first avatar you try to add is your own, it could fail due to the folder not getting created Fixed a bug where updating your profile would store and send an invalid profile picture url against your profile Fixed an issue where the closed group icon wouldn't appear as the double icon when it couldn't retrieve a second profile Fixed a bug where the device might not correctly register for push notifications in some cases Fixed a bug where interacting with a notification when the app is in the background (but not closed) wasn't doing anything Fixed a bug where the SyncPushTokensJob wouldn't re-run correctly in some cases if the user was already registered Updated the profile avatar downloading logic to only download avatars if they have been updated Updated the migration and OpenGroupManager to force Session-run open groups to always use the OpenGroupAPI.defaultServer value
104 lines
3.4 KiB
Swift
104 lines
3.4 KiB
Swift
// Copyright © 2022 Rangeproof Pty Ltd. All rights reserved.
|
|
|
|
import UIKit
|
|
import SessionUIKit
|
|
import SessionMessagingKit
|
|
|
|
final class SimplifiedConversationCell: UITableViewCell {
|
|
// MARK: - Initialization
|
|
|
|
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
|
|
super.init(style: style, reuseIdentifier: reuseIdentifier)
|
|
setUpViewHierarchy()
|
|
}
|
|
|
|
required init?(coder: NSCoder) {
|
|
super.init(coder: coder)
|
|
setUpViewHierarchy()
|
|
}
|
|
|
|
// MARK: - UI
|
|
|
|
private lazy var stackView: UIStackView = {
|
|
let stackView: UIStackView = UIStackView()
|
|
stackView.translatesAutoresizingMaskIntoConstraints = false
|
|
stackView.axis = .horizontal
|
|
stackView.alignment = .center
|
|
stackView.spacing = Values.mediumSpacing
|
|
|
|
return stackView
|
|
}()
|
|
|
|
private lazy var accentLineView: UIView = {
|
|
let result = UIView()
|
|
result.translatesAutoresizingMaskIntoConstraints = false
|
|
result.backgroundColor = Colors.destructive
|
|
|
|
return result
|
|
}()
|
|
|
|
private lazy var profilePictureView: ProfilePictureView = {
|
|
let view: ProfilePictureView = ProfilePictureView()
|
|
view.translatesAutoresizingMaskIntoConstraints = false
|
|
|
|
return view
|
|
}()
|
|
|
|
private lazy var displayNameLabel: UILabel = {
|
|
let result = UILabel()
|
|
result.font = .boldSystemFont(ofSize: Values.mediumFontSize)
|
|
result.textColor = Colors.text
|
|
result.lineBreakMode = .byTruncatingTail
|
|
|
|
return result
|
|
}()
|
|
|
|
// MARK: - Initialization
|
|
|
|
private func setUpViewHierarchy() {
|
|
backgroundColor = Colors.cellBackground
|
|
|
|
let selectedBackgroundView = UIView()
|
|
selectedBackgroundView.backgroundColor = Colors.cellSelected
|
|
self.selectedBackgroundView = selectedBackgroundView
|
|
|
|
addSubview(stackView)
|
|
|
|
stackView.addArrangedSubview(accentLineView)
|
|
stackView.addArrangedSubview(profilePictureView)
|
|
stackView.addArrangedSubview(displayNameLabel)
|
|
stackView.addArrangedSubview(UIView.hSpacer(0))
|
|
|
|
setupLayout()
|
|
}
|
|
|
|
// MARK: - Layout
|
|
|
|
private func setupLayout() {
|
|
accentLineView.set(.width, to: Values.accentLineThickness)
|
|
accentLineView.set(.height, to: 68)
|
|
|
|
profilePictureView.set(.width, to: Values.mediumProfilePictureSize)
|
|
profilePictureView.set(.height, to: Values.mediumProfilePictureSize)
|
|
profilePictureView.size = Values.mediumProfilePictureSize
|
|
|
|
stackView.pin(to: self)
|
|
}
|
|
|
|
// MARK: - Updating
|
|
|
|
public func update(with cellViewModel: SessionThreadViewModel) {
|
|
accentLineView.alpha = (cellViewModel.threadIsBlocked == true ? 1 : 0)
|
|
profilePictureView.update(
|
|
publicKey: cellViewModel.threadId,
|
|
profile: cellViewModel.profile,
|
|
additionalProfile: cellViewModel.additionalProfile,
|
|
threadVariant: cellViewModel.threadVariant,
|
|
openGroupProfilePicture: cellViewModel.openGroupProfilePictureData.map { UIImage(data: $0) },
|
|
useFallbackPicture: (cellViewModel.threadVariant == .openGroup && cellViewModel.openGroupProfilePictureData == nil),
|
|
showMultiAvatarForClosedGroup: true
|
|
)
|
|
displayNameLabel.text = cellViewModel.displayName
|
|
}
|
|
}
|