diff --git a/Signal/src/Loki/Components/Button.swift b/SessionUIKit/Components/Button.swift similarity index 95% rename from Signal/src/Loki/Components/Button.swift rename to SessionUIKit/Components/Button.swift index 81449460e..a486c9fc8 100644 --- a/Signal/src/Loki/Components/Button.swift +++ b/SessionUIKit/Components/Button.swift @@ -1,18 +1,19 @@ +import UIKit -final class Button : UIButton { +public final class Button : UIButton { private let style: Style private let size: Size private var heightConstraint: NSLayoutConstraint! - enum Style { + public enum Style { case unimportant, regular, prominentOutline, prominentFilled, regularBorderless } - enum Size { + public enum Size { case medium, large, small } - init(style: Style, size: Size) { + public init(style: Style, size: Size) { self.style = style self.size = size super.init(frame: .zero) diff --git a/Signal/src/Loki/Components/SearchBar.swift b/SessionUIKit/Components/SearchBar.swift similarity index 90% rename from Signal/src/Loki/Components/SearchBar.swift rename to SessionUIKit/Components/SearchBar.swift index 5a6e78ed3..9897546d7 100644 --- a/Signal/src/Loki/Components/SearchBar.swift +++ b/SessionUIKit/Components/SearchBar.swift @@ -1,12 +1,13 @@ +import UIKit -final class SearchBar : UISearchBar { +public final class SearchBar : UISearchBar { - override init(frame: CGRect) { + public override init(frame: CGRect) { super.init(frame: frame) setUpStyle() } - required init?(coder: NSCoder) { + public required init?(coder: NSCoder) { super.init(coder: coder) setUpStyle() } @@ -15,9 +16,9 @@ final class SearchBar : UISearchBar { searchBarStyle = .minimal // Hide the border around the search bar barStyle = .black // Use Apple's black design as a base tintColor = Colors.accent // The cursor color - let searchImage = #imageLiteral(resourceName: "searchbar_search").asTintedImage(color: Colors.searchBarPlaceholder)! + let searchImage = #imageLiteral(resourceName: "searchbar_search").withTint(Colors.searchBarPlaceholder)! setImage(searchImage, for: .search, state: .normal) - let clearImage = #imageLiteral(resourceName: "searchbar_clear").asTintedImage(color: Colors.searchBarPlaceholder)! + let clearImage = #imageLiteral(resourceName: "searchbar_clear").withTint(Colors.searchBarPlaceholder)! setImage(clearImage, for: .clear, state: .normal) let searchTextField: UITextField if #available(iOS 13, *) { diff --git a/Signal/src/Loki/Components/Separator.swift b/SessionUIKit/Components/Separator.swift similarity index 87% rename from Signal/src/Loki/Components/Separator.swift rename to SessionUIKit/Components/Separator.swift index 49ca4e05e..af5cea655 100644 --- a/Signal/src/Loki/Components/Separator.swift +++ b/SessionUIKit/Components/Separator.swift @@ -1,5 +1,6 @@ +import UIKit -final class Separator : UIView { +public final class Separator : UIView { private let title: String // MARK: Components @@ -20,17 +21,17 @@ final class Separator : UIView { }() // MARK: Initialization - init(title: String) { + public init(title: String) { self.title = title super.init(frame: CGRect.zero) setUpViewHierarchy() } - override init(frame: CGRect) { + public override init(frame: CGRect) { preconditionFailure("Use init(title:) instead.") } - required init?(coder: NSCoder) { + public required init?(coder: NSCoder) { preconditionFailure("Use init(title:) instead.") } @@ -44,14 +45,14 @@ final class Separator : UIView { } // MARK: Updating - override func layoutSubviews() { + public override func layoutSubviews() { super.layoutSubviews() updateLineLayer() } private func updateLineLayer() { - let w = width() - let h = height() + let w = bounds.width + let h = bounds.height let path = UIBezierPath() path.move(to: CGPoint(x: 0, y: h / 2)) let titleLabelFrame = titleLabel.frame.insetBy(dx: -10, dy: -6) diff --git a/Signal/src/Loki/Components/TabBar.swift b/SessionUIKit/Components/TabBar.swift similarity index 90% rename from Signal/src/Loki/Components/TabBar.swift rename to SessionUIKit/Components/TabBar.swift index ce4aacf48..489ba145f 100644 --- a/Signal/src/Loki/Components/TabBar.swift +++ b/SessionUIKit/Components/TabBar.swift @@ -1,5 +1,6 @@ +import UIKit -final class TabBar : UIView { +public final class TabBar : UIView { private let tabs: [Tab] private var accentLineViewHorizontalCenteringConstraint: NSLayoutConstraint! private var accentLineViewWidthConstraint: NSLayoutConstraint! @@ -22,23 +23,28 @@ final class TabBar : UIView { }() // MARK: Types - struct Tab { + public struct Tab { let title: String let onTap: () -> Void + + public init(title: String, onTap: @escaping () -> Void) { + self.title = title + self.onTap = onTap + } } // MARK: Lifecycle - init(tabs: [Tab]) { + public init(tabs: [Tab]) { self.tabs = tabs super.init(frame: CGRect.zero) setUpViewHierarchy() } - override init(frame: CGRect) { + public override init(frame: CGRect) { preconditionFailure("Use init(tabs:) instead.") } - required init?(coder: NSCoder) { + public required init?(coder: NSCoder) { preconditionFailure("Use init(tabs:) instead.") } @@ -75,7 +81,7 @@ final class TabBar : UIView { } // MARK: Updating - func selectTab(at index: Int, withAnimatedTransition isAnimated: Bool = true) { + public func selectTab(at index: Int, withAnimatedTransition isAnimated: Bool = true) { let tabLabel = tabLabels[index] accentLineViewHorizontalCenteringConstraint?.isActive = false accentLineViewHorizontalCenteringConstraint = accentLineView.centerXAnchor.constraint(equalTo: tabLabel.centerXAnchor) diff --git a/Signal/src/Loki/Components/TextField.swift b/SessionUIKit/Components/TextField.swift similarity index 81% rename from Signal/src/Loki/Components/TextField.swift rename to SessionUIKit/Components/TextField.swift index 58ceea023..95e4bb20a 100644 --- a/Signal/src/Loki/Components/TextField.swift +++ b/SessionUIKit/Components/TextField.swift @@ -1,11 +1,12 @@ +import UIKit -final class TextField : UITextField { +public final class TextField : UITextField { private let usesDefaultHeight: Bool private let height: CGFloat private let horizontalInset: CGFloat private let verticalInset: CGFloat - init(placeholder: String, usesDefaultHeight: Bool = true, customHeight: CGFloat? = nil, customHorizontalInset: CGFloat? = nil, customVerticalInset: CGFloat? = nil) { + public init(placeholder: String, usesDefaultHeight: Bool = true, customHeight: CGFloat? = nil, customHorizontalInset: CGFloat? = nil, customVerticalInset: CGFloat? = nil) { self.usesDefaultHeight = usesDefaultHeight self.height = customHeight ?? Values.textFieldHeight self.horizontalInset = customHorizontalInset ?? (isIPhone5OrSmaller ? Values.mediumSpacing : Values.largeSpacing) @@ -15,11 +16,11 @@ final class TextField : UITextField { setUpStyle() } - override init(frame: CGRect) { + public override init(frame: CGRect) { preconditionFailure("Use init(placeholder:) instead.") } - required init?(coder: NSCoder) { + public required init?(coder: NSCoder) { preconditionFailure("Use init(placeholder:) instead.") } @@ -40,7 +41,7 @@ final class TextField : UITextField { layer.cornerRadius = Values.textFieldCornerRadius } - override func textRect(forBounds bounds: CGRect) -> CGRect { + public override func textRect(forBounds bounds: CGRect) -> CGRect { if usesDefaultHeight { return bounds.insetBy(dx: horizontalInset, dy: verticalInset) } else { @@ -48,7 +49,7 @@ final class TextField : UITextField { } } - override func editingRect(forBounds bounds: CGRect) -> CGRect { + public override func editingRect(forBounds bounds: CGRect) -> CGRect { if usesDefaultHeight { return bounds.insetBy(dx: horizontalInset, dy: verticalInset) } else { diff --git a/Signal/src/Loki/Components/TextView.swift b/SessionUIKit/Components/TextView.swift similarity index 80% rename from Signal/src/Loki/Components/TextView.swift rename to SessionUIKit/Components/TextView.swift index e7bd08bfb..bb35f1f76 100644 --- a/Signal/src/Loki/Components/TextView.swift +++ b/SessionUIKit/Components/TextView.swift @@ -1,12 +1,13 @@ +import UIKit -final class TextView : UITextView, UITextViewDelegate { +public final class TextView : UITextView, UITextViewDelegate { private let usesDefaultHeight: Bool private let height: CGFloat private let horizontalInset: CGFloat private let verticalInset: CGFloat private let placeholder: String - override var contentSize: CGSize { didSet { centerTextVertically() } } + public override var contentSize: CGSize { didSet { centerTextVertically() } } private lazy var placeholderLabel: UILabel = { let result = UILabel() @@ -15,7 +16,7 @@ final class TextView : UITextView, UITextViewDelegate { return result }() - init(placeholder: String, usesDefaultHeight: Bool = true, customHeight: CGFloat? = nil, customHorizontalInset: CGFloat? = nil, customVerticalInset: CGFloat? = nil) { + public init(placeholder: String, usesDefaultHeight: Bool = true, customHeight: CGFloat? = nil, customHorizontalInset: CGFloat? = nil, customVerticalInset: CGFloat? = nil) { self.usesDefaultHeight = usesDefaultHeight self.height = customHeight ?? Values.textFieldHeight self.horizontalInset = customHorizontalInset ?? (isIPhone5OrSmaller ? Values.mediumSpacing : Values.largeSpacing) @@ -26,11 +27,11 @@ final class TextView : UITextView, UITextViewDelegate { setUpStyle() } - override init(frame: CGRect, textContainer: NSTextContainer?) { + public override init(frame: CGRect, textContainer: NSTextContainer?) { preconditionFailure("Use init(placeholder:) instead.") } - required init?(coder: NSCoder) { + public required init?(coder: NSCoder) { preconditionFailure("Use init(placeholder:) instead.") } @@ -50,7 +51,7 @@ final class TextView : UITextView, UITextViewDelegate { layer.borderWidth = Values.borderThickness layer.cornerRadius = Values.textFieldCornerRadius let horizontalInset = usesDefaultHeight ? self.horizontalInset : Values.mediumSpacing - textContainerInset = UIEdgeInsets(top: 0, leading: horizontalInset, bottom: 0, trailing: horizontalInset) + textContainerInset = UIEdgeInsets(top: 0, left: horizontalInset, bottom: 0, right: horizontalInset) addSubview(placeholderLabel) placeholderLabel.pin(.leading, to: .leading, of: self, withInset: horizontalInset + 3) // Slight visual adjustment placeholderLabel.pin(.top, to: .top, of: self) @@ -58,7 +59,7 @@ final class TextView : UITextView, UITextViewDelegate { pin(.bottom, to: .bottom, of: placeholderLabel) } - func textViewDidChange(_ textView: UITextView) { + public func textViewDidChange(_ textView: UITextView) { placeholderLabel.isHidden = !text.isEmpty } diff --git a/SessionUIKit/Meta/Info.plist b/SessionUIKit/Meta/Info.plist new file mode 100644 index 000000000..9bcb24442 --- /dev/null +++ b/SessionUIKit/Meta/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + + diff --git a/SessionUIKit/Meta/SessionUIKit.h b/SessionUIKit/Meta/SessionUIKit.h new file mode 100644 index 000000000..a605fee5a --- /dev/null +++ b/SessionUIKit/Meta/SessionUIKit.h @@ -0,0 +1,4 @@ +#import + +FOUNDATION_EXPORT double SessionUIKitVersionNumber; +FOUNDATION_EXPORT const unsigned char SessionUIKitVersionString[]; diff --git a/SignalMessaging/Loki/Redesign/Style Guide/AppMode.swift b/SessionUIKit/Style Guide/AppMode.swift similarity index 98% rename from SignalMessaging/Loki/Redesign/Style Guide/AppMode.swift rename to SessionUIKit/Style Guide/AppMode.swift index 640a2129d..2da777c2d 100644 --- a/SignalMessaging/Loki/Redesign/Style Guide/AppMode.swift +++ b/SessionUIKit/Style Guide/AppMode.swift @@ -1,3 +1,4 @@ +import Foundation @objc(LKAppModeManager) public final class AppModeManager : NSObject { diff --git a/SignalMessaging/Loki/Redesign/Style Guide/Colors.swift b/SessionUIKit/Style Guide/Colors.swift similarity index 99% rename from SignalMessaging/Loki/Redesign/Style Guide/Colors.swift rename to SessionUIKit/Style Guide/Colors.swift index 36cbfbb5f..c7876635a 100644 --- a/SignalMessaging/Loki/Redesign/Style Guide/Colors.swift +++ b/SessionUIKit/Style Guide/Colors.swift @@ -1,3 +1,4 @@ +import UIKit @objc public extension UIColor { diff --git a/SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/Contents.json b/SessionUIKit/Style Guide/Colors.xcassets/Contents.json similarity index 100% rename from SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/Contents.json rename to SessionUIKit/Style Guide/Colors.xcassets/Contents.json diff --git a/SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_accent.colorset/Contents.json b/SessionUIKit/Style Guide/Colors.xcassets/session_accent.colorset/Contents.json similarity index 100% rename from SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_accent.colorset/Contents.json rename to SessionUIKit/Style Guide/Colors.xcassets/session_accent.colorset/Contents.json diff --git a/SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_border.colorset/Contents.json b/SessionUIKit/Style Guide/Colors.xcassets/session_border.colorset/Contents.json similarity index 100% rename from SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_border.colorset/Contents.json rename to SessionUIKit/Style Guide/Colors.xcassets/session_border.colorset/Contents.json diff --git a/SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_button_background.colorset/Contents.json b/SessionUIKit/Style Guide/Colors.xcassets/session_button_background.colorset/Contents.json similarity index 100% rename from SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_button_background.colorset/Contents.json rename to SessionUIKit/Style Guide/Colors.xcassets/session_button_background.colorset/Contents.json diff --git a/SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_cell_background.colorset/Contents.json b/SessionUIKit/Style Guide/Colors.xcassets/session_cell_background.colorset/Contents.json similarity index 100% rename from SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_cell_background.colorset/Contents.json rename to SessionUIKit/Style Guide/Colors.xcassets/session_cell_background.colorset/Contents.json diff --git a/SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_cell_selected.colorset/Contents.json b/SessionUIKit/Style Guide/Colors.xcassets/session_cell_selected.colorset/Contents.json similarity index 100% rename from SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_cell_selected.colorset/Contents.json rename to SessionUIKit/Style Guide/Colors.xcassets/session_cell_selected.colorset/Contents.json diff --git a/SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_compose_view_background.colorset/Contents.json b/SessionUIKit/Style Guide/Colors.xcassets/session_compose_view_background.colorset/Contents.json similarity index 100% rename from SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_compose_view_background.colorset/Contents.json rename to SessionUIKit/Style Guide/Colors.xcassets/session_compose_view_background.colorset/Contents.json diff --git a/SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_compose_view_text_field_background.colorset/Contents.json b/SessionUIKit/Style Guide/Colors.xcassets/session_compose_view_text_field_background.colorset/Contents.json similarity index 100% rename from SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_compose_view_text_field_background.colorset/Contents.json rename to SessionUIKit/Style Guide/Colors.xcassets/session_compose_view_text_field_background.colorset/Contents.json diff --git a/SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_destructive.colorset/Contents.json b/SessionUIKit/Style Guide/Colors.xcassets/session_destructive.colorset/Contents.json similarity index 100% rename from SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_destructive.colorset/Contents.json rename to SessionUIKit/Style Guide/Colors.xcassets/session_destructive.colorset/Contents.json diff --git a/SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_fake_chat_bubble_background.colorset/Contents.json b/SessionUIKit/Style Guide/Colors.xcassets/session_fake_chat_bubble_background.colorset/Contents.json similarity index 100% rename from SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_fake_chat_bubble_background.colorset/Contents.json rename to SessionUIKit/Style Guide/Colors.xcassets/session_fake_chat_bubble_background.colorset/Contents.json diff --git a/SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_fake_chat_bubble_text.colorset/Contents.json b/SessionUIKit/Style Guide/Colors.xcassets/session_fake_chat_bubble_text.colorset/Contents.json similarity index 100% rename from SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_fake_chat_bubble_text.colorset/Contents.json rename to SessionUIKit/Style Guide/Colors.xcassets/session_fake_chat_bubble_text.colorset/Contents.json diff --git a/SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_modal_background.colorset/Contents.json b/SessionUIKit/Style Guide/Colors.xcassets/session_modal_background.colorset/Contents.json similarity index 100% rename from SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_modal_background.colorset/Contents.json rename to SessionUIKit/Style Guide/Colors.xcassets/session_modal_background.colorset/Contents.json diff --git a/SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_modal_border.colorset/Contents.json b/SessionUIKit/Style Guide/Colors.xcassets/session_modal_border.colorset/Contents.json similarity index 100% rename from SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_modal_border.colorset/Contents.json rename to SessionUIKit/Style Guide/Colors.xcassets/session_modal_border.colorset/Contents.json diff --git a/SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_navigation_bar_background.colorset/Contents.json b/SessionUIKit/Style Guide/Colors.xcassets/session_navigation_bar_background.colorset/Contents.json similarity index 100% rename from SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_navigation_bar_background.colorset/Contents.json rename to SessionUIKit/Style Guide/Colors.xcassets/session_navigation_bar_background.colorset/Contents.json diff --git a/SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_new_conversation_button_collapsed_background.colorset/Contents.json b/SessionUIKit/Style Guide/Colors.xcassets/session_new_conversation_button_collapsed_background.colorset/Contents.json similarity index 100% rename from SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_new_conversation_button_collapsed_background.colorset/Contents.json rename to SessionUIKit/Style Guide/Colors.xcassets/session_new_conversation_button_collapsed_background.colorset/Contents.json diff --git a/SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_new_conversation_button_shadow.colorset/Contents.json b/SessionUIKit/Style Guide/Colors.xcassets/session_new_conversation_button_shadow.colorset/Contents.json similarity index 100% rename from SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_new_conversation_button_shadow.colorset/Contents.json rename to SessionUIKit/Style Guide/Colors.xcassets/session_new_conversation_button_shadow.colorset/Contents.json diff --git a/SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_paths_building.colorset/Contents.json b/SessionUIKit/Style Guide/Colors.xcassets/session_paths_building.colorset/Contents.json similarity index 100% rename from SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_paths_building.colorset/Contents.json rename to SessionUIKit/Style Guide/Colors.xcassets/session_paths_building.colorset/Contents.json diff --git a/SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_pn_option_background.colorset/Contents.json b/SessionUIKit/Style Guide/Colors.xcassets/session_pn_option_background.colorset/Contents.json similarity index 100% rename from SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_pn_option_background.colorset/Contents.json rename to SessionUIKit/Style Guide/Colors.xcassets/session_pn_option_background.colorset/Contents.json diff --git a/SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_pn_option_border.colorset/Contents.json b/SessionUIKit/Style Guide/Colors.xcassets/session_pn_option_border.colorset/Contents.json similarity index 100% rename from SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_pn_option_border.colorset/Contents.json rename to SessionUIKit/Style Guide/Colors.xcassets/session_pn_option_border.colorset/Contents.json diff --git a/SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_received_message_background.colorset/Contents.json b/SessionUIKit/Style Guide/Colors.xcassets/session_received_message_background.colorset/Contents.json similarity index 100% rename from SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_received_message_background.colorset/Contents.json rename to SessionUIKit/Style Guide/Colors.xcassets/session_received_message_background.colorset/Contents.json diff --git a/SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_search_bar_background.colorset/Contents.json b/SessionUIKit/Style Guide/Colors.xcassets/session_search_bar_background.colorset/Contents.json similarity index 100% rename from SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_search_bar_background.colorset/Contents.json rename to SessionUIKit/Style Guide/Colors.xcassets/session_search_bar_background.colorset/Contents.json diff --git a/SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_search_bar_placeholder.colorset/Contents.json b/SessionUIKit/Style Guide/Colors.xcassets/session_search_bar_placeholder.colorset/Contents.json similarity index 100% rename from SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_search_bar_placeholder.colorset/Contents.json rename to SessionUIKit/Style Guide/Colors.xcassets/session_search_bar_placeholder.colorset/Contents.json diff --git a/SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_sent_message_background.colorset/Contents.json b/SessionUIKit/Style Guide/Colors.xcassets/session_sent_message_background.colorset/Contents.json similarity index 100% rename from SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_sent_message_background.colorset/Contents.json rename to SessionUIKit/Style Guide/Colors.xcassets/session_sent_message_background.colorset/Contents.json diff --git a/SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_separator.colorset/Contents.json b/SessionUIKit/Style Guide/Colors.xcassets/session_separator.colorset/Contents.json similarity index 100% rename from SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_separator.colorset/Contents.json rename to SessionUIKit/Style Guide/Colors.xcassets/session_separator.colorset/Contents.json diff --git a/SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_setting_button_selected.colorset/Contents.json b/SessionUIKit/Style Guide/Colors.xcassets/session_setting_button_selected.colorset/Contents.json similarity index 100% rename from SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_setting_button_selected.colorset/Contents.json rename to SessionUIKit/Style Guide/Colors.xcassets/session_setting_button_selected.colorset/Contents.json diff --git a/SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_text.colorset/Contents.json b/SessionUIKit/Style Guide/Colors.xcassets/session_text.colorset/Contents.json similarity index 100% rename from SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_text.colorset/Contents.json rename to SessionUIKit/Style Guide/Colors.xcassets/session_text.colorset/Contents.json diff --git a/SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_unimportant.colorset/Contents.json b/SessionUIKit/Style Guide/Colors.xcassets/session_unimportant.colorset/Contents.json similarity index 100% rename from SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_unimportant.colorset/Contents.json rename to SessionUIKit/Style Guide/Colors.xcassets/session_unimportant.colorset/Contents.json diff --git a/SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_unimportant_button_background.colorset/Contents.json b/SessionUIKit/Style Guide/Colors.xcassets/session_unimportant_button_background.colorset/Contents.json similarity index 100% rename from SignalMessaging/Loki/Redesign/Style Guide/Colors.xcassets/session_unimportant_button_background.colorset/Contents.json rename to SessionUIKit/Style Guide/Colors.xcassets/session_unimportant_button_background.colorset/Contents.json diff --git a/SignalMessaging/Loki/Redesign/Style Guide/Fonts.swift b/SessionUIKit/Style Guide/Fonts.swift similarity index 96% rename from SignalMessaging/Loki/Redesign/Style Guide/Fonts.swift rename to SessionUIKit/Style Guide/Fonts.swift index 34e66a477..d6369b1ae 100644 --- a/SignalMessaging/Loki/Redesign/Style Guide/Fonts.swift +++ b/SessionUIKit/Style Guide/Fonts.swift @@ -1,3 +1,4 @@ +import UIKit @objc(LKFonts) public final class Fonts : NSObject { diff --git a/SignalMessaging/Loki/Redesign/Style Guide/Gradients.swift b/SessionUIKit/Style Guide/Gradients.swift similarity index 99% rename from SignalMessaging/Loki/Redesign/Style Guide/Gradients.swift rename to SessionUIKit/Style Guide/Gradients.swift index 1af4d69d3..65730c225 100644 --- a/SignalMessaging/Loki/Redesign/Style Guide/Gradients.swift +++ b/SessionUIKit/Style Guide/Gradients.swift @@ -1,3 +1,4 @@ +import UIKit @objc(LKGradient) public final class Gradient : NSObject { diff --git a/SessionUIKit/Style Guide/Notification+AppMode.swift b/SessionUIKit/Style Guide/Notification+AppMode.swift new file mode 100644 index 000000000..d23762736 --- /dev/null +++ b/SessionUIKit/Style Guide/Notification+AppMode.swift @@ -0,0 +1,10 @@ + +public extension Notification.Name { + + static let appModeChanged = Notification.Name("appModeChanged") +} + +@objc public extension NSNotification { + + @objc public static let appModeChanged = Notification.Name.appModeChanged.rawValue as NSString +} diff --git a/SignalMessaging/Loki/Redesign/Style Guide/Values.swift b/SessionUIKit/Style Guide/Values.swift similarity index 99% rename from SignalMessaging/Loki/Redesign/Style Guide/Values.swift rename to SessionUIKit/Style Guide/Values.swift index 008b10c8f..59cf80756 100644 --- a/SignalMessaging/Loki/Redesign/Style Guide/Values.swift +++ b/SessionUIKit/Style Guide/Values.swift @@ -1,3 +1,4 @@ +import UIKit @objc(LKValues) public final class Values : NSObject { diff --git a/SignalMessaging/Loki/Redesign/Utilities/DeviceUtilities.swift b/SessionUIKit/Utilities/DeviceUtilities.swift similarity index 93% rename from SignalMessaging/Loki/Redesign/Utilities/DeviceUtilities.swift rename to SessionUIKit/Utilities/DeviceUtilities.swift index ee4c13f95..16659ff30 100644 --- a/SignalMessaging/Loki/Redesign/Utilities/DeviceUtilities.swift +++ b/SessionUIKit/Utilities/DeviceUtilities.swift @@ -1,3 +1,4 @@ +import UIKit public var isIPhone5OrSmaller: Bool { return (UIScreen.main.bounds.height - 568) < 1 diff --git a/SessionUIKit/Utilities/UIImage+Tinting.swift b/SessionUIKit/Utilities/UIImage+Tinting.swift new file mode 100644 index 000000000..ddabf8b4b --- /dev/null +++ b/SessionUIKit/Utilities/UIImage+Tinting.swift @@ -0,0 +1,11 @@ +import UIKit + +public extension UIImage { + + func withTint(_ color: UIColor) -> UIImage? { + let template = self.withRenderingMode(.alwaysTemplate) + let imageView = UIImageView(image: template) + imageView.tintColor = color + return imageView.toImage(isOpaque: imageView.isOpaque, scale: UIScreen.main.scale) + } +} diff --git a/SignalMessaging/Loki/Redesign/Utilities/UIView+Constraints.swift b/SessionUIKit/Utilities/UIView+Constraints.swift similarity index 99% rename from SignalMessaging/Loki/Redesign/Utilities/UIView+Constraints.swift rename to SessionUIKit/Utilities/UIView+Constraints.swift index 2a9873a6f..0dcad6829 100644 --- a/SignalMessaging/Loki/Redesign/Utilities/UIView+Constraints.swift +++ b/SessionUIKit/Utilities/UIView+Constraints.swift @@ -1,3 +1,4 @@ +import UIKit public protocol ConstraintUtilitiesEdge { } diff --git a/SessionUIKit/Utilities/UIView+Rendering.swift b/SessionUIKit/Utilities/UIView+Rendering.swift new file mode 100644 index 000000000..9fc1b9379 --- /dev/null +++ b/SessionUIKit/Utilities/UIView+Rendering.swift @@ -0,0 +1,14 @@ +import UIKit + +public extension UIView { + + func toImage(isOpaque: Bool, scale: CGFloat) -> UIImage? { + let format = UIGraphicsImageRendererFormat() + format.scale = scale + format.opaque = isOpaque + let renderer = UIGraphicsImageRenderer(bounds: self.bounds, format: format) + return renderer.image { context in + self.layer.render(in: context.cgContext) + } + } +} diff --git a/Signal.xcodeproj/project.pbxproj b/Signal.xcodeproj/project.pbxproj index 85b1da08f..db116d39c 100644 --- a/Signal.xcodeproj/project.pbxproj +++ b/Signal.xcodeproj/project.pbxproj @@ -523,7 +523,6 @@ B82B408E239DC00D00A248E7 /* DisplayNameVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B82B408D239DC00D00A248E7 /* DisplayNameVC.swift */; }; B82B4090239DD75000A248E7 /* RestoreVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B82B408F239DD75000A248E7 /* RestoreVC.swift */; }; B82B4094239DF15900A248E7 /* ConversationTitleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B82B4093239DF15900A248E7 /* ConversationTitleView.swift */; }; - B83F2B86240C7B8F000A54AB /* NewConversationButtonSet.swift in Sources */ = {isa = PBXBuildFile; fileRef = B83F2B85240C7B8F000A54AB /* NewConversationButtonSet.swift */; }; B83F2B88240CB75A000A54AB /* UIImage+Scaling.swift in Sources */ = {isa = PBXBuildFile; fileRef = B83F2B87240CB75A000A54AB /* UIImage+Scaling.swift */; }; B846365B22B7418B00AF1514 /* Identicon+ObjC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B846365A22B7418B00AF1514 /* Identicon+ObjC.swift */; }; B84664F5235022F30083A1CD /* MentionUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = B84664F4235022F30083A1CD /* MentionUtilities.swift */; }; @@ -533,12 +532,10 @@ B85357C723A1FB5100AAF6CD /* LinkDeviceVCDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B85357C623A1FB5100AAF6CD /* LinkDeviceVCDelegate.swift */; }; B8544E3323D50E4900299F14 /* AppearanceUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8544E3223D50E4900299F14 /* AppearanceUtilities.swift */; }; B8544E3423D51EEF00299F14 /* ProfilePictureView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8BB82AC238F734800BA5194 /* ProfilePictureView.swift */; }; - B8544E3523D5201400299F14 /* UIView+Constraints.swift in Sources */ = {isa = PBXBuildFile; fileRef = B885D5F52334A32100EE0D8E /* UIView+Constraints.swift */; }; B86BD08423399ACF000F5AE3 /* Modal.swift in Sources */ = {isa = PBXBuildFile; fileRef = B86BD08323399ACF000F5AE3 /* Modal.swift */; }; B86BD08623399CEF000F5AE3 /* SeedModal.swift in Sources */ = {isa = PBXBuildFile; fileRef = B86BD08523399CEF000F5AE3 /* SeedModal.swift */; }; B8783E9E23EB948D00404FB8 /* UILabel+Interaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8783E9D23EB948D00404FB8 /* UILabel+Interaction.swift */; }; B879D449247E1BE300DB3608 /* PathVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B879D448247E1BE300DB3608 /* PathVC.swift */; }; - B879D44B247E1D9200DB3608 /* PathStatusView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B879D44A247E1D9200DB3608 /* PathStatusView.swift */; }; B885D5F4233491AB00EE0D8E /* DeviceLinkingModal.swift in Sources */ = {isa = PBXBuildFile; fileRef = B885D5F3233491AB00EE0D8E /* DeviceLinkingModal.swift */; }; B886B4A72398B23E00211ABE /* QRCodeVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B886B4A62398B23E00211ABE /* QRCodeVC.swift */; }; B886B4A92398BA1500211ABE /* QRCode.swift in Sources */ = {isa = PBXBuildFile; fileRef = B886B4A82398BA1500211ABE /* QRCode.swift */; }; @@ -547,21 +544,9 @@ B894D0712339D6F300B4D94D /* DeviceLinkingModalDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B894D0702339D6F300B4D94D /* DeviceLinkingModalDelegate.swift */; }; B894D0752339EDCF00B4D94D /* NukeDataModal.swift in Sources */ = {isa = PBXBuildFile; fileRef = B894D0742339EDCF00B4D94D /* NukeDataModal.swift */; }; B8B26C8F234D629C004ED98C /* MentionCandidateSelectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8B26C8E234D629C004ED98C /* MentionCandidateSelectionView.swift */; }; - B8B5BCEC2394D869003823C9 /* Button.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8B5BCEB2394D869003823C9 /* Button.swift */; }; B8BB82A5238F627000BA5194 /* HomeVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8BB82A4238F627000BA5194 /* HomeVC.swift */; }; - B8BB82AB238F669C00BA5194 /* ConversationCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8BB82AA238F669C00BA5194 /* ConversationCell.swift */; }; - B8BB82B12390C37000BA5194 /* SearchBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8BB82B02390C37000BA5194 /* SearchBar.swift */; }; - B8BB82B523947F2D00BA5194 /* TextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8BB82B423947F2D00BA5194 /* TextField.swift */; }; - B8BB82B92394911B00BA5194 /* Separator.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8BB82B82394911B00BA5194 /* Separator.swift */; }; - B8C9689523FA1B72005F64E0 /* AppMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8C9689023FA1401005F64E0 /* AppMode.swift */; }; - B8C9689623FA1B72005F64E0 /* Colors.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8BB829F238F322400BA5194 /* Colors.swift */; }; - B8C9689723FA1B72005F64E0 /* Fonts.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8BB82BD2394D4CE00BA5194 /* Fonts.swift */; }; - B8C9689823FA1B72005F64E0 /* Gradients.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8BB82A8238F62FB00BA5194 /* Gradients.swift */; }; - B8C9689923FA1B72005F64E0 /* Values.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8BB82A1238F356100BA5194 /* Values.swift */; }; - B8C9689A23FA1B95005F64E0 /* DeviceUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8544E3023D16CA500299F14 /* DeviceUtilities.swift */; }; B8CCF6352396005F0091D419 /* SpaceMono-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = B8CCF6342396005F0091D419 /* SpaceMono-Regular.ttf */; }; B8CCF63723961D6D0091D419 /* NewPrivateChatVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8CCF63623961D6D0091D419 /* NewPrivateChatVC.swift */; }; - B8CCF639239721E20091D419 /* TabBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8CCF638239721E20091D419 /* TabBar.swift */; }; B8CCF63F23975CFB0091D419 /* JoinPublicChatVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8CCF63E23975CFB0091D419 /* JoinPublicChatVC.swift */; }; B8CCF6432397711F0091D419 /* SettingsVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8CCF6422397711F0091D419 /* SettingsVC.swift */; }; B90418E6183E9DD40038554A /* DateUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = B90418E5183E9DD40038554A /* DateUtil.m */; }; @@ -581,13 +566,39 @@ C31A6C5A247F214E001123EF /* UIView+Glow.swift in Sources */ = {isa = PBXBuildFile; fileRef = C31A6C59247F214E001123EF /* UIView+Glow.swift */; }; C31A6C5C247F2CF3001123EF /* CGRect+Utilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = C31A6C5B247F2CF3001123EF /* CGRect+Utilities.swift */; }; C31D1DD325216101005D4DA8 /* UIView+Utilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = C31D1DD225216101005D4DA8 /* UIView+Utilities.swift */; }; - C31D1DDD25217014005D4DA8 /* UserCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C31D1DDC25217014005D4DA8 /* UserCell.swift */; }; C31D1DE32521718E005D4DA8 /* UserSelectionVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = C31D1DE22521718E005D4DA8 /* UserSelectionVC.swift */; }; C31D1DE9252172D4005D4DA8 /* ContactUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = C31D1DE8252172D4005D4DA8 /* ContactUtilities.swift */; }; C31F812625258FB000DD9FD9 /* Storage+VolumeSamples.swift in Sources */ = {isa = PBXBuildFile; fileRef = C31F812525258FB000DD9FD9 /* Storage+VolumeSamples.swift */; }; C31FFE57254A5FFE00F19441 /* KeyPairUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = C31FFE56254A5FFE00F19441 /* KeyPairUtilities.swift */; }; C329FEEC24F7277900B1C64C /* LightModeSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = C329FEEB24F7277900B1C64C /* LightModeSheet.swift */; }; C329FEEF24F7743F00B1C64C /* UIViewController+Utilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = C329FEED24F7742E00B1C64C /* UIViewController+Utilities.swift */; }; + C33100082558FF6D00070591 /* NewConversationButtonSet.swift in Sources */ = {isa = PBXBuildFile; fileRef = B83F2B85240C7B8F000A54AB /* NewConversationButtonSet.swift */; }; + C33100092558FF6D00070591 /* UserCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C31D1DDC25217014005D4DA8 /* UserCell.swift */; }; + C33100142558FFC200070591 /* UIImage+Tinting.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33100132558FFC200070591 /* UIImage+Tinting.swift */; }; + C33100282559000A00070591 /* UIView+Rendering.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33100272559000A00070591 /* UIView+Rendering.swift */; }; + C3310033255900A400070591 /* Notification+AppMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3310032255900A400070591 /* Notification+AppMode.swift */; }; + C331003D255900F200070591 /* SessionUIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C331FF1B2558F9D300070591 /* SessionUIKit.framework */; }; + C331FF1F2558F9D300070591 /* SessionUIKit.h in Headers */ = {isa = PBXBuildFile; fileRef = C331FF1D2558F9D300070591 /* SessionUIKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C331FF222558F9D300070591 /* SessionUIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C331FF1B2558F9D300070591 /* SessionUIKit.framework */; }; + C331FF232558F9D300070591 /* SessionUIKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = C331FF1B2558F9D300070591 /* SessionUIKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + C331FF962558FA6B00070591 /* Colors.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8BB829F238F322400BA5194 /* Colors.swift */; }; + C331FF972558FA6B00070591 /* Fonts.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8BB82BD2394D4CE00BA5194 /* Fonts.swift */; }; + C331FF982558FA6B00070591 /* AppMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8C9689023FA1401005F64E0 /* AppMode.swift */; }; + C331FF992558FA6B00070591 /* Colors.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C39DD28724F3318C008590FC /* Colors.xcassets */; }; + C331FF9A2558FA6B00070591 /* Values.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8BB82A1238F356100BA5194 /* Values.swift */; }; + C331FF9B2558FA6B00070591 /* Gradients.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8BB82A8238F62FB00BA5194 /* Gradients.swift */; }; + C331FFB82558FA8D00070591 /* DeviceUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8544E3023D16CA500299F14 /* DeviceUtilities.swift */; }; + C331FFB92558FA8D00070591 /* UIView+Constraints.swift in Sources */ = {isa = PBXBuildFile; fileRef = B885D5F52334A32100EE0D8E /* UIView+Constraints.swift */; }; + C331FFE02558FB0000070591 /* SearchBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8BB82B02390C37000BA5194 /* SearchBar.swift */; }; + C331FFE32558FB0000070591 /* TabBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8CCF638239721E20091D419 /* TabBar.swift */; }; + C331FFE42558FB0000070591 /* Button.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8B5BCEB2394D869003823C9 /* Button.swift */; }; + C331FFE72558FB0000070591 /* TextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8BB82B423947F2D00BA5194 /* TextField.swift */; }; + C331FFE82558FB0000070591 /* TextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3C3CF8824D8EED300E1CCE7 /* TextView.swift */; }; + C331FFE92558FB0000070591 /* Separator.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8BB82B82394911B00BA5194 /* Separator.swift */; }; + C331FFF32558FF0300070591 /* PathStatusView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B879D44A247E1D9200DB3608 /* PathStatusView.swift */; }; + C331FFF42558FF0300070591 /* PNOptionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C353F8F8244809150011121A /* PNOptionView.swift */; }; + C331FFFE2558FF3B00070591 /* ConversationCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8BB82AA238F669C00BA5194 /* ConversationCell.swift */; }; + C3402FE52559036600EA6424 /* SessionUIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C331FF1B2558F9D300070591 /* SessionUIKit.framework */; }; C3471ECB2555356A00297E91 /* MessageSender+Encryption.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3471ECA2555356A00297E91 /* MessageSender+Encryption.swift */; }; C3471ED42555386B00297E91 /* AESGCM.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3C2A5D72553860B00C340D1 /* AESGCM.swift */; }; C3471F4225553A4D00297E91 /* Threading.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3471F4125553A4D00297E91 /* Threading.swift */; }; @@ -609,7 +620,6 @@ C352A3932557883D00338F3E /* JobDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = C352A3922557883D00338F3E /* JobDelegate.swift */; }; C352A3A62557B60D00338F3E /* TSRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = C352A3A52557B60D00338F3E /* TSRequest.m */; }; C352A3B72557B6ED00338F3E /* TSRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = C352A3A42557B5F000338F3E /* TSRequest.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C353F8F9244809150011121A /* PNOptionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C353F8F8244809150011121A /* PNOptionView.swift */; }; C3548F0624456447009433A8 /* PNModeVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3548F0524456447009433A8 /* PNModeVC.swift */; }; C3548F0824456AB6009433A8 /* UIView+Wrapping.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3548F0724456AB6009433A8 /* UIView+Wrapping.swift */; }; C354E75A23FE2A7600CE22E3 /* BaseVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = C354E75923FE2A7600CE22E3 /* BaseVC.swift */; }; @@ -628,9 +638,6 @@ C396DAF32518408B00FF6DC5 /* Description.swift in Sources */ = {isa = PBXBuildFile; fileRef = C396DAEC2518408A00FF6DC5 /* Description.swift */; }; C396DAF42518408B00FF6DC5 /* Parser.swift in Sources */ = {isa = PBXBuildFile; fileRef = C396DAED2518408B00FF6DC5 /* Parser.swift */; }; C396DAF52518408B00FF6DC5 /* CSV.swift in Sources */ = {isa = PBXBuildFile; fileRef = C396DAEE2518408B00FF6DC5 /* CSV.swift */; }; - C39DD28824F3318C008590FC /* Colors.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C39DD28724F3318C008590FC /* Colors.xcassets */; }; - C39DD28A24F3336E008590FC /* Colors.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C39DD28724F3318C008590FC /* Colors.xcassets */; }; - C39DD28B24F3336F008590FC /* Colors.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C39DD28724F3318C008590FC /* Colors.xcassets */; }; C3A71D0B2558989C0043A11F /* MessageWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3A71D0A2558989C0043A11F /* MessageWrapper.swift */; }; C3A71D1E25589AC30043A11F /* WebSocketProto.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3A71D1C25589AC30043A11F /* WebSocketProto.swift */; }; C3A71D1F25589AC30043A11F /* WebSocketResources.pb.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3A71D1D25589AC30043A11F /* WebSocketResources.pb.swift */; }; @@ -807,7 +814,6 @@ C3C2AC0A2553C9A100C340D1 /* Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3C2AC092553C9A100C340D1 /* Configuration.swift */; }; C3C2AC2E2553CBEB00C340D1 /* String+Trimming.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3C2AC2D2553CBEB00C340D1 /* String+Trimming.swift */; }; C3C2AC372553CCE600C340D1 /* SessionUtilitiesKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3C2A679255388CC00C340D1 /* SessionUtilitiesKit.framework */; }; - C3C3CF8924D8EED300E1CCE7 /* TextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3C3CF8824D8EED300E1CCE7 /* TextView.swift */; }; C3D0972B2510499C00F6E3E4 /* BackgroundPoller.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3D0972A2510499C00F6E3E4 /* BackgroundPoller.swift */; }; C3DAB3242480CB2B00725F25 /* SRCopyableLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3DAB3232480CB2A00725F25 /* SRCopyableLabel.swift */; }; C3DFFAC623E96F0D0058DAF8 /* Sheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3DFFAC523E96F0D0058DAF8 /* Sheet.swift */; }; @@ -881,6 +887,13 @@ remoteGlobalIDString = D221A088169C9E5E00537ABF; remoteInfo = Signal; }; + C331FF202558F9D300070591 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D221A080169C9E5E00537ABF /* Project object */; + proxyType = 1; + remoteGlobalIDString = C331FF1A2558F9D300070591; + remoteInfo = SessionUIKit; + }; C36B8705243C50B00049991D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D221A080169C9E5E00537ABF /* Project object */; @@ -941,6 +954,7 @@ C3C2A681255388CC00C340D1 /* SessionUtilitiesKit.framework in Embed Frameworks */, C3C2A5A7255385C100C340D1 /* SessionSnodeKit.framework in Embed Frameworks */, 4535189A1FC63DBF00210559 /* SignalMessaging.framework in Embed Frameworks */, + C331FF232558F9D300070591 /* SessionUIKit.framework in Embed Frameworks */, C3C2A6F825539DE700C340D1 /* SessionMessagingKit.framework in Embed Frameworks */, ); name = "Embed Frameworks"; @@ -1637,6 +1651,12 @@ C31FFE56254A5FFE00F19441 /* KeyPairUtilities.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyPairUtilities.swift; sourceTree = ""; }; C329FEEB24F7277900B1C64C /* LightModeSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LightModeSheet.swift; sourceTree = ""; }; C329FEED24F7742E00B1C64C /* UIViewController+Utilities.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIViewController+Utilities.swift"; sourceTree = ""; }; + C33100132558FFC200070591 /* UIImage+Tinting.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIImage+Tinting.swift"; sourceTree = ""; }; + C33100272559000A00070591 /* UIView+Rendering.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIView+Rendering.swift"; sourceTree = ""; }; + C3310032255900A400070591 /* Notification+AppMode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Notification+AppMode.swift"; sourceTree = ""; }; + C331FF1B2558F9D300070591 /* SessionUIKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SessionUIKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + C331FF1D2558F9D300070591 /* SessionUIKit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SessionUIKit.h; sourceTree = ""; }; + C331FF1E2558F9D300070591 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; C3471ECA2555356A00297E91 /* MessageSender+Encryption.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MessageSender+Encryption.swift"; sourceTree = ""; }; C3471F4125553A4D00297E91 /* Threading.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Threading.swift; sourceTree = ""; }; C3471F4B25553AB000297E91 /* MessageReceiver+Decryption.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MessageReceiver+Decryption.swift"; sourceTree = ""; }; @@ -1900,6 +1920,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + C3402FE52559036600EA6424 /* SessionUIKit.framework in Frameworks */, 453518A21FC63E2900210559 /* SignalMessaging.framework in Frameworks */, 2AE2882E4C2B96BFFF9EE27C /* Pods_SignalShareExtension.framework in Frameworks */, ); @@ -1909,6 +1930,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + C331003D255900F200070591 /* SessionUIKit.framework in Frameworks */, 4AC4EA13C8A444455DAB351F /* Pods_SignalMessaging.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1922,6 +1944,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + C331FF182558F9D300070591 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; C3C2A59C255385C100C340D1 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -1988,6 +2017,7 @@ C3C2A680255388CC00C340D1 /* SessionUtilitiesKit.framework in Frameworks */, A1C32D5017A06538000A904E /* AddressBookUI.framework in Frameworks */, D2AEACDC16C426DA00C364C0 /* CFNetwork.framework in Frameworks */, + C331FF222558F9D300070591 /* SessionUIKit.framework in Frameworks */, D2179CFE16BB0B480006F3AB /* SystemConfiguration.framework in Frameworks */, C3C2A6F725539DE700C340D1 /* SessionMessagingKit.framework in Frameworks */, D2179CFC16BB0B3A0006F3AB /* CoreTelephony.framework in Frameworks */, @@ -3132,12 +3162,6 @@ B8BB82A3238F356800BA5194 /* Style Guide */ = { isa = PBXGroup; children = ( - B8C9689023FA1401005F64E0 /* AppMode.swift */, - B8BB829F238F322400BA5194 /* Colors.swift */, - C39DD28724F3318C008590FC /* Colors.xcassets */, - B8BB82BD2394D4CE00BA5194 /* Fonts.swift */, - B8BB82A8238F62FB00BA5194 /* Gradients.swift */, - B8BB82A1238F356100BA5194 /* Values.swift */, ); path = "Style Guide"; sourceTree = ""; @@ -3173,9 +3197,7 @@ B8C9689423FA1B3D005F64E0 /* Utilities */ = { isa = PBXGroup; children = ( - B8544E3023D16CA500299F14 /* DeviceUtilities.swift */, C329FEED24F7742E00B1C64C /* UIViewController+Utilities.swift */, - B885D5F52334A32100EE0D8E /* UIView+Constraints.swift */, C31D1DD225216101005D4DA8 /* UIView+Utilities.swift */, ); path = Utilities; @@ -3184,22 +3206,16 @@ B8CCF63B239757C10091D419 /* Components */ = { isa = PBXGroup; children = ( - B8B5BCEB2394D869003823C9 /* Button.swift */, B8BB82AA238F669C00BA5194 /* ConversationCell.swift */, + B83F2B85240C7B8F000A54AB /* NewConversationButtonSet.swift */, + C31D1DDC25217014005D4DA8 /* UserCell.swift */, B82B4093239DF15900A248E7 /* ConversationTitleView.swift */, B82B40892399EC0600A248E7 /* FakeChatView.swift */, B8B26C8E234D629C004ED98C /* MentionCandidateSelectionView.swift */, - B83F2B85240C7B8F000A54AB /* NewConversationButtonSet.swift */, B879D44A247E1D9200DB3608 /* PathStatusView.swift */, C353F8F8244809150011121A /* PNOptionView.swift */, - B8BB82B02390C37000BA5194 /* SearchBar.swift */, B85357BE23A1AE0800AAF6CD /* SeedReminderView.swift */, - B8BB82B82394911B00BA5194 /* Separator.swift */, 2400888D239F30A600305217 /* SessionRestorationView.swift */, - B8CCF638239721E20091D419 /* TabBar.swift */, - B8BB82B423947F2D00BA5194 /* TextField.swift */, - C3C3CF8824D8EED300E1CCE7 /* TextView.swift */, - C31D1DDC25217014005D4DA8 /* UserCell.swift */, C364534F252449260045C478 /* VoiceMessageView.swift */, ); path = Components; @@ -3330,6 +3346,64 @@ path = Dependencies; sourceTree = ""; }; + C331FF1C2558F9D300070591 /* SessionUIKit */ = { + isa = PBXGroup; + children = ( + C331FF422558F9E400070591 /* Meta */, + C331FFCC2558FAF300070591 /* Components */, + C331FF5E2558FA0F00070591 /* Style Guide */, + C331FFAE2558FA7700070591 /* Utilities */, + ); + path = SessionUIKit; + sourceTree = ""; + }; + C331FF422558F9E400070591 /* Meta */ = { + isa = PBXGroup; + children = ( + C331FF1D2558F9D300070591 /* SessionUIKit.h */, + C331FF1E2558F9D300070591 /* Info.plist */, + ); + path = Meta; + sourceTree = ""; + }; + C331FF5E2558FA0F00070591 /* Style Guide */ = { + isa = PBXGroup; + children = ( + B8C9689023FA1401005F64E0 /* AppMode.swift */, + C3310032255900A400070591 /* Notification+AppMode.swift */, + B8BB829F238F322400BA5194 /* Colors.swift */, + C39DD28724F3318C008590FC /* Colors.xcassets */, + B8BB82BD2394D4CE00BA5194 /* Fonts.swift */, + B8BB82A8238F62FB00BA5194 /* Gradients.swift */, + B8BB82A1238F356100BA5194 /* Values.swift */, + ); + path = "Style Guide"; + sourceTree = ""; + }; + C331FFAE2558FA7700070591 /* Utilities */ = { + isa = PBXGroup; + children = ( + B8544E3023D16CA500299F14 /* DeviceUtilities.swift */, + C33100132558FFC200070591 /* UIImage+Tinting.swift */, + B885D5F52334A32100EE0D8E /* UIView+Constraints.swift */, + C33100272559000A00070591 /* UIView+Rendering.swift */, + ); + path = Utilities; + sourceTree = ""; + }; + C331FFCC2558FAF300070591 /* Components */ = { + isa = PBXGroup; + children = ( + B8B5BCEB2394D869003823C9 /* Button.swift */, + B8BB82B02390C37000BA5194 /* SearchBar.swift */, + B8BB82B82394911B00BA5194 /* Separator.swift */, + B8CCF638239721E20091D419 /* TabBar.swift */, + B8BB82B423947F2D00BA5194 /* TextField.swift */, + C3C3CF8824D8EED300E1CCE7 /* TextView.swift */, + ); + path = Components; + sourceTree = ""; + }; C352A2F325574B3300338F3E /* Jobs */ = { isa = PBXGroup; children = ( @@ -3755,6 +3829,7 @@ 453518691FC635DD00210559 /* SignalShareExtension */, 453518931FC63DBF00210559 /* SignalMessaging */, 7BC01A3C241F40AB00BC7C55 /* LokiPushNotificationService */, + C331FF1C2558F9D300070591 /* SessionUIKit */, C3C2A6F125539DE700C340D1 /* SessionMessagingKit */, C3C2A8632553B41A00C340D1 /* SessionProtocolKit */, C3C2A5A0255385C100C340D1 /* SessionSnodeKit */, @@ -3777,6 +3852,7 @@ C3C2A679255388CC00C340D1 /* SessionUtilitiesKit.framework */, C3C2A6F025539DE700C340D1 /* SessionMessagingKit.framework */, C3C2A8622553B41A00C340D1 /* SessionProtocolKit.framework */, + C331FF1B2558F9D300070591 /* SessionUIKit.framework */, ); name = Products; sourceTree = ""; @@ -3945,6 +4021,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + C331FF162558F9D300070591 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + C331FF1F2558F9D300070591 /* SessionUIKit.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; C3C2A59A255385C100C340D1 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -4088,6 +4172,24 @@ productReference = 7BC01A3B241F40AB00BC7C55 /* LokiPushNotificationService.appex */; productType = "com.apple.product-type.app-extension"; }; + C331FF1A2558F9D300070591 /* SessionUIKit */ = { + isa = PBXNativeTarget; + buildConfigurationList = C331FF262558F9D400070591 /* Build configuration list for PBXNativeTarget "SessionUIKit" */; + buildPhases = ( + C331FF162558F9D300070591 /* Headers */, + C331FF172558F9D300070591 /* Sources */, + C331FF182558F9D300070591 /* Frameworks */, + C331FF192558F9D300070591 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = SessionUIKit; + productName = SessionUIKit; + productReference = C331FF1B2558F9D300070591 /* SessionUIKit.framework */; + productType = "com.apple.product-type.framework"; + }; C3C2A59E255385C100C340D1 /* SessionSnodeKit */ = { isa = PBXNativeTarget; buildConfigurationList = C3C2A5AA255385C100C340D1 /* Build configuration list for PBXNativeTarget "SessionSnodeKit" */; @@ -4188,6 +4290,7 @@ C3C2A67F255388CC00C340D1 /* PBXTargetDependency */, C3C2A6F625539DE700C340D1 /* PBXTargetDependency */, C3C2A8682553B41A00C340D1 /* PBXTargetDependency */, + C331FF212558F9D300070591 /* PBXTargetDependency */, ); name = Signal; productName = RedPhone; @@ -4259,6 +4362,11 @@ DevelopmentTeam = SUQ8J2PCT7; ProvisioningStyle = Automatic; }; + C331FF1A2558F9D300070591 = { + CreatedOnToolsVersion = 12.1; + DevelopmentTeam = SUQ8J2PCT7; + ProvisioningStyle = Automatic; + }; C3C2A59E255385C100C340D1 = { CreatedOnToolsVersion = 12.1; DevelopmentTeam = SUQ8J2PCT7; @@ -4352,6 +4460,7 @@ 453518671FC635DD00210559 /* SignalShareExtension */, 453518911FC63DBF00210559 /* SignalMessaging */, 7BC01A3A241F40AB00BC7C55 /* LokiPushNotificationService */, + C331FF1A2558F9D300070591 /* SessionUIKit */, C3C2A6EF25539DE700C340D1 /* SessionMessagingKit */, C3C2A8612553B41A00C340D1 /* SessionProtocolKit */, C3C2A59E255385C100C340D1 /* SessionSnodeKit */, @@ -4371,7 +4480,6 @@ 347850331FD7494A007B8332 /* fontawesome-webfont.ttf in Resources */, 3478504C1FD7496D007B8332 /* Images.xcassets in Resources */, 347850311FD7494A007B8332 /* dripicons-v2.ttf in Resources */, - C39DD28B24F3336F008590FC /* Colors.xcassets in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4379,7 +4487,6 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - C39DD28824F3318C008590FC /* Colors.xcassets in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4391,6 +4498,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + C331FF192558F9D300070591 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + C331FF992558FA6B00070591 /* Colors.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; C3C2A59D255385C100C340D1 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -4468,7 +4583,6 @@ 45B74A852044AAB600CD42F8 /* bamboo.aifc in Resources */, 45B74A782044AAB600CD42F8 /* bamboo-quiet.aifc in Resources */, 45B74A7B2044AAB600CD42F8 /* chord.aifc in Resources */, - C39DD28A24F3336E008590FC /* Colors.xcassets in Resources */, 45B74A812044AAB600CD42F8 /* chord-quiet.aifc in Resources */, 45B74A832044AAB600CD42F8 /* circles.aifc in Resources */, 45B74A892044AAB600CD42F8 /* circles-quiet.aifc in Resources */, @@ -4897,7 +5011,6 @@ 34AC09E1211B39B100997B47 /* SelectThreadViewController.m in Sources */, 34AC09EF211B39B100997B47 /* ViewControllerUtils.m in Sources */, 346941A2215D2EE400B5BFAD /* OWSConversationColor.m in Sources */, - B8C9689723FA1B72005F64E0 /* Fonts.swift in Sources */, 34AC0A17211B39EA00997B47 /* VideoPlayerView.swift in Sources */, 34BEDB1321C43F6A007B0EAE /* ImageEditorView.swift in Sources */, 34AC09EE211B39B100997B47 /* EditContactShareNameViewController.swift in Sources */, @@ -4913,14 +5026,12 @@ 346129B51FD1F7E800532771 /* OWSProfileManager.m in Sources */, 342950832124C9750000B063 /* OWSTextView.m in Sources */, 452EC6E1205FF5DC000E787C /* Bench.swift in Sources */, - B8C9689923FA1B72005F64E0 /* Values.swift in Sources */, 34BBC85D220D19D600857249 /* ImageEditorPanGestureRecognizer.swift in Sources */, 342950882124CB0A0000B063 /* OWSSearchBar.m in Sources */, 342950822124C9750000B063 /* OWSTextField.m in Sources */, 34AC0A13211B39EA00997B47 /* DisappearingTimerConfigurationView.swift in Sources */, 4CA46F4D219CFDAA0038ABDE /* GalleryRailView.swift in Sources */, 34480B621FD0A98800BC14EF /* UIColor+OWS.m in Sources */, - B8C9689823FA1B72005F64E0 /* Gradients.swift in Sources */, 4C20B2B720CA0034001BAC90 /* ThreadViewModel.swift in Sources */, 34BBC857220C7ADA00857249 /* ImageEditorItem.swift in Sources */, 346E35BE224283B100E55D5F /* UIAlertController+OWS.swift in Sources */, @@ -4944,9 +5055,7 @@ 451F8A461FD715BA005CB9DA /* OWSGroupAvatarBuilder.m in Sources */, 34BBC85B220C7ADA00857249 /* OrderedDictionary.swift in Sources */, 346129961FD1E30000532771 /* OWSDatabaseMigration.m in Sources */, - B8544E3523D5201400299F14 /* UIView+Constraints.swift in Sources */, 34AC09EA211B39B100997B47 /* ModalActivityIndicatorViewController.swift in Sources */, - B8C9689523FA1B72005F64E0 /* AppMode.swift in Sources */, 344F248D2007CCD600CFB4F4 /* DisplayableText.swift in Sources */, 450998651FD8A34D00D89EB3 /* DeviceSleepManager.swift in Sources */, 34AC09EB211B39B100997B47 /* ContactShareApprovalViewController.swift in Sources */, @@ -4960,7 +5069,6 @@ 451F8A341FD710C3005CB9DA /* FullTextSearcher.swift in Sources */, 34080F04222858DC0087E99F /* OWSViewController+ImageEditor.swift in Sources */, 34AC0A10211B39EA00997B47 /* TappableView.swift in Sources */, - B8C9689A23FA1B95005F64E0 /* DeviceUtilities.swift in Sources */, 346129B61FD1F7E800532771 /* ProfileFetcherJob.swift in Sources */, 34AC09E9211B39B100997B47 /* OWSTableViewController.m in Sources */, 340872CE2239596100CB25B0 /* AttachmentApprovalInputAccessoryView.swift in Sources */, @@ -5024,7 +5132,6 @@ 4C948FF72146EB4800349F0D /* BlockListCache.swift in Sources */, B846365B22B7418B00AF1514 /* Identicon+ObjC.swift in Sources */, 4551DB5A205C562300C8AE75 /* Collection+OWS.swift in Sources */, - B8C9689623FA1B72005F64E0 /* Colors.swift in Sources */, 34BBC84F220B8A0100857249 /* ImageEditorCropViewController.swift in Sources */, 34AC09ED211B39B100997B47 /* ContactFieldView.swift in Sources */, B8544E3423D51EEF00299F14 /* ProfilePictureView.swift in Sources */, @@ -5044,6 +5151,29 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + C331FF172558F9D300070591 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + C331FF972558FA6B00070591 /* Fonts.swift in Sources */, + C331FF9B2558FA6B00070591 /* Gradients.swift in Sources */, + C331FFB82558FA8D00070591 /* DeviceUtilities.swift in Sources */, + C331FFE72558FB0000070591 /* TextField.swift in Sources */, + C331FFE32558FB0000070591 /* TabBar.swift in Sources */, + C331FFB92558FA8D00070591 /* UIView+Constraints.swift in Sources */, + C331FF962558FA6B00070591 /* Colors.swift in Sources */, + C331FFE02558FB0000070591 /* SearchBar.swift in Sources */, + C331FF982558FA6B00070591 /* AppMode.swift in Sources */, + C331FFE82558FB0000070591 /* TextView.swift in Sources */, + C331FF9A2558FA6B00070591 /* Values.swift in Sources */, + C331FFE42558FB0000070591 /* Button.swift in Sources */, + C33100142558FFC200070591 /* UIImage+Tinting.swift in Sources */, + C3310033255900A400070591 /* Notification+AppMode.swift in Sources */, + C331FFE92558FB0000070591 /* Separator.swift in Sources */, + C33100282559000A00070591 /* UIView+Rendering.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; C3C2A59B255385C100C340D1 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -5240,7 +5370,6 @@ 340FC8B8204DAC8D007AEB0F /* AddToGroupViewController.m in Sources */, 341F2C0F1F2B8AE700D07D6B /* DebugUIMisc.m in Sources */, B893063F2383961A005EAA8E /* ScanQRCodeWrapperVC.swift in Sources */, - B83F2B86240C7B8F000A54AB /* NewConversationButtonSet.swift in Sources */, B879D449247E1BE300DB3608 /* PathVC.swift in Sources */, 34E3EF0D1EFC235B007F6822 /* DebugUIDiskUsage.m in Sources */, 454A84042059C787008B8C75 /* MediaTileViewController.swift in Sources */, @@ -5248,7 +5377,6 @@ 340FC8B4204DAC8D007AEB0F /* OWSBackupSettingsViewController.m in Sources */, 34D1F0871F8678AA0066283D /* ConversationViewItem.m in Sources */, 451A13B11E13DED2000A50FD /* AppNotifications.swift in Sources */, - C31D1DDD25217014005D4DA8 /* UserCell.swift in Sources */, 34D99CE4217509C2000AFB39 /* AppEnvironment.swift in Sources */, 348570A820F67575004FF32B /* OWSMessageHeaderView.m in Sources */, 450DF2091E0DD2C6003D14BE /* UserNotificationsAdaptee.swift in Sources */, @@ -5257,7 +5385,6 @@ 34D1F0AB1F867BFC0066283D /* OWSContactOffersCell.m in Sources */, C3548F0824456AB6009433A8 /* UIView+Wrapping.swift in Sources */, B82B408A2399EC0600A248E7 /* FakeChatView.swift in Sources */, - B8BB82B92394911B00BA5194 /* Separator.swift in Sources */, 343A65981FC4CFE7000477A1 /* ConversationScrollButton.m in Sources */, B82B40882399EB0E00A248E7 /* LandingVC.swift in Sources */, 34D1F0A91F867BFC0066283D /* ConversationViewCell.m in Sources */, @@ -5265,7 +5392,6 @@ EF764C351DB67CC5000D9A87 /* UIViewController+Permissions.m in Sources */, 45CD81EF1DC030E7004C9430 /* SyncPushTokensJob.swift in Sources */, 34D2CCE0206939B400CB1A14 /* DebugUIMessagesAssetLoader.m in Sources */, - C3C3CF8924D8EED300E1CCE7 /* TextView.swift in Sources */, 4CEB78C92178EBAB00F315D2 /* OWSSessionResetJobRecord.m in Sources */, 45794E861E00620000066731 /* CallUIAdapter.swift in Sources */, 340FC8BA204DAC8D007AEB0F /* FingerprintViewScanController.m in Sources */, @@ -5296,7 +5422,6 @@ 34A8B3512190A40E00218A25 /* MediaAlbumCellView.swift in Sources */, 34D1F0AE1F867BFC0066283D /* OWSMessageCell.m in Sources */, C396DAF42518408B00FF6DC5 /* Parser.swift in Sources */, - B8BB82AB238F669C00BA5194 /* ConversationCell.swift in Sources */, 4C4AEC4520EC343B0020E72B /* DismissableTextField.swift in Sources */, 4CB5F26720F6E1E2004D1B42 /* MenuActionsViewController.swift in Sources */, 3496955E219B605E00DCFE74 /* PhotoLibrary.swift in Sources */, @@ -5321,6 +5446,7 @@ 346129991FD1E4DA00532771 /* SignalApp.m in Sources */, 3496957121A301A100DCFE74 /* OWSBackupImportJob.m in Sources */, 34BECE301F7ABCF800D7438D /* GifPickerLayout.swift in Sources */, + C331FFFE2558FF3B00070591 /* ConversationCell.swift in Sources */, C3DFFAC623E96F0D0058DAF8 /* Sheet.swift in Sources */, C31FFE57254A5FFE00F19441 /* KeyPairUtilities.swift in Sources */, 343A65951FC47D5E000477A1 /* DebugUISyncMessages.m in Sources */, @@ -5337,20 +5463,18 @@ 4542DF54208D40AC007B4E76 /* LoadingViewController.swift in Sources */, 34D5CCA91EAE3D30005515DB /* AvatarViewHelper.m in Sources */, 34D1F0B71F87F8850066283D /* OWSGenericAttachmentView.m in Sources */, - B8B5BCEC2394D869003823C9 /* Button.swift in Sources */, 34D920E720E179C200D51158 /* OWSMessageFooterView.m in Sources */, 341341EF2187467A00192D59 /* ConversationViewModel.m in Sources */, - B8BB82B12390C37000BA5194 /* SearchBar.swift in Sources */, 348BB25D20A0C5530047AEC2 /* ContactShareViewHelper.swift in Sources */, 34B3F8801E8DF1700035BE1A /* InviteFlow.swift in Sources */, B85357C523A1F13800AAF6CD /* LinkDeviceVC.swift in Sources */, 457C87B82032645C008D52D6 /* DebugUINotifications.swift in Sources */, 4C21D5D8223AC60F00EF8A77 /* PhotoCapture.swift in Sources */, + C331FFF32558FF0300070591 /* PathStatusView.swift in Sources */, 4C13C9F620E57BA30089A98B /* ColorPickerViewController.swift in Sources */, 4CC1ECFB211A553000CC13BE /* AppUpdateNag.swift in Sources */, C369549D24D27A3500CEB4E3 /* MultiDeviceRemovalSheet.swift in Sources */, 34B6A903218B3F63007C4606 /* TypingIndicatorView.swift in Sources */, - B8CCF639239721E20091D419 /* TabBar.swift in Sources */, 458E38371D668EBF0094BD24 /* OWSDeviceProvisioningURLParser.m in Sources */, 34B6A905218B4C91007C4606 /* TypingIndicatorInteraction.swift in Sources */, 2400888E239F30A600305217 /* SessionRestorationView.swift in Sources */, @@ -5361,13 +5485,13 @@ 340FC8AB204DAC8D007AEB0F /* DomainFrontingCountryViewController.m in Sources */, 4C586926224FAB83003FD070 /* AVAudioSession+OWS.m in Sources */, 3496744D2076768700080B5F /* OWSMessageBubbleView.m in Sources */, + C331FFF42558FF0300070591 /* PNOptionView.swift in Sources */, 34B3F8751E8DF1700035BE1A /* CallViewController.swift in Sources */, 4C4AE6A1224AF35700D4AF6F /* SendMediaNavigationController.swift in Sources */, 34D8C0281ED3673300188D7C /* DebugUITableViewController.m in Sources */, 45F32C222057297A00A300D5 /* MediaDetailViewController.m in Sources */, C3DAB3242480CB2B00725F25 /* SRCopyableLabel.swift in Sources */, B8B26C8F234D629C004ED98C /* MentionCandidateSelectionView.swift in Sources */, - B879D44B247E1D9200DB3608 /* PathStatusView.swift in Sources */, C396DAF02518408B00FF6DC5 /* String+Lines.swift in Sources */, B8CCF63F23975CFB0091D419 /* JoinPublicChatVC.swift in Sources */, 34ABC0E421DD20C500ED9469 /* ConversationMessageMapping.swift in Sources */, @@ -5393,7 +5517,6 @@ 340FC8BB204DAC8D007AEB0F /* OWSAddToContactViewController.m in Sources */, 45F32C232057297A00A300D5 /* MediaPageViewController.swift in Sources */, 452C468F1E427E200087B011 /* OutboundCallInitiator.swift in Sources */, - C353F8F9244809150011121A /* PNOptionView.swift in Sources */, B82B4094239DF15900A248E7 /* ConversationTitleView.swift in Sources */, 34D2CCDA2062E7D000CB1A14 /* OWSScreenLockUI.m in Sources */, 45F170BB1E2FC5D3003FC1F2 /* CallAudioService.swift in Sources */, @@ -5411,7 +5534,6 @@ 45F32C242057297A00A300D5 /* MessageDetailViewController.swift in Sources */, C396DAEF2518408B00FF6DC5 /* ParsingState.swift in Sources */, 3496955C219B605E00DCFE74 /* ImagePickerController.swift in Sources */, - B8BB82B523947F2D00BA5194 /* TextField.swift in Sources */, 34D1F0841F8678AA0066283D /* ConversationInputToolbar.m in Sources */, 457F671B20746193000EABCD /* QuotedReplyPreview.swift in Sources */, C31D1DE32521718E005D4DA8 /* UserSelectionVC.swift in Sources */, @@ -5430,6 +5552,7 @@ C3E7134F251C867C009649BB /* Sodium+Conversion.swift in Sources */, 340FC8B5204DAC8D007AEB0F /* AboutTableViewController.m in Sources */, 34BECE2B1F74C12700D7438D /* DebugUIStress.m in Sources */, + C33100082558FF6D00070591 /* NewConversationButtonSet.swift in Sources */, 340FC8B9204DAC8D007AEB0F /* UpdateGroupViewController.m in Sources */, B8BB82A5238F627000BA5194 /* HomeVC.swift in Sources */, C31A6C5A247F214E001123EF /* UIView+Glow.swift in Sources */, @@ -5463,6 +5586,7 @@ 3427C64320F500E000EEC730 /* OWSMessageTimerView.m in Sources */, B90418E6183E9DD40038554A /* DateUtil.m in Sources */, 340FC8BD204DAC8D007AEB0F /* ShowGroupMembersViewController.m in Sources */, + C33100092558FF6D00070591 /* UserCell.swift in Sources */, C3645350252449260045C478 /* VoiceMessageView.swift in Sources */, 3496956F21A301A100DCFE74 /* OWSBackupLazyRestore.swift in Sources */, 459311FC1D75C948008DD4F0 /* OWSDeviceTableViewCell.m in Sources */, @@ -5533,6 +5657,11 @@ target = D221A088169C9E5E00537ABF /* Signal */; targetProxy = B6AFCEBA19A93DA60098CFCB /* PBXContainerItemProxy */; }; + C331FF212558F9D300070591 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = C331FF1A2558F9D300070591 /* SessionUIKit */; + targetProxy = C331FF202558F9D300070591 /* PBXContainerItemProxy */; + }; C36B8706243C50B00049991D /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 453518911FC63DBF00210559 /* SignalMessaging */; @@ -5955,6 +6084,129 @@ }; name = "App Store Release"; }; + C331FF242558F9D400070591 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = SUQ8J2PCT7; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + INFOPLIST_FILE = SessionUIKit/Meta/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "com.loki-project.SessionUIKit"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + C331FF252558F9D400070591 /* App Store Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = SUQ8J2PCT7; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = SessionUIKit/Meta/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "com.loki-project.SessionUIKit"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = "App Store Release"; + }; C3C2A5A8255385C100C340D1 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = A6344D429FFAC3B44E6A06FA /* Pods-SessionSnodeKit.debug.xcconfig */; @@ -5991,7 +6243,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = SessionSnodeKit/Meta/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 14.1; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; @@ -6064,7 +6316,7 @@ GCC_WARN_UNUSED_VARIABLE = YES; INFOPLIST_FILE = SessionSnodeKit/Meta/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 14.1; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; @@ -6117,7 +6369,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = SessionUtilitiesKit/Meta/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 14.1; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; @@ -6199,7 +6451,7 @@ GCC_WARN_UNUSED_VARIABLE = YES; INFOPLIST_FILE = SessionUtilitiesKit/Meta/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 14.1; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; @@ -6261,7 +6513,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = SessionMessagingKit/Meta/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 14.1; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; @@ -6334,7 +6586,7 @@ GCC_WARN_UNUSED_VARIABLE = YES; INFOPLIST_FILE = SessionMessagingKit/Meta/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 14.1; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; @@ -6387,7 +6639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = SessionProtocolKit/Meta/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 14.1; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; @@ -6461,7 +6713,7 @@ GCC_WARN_UNUSED_VARIABLE = YES; INFOPLIST_FILE = SessionProtocolKit/Meta/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 14.1; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; @@ -6913,6 +7165,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = "App Store Release"; }; + C331FF262558F9D400070591 /* Build configuration list for PBXNativeTarget "SessionUIKit" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C331FF242558F9D400070591 /* Debug */, + C331FF252558F9D400070591 /* App Store Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "App Store Release"; + }; C3C2A5AA255385C100C340D1 /* Build configuration list for PBXNativeTarget "SessionSnodeKit" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/Signal/Signal-Prefix.pch b/Signal/Signal-Prefix.pch index acba24111..1f72ce787 100644 --- a/Signal/Signal-Prefix.pch +++ b/Signal/Signal-Prefix.pch @@ -22,4 +22,5 @@ #import #import #import + #import #endif diff --git a/Signal/src/Loki/Components/ConversationCell.swift b/Signal/src/Loki/Components/ConversationCell.swift index d01f89e93..c86a5d098 100644 --- a/Signal/src/Loki/Components/ConversationCell.swift +++ b/Signal/src/Loki/Components/ConversationCell.swift @@ -1,3 +1,4 @@ +import UIKit final class ConversationCell : UITableViewCell { var threadViewModel: ThreadViewModel! { didSet { update() } } diff --git a/Signal/src/Loki/Components/NewConversationButtonSet.swift b/Signal/src/Loki/Components/NewConversationButtonSet.swift index 98e9bb9a6..36c4b9d61 100644 --- a/Signal/src/Loki/Components/NewConversationButtonSet.swift +++ b/Signal/src/Loki/Components/NewConversationButtonSet.swift @@ -1,3 +1,4 @@ +import UIKit final class NewConversationButtonSet : UIView { private var isUserDragging = false diff --git a/Signal/src/Loki/Components/PNOptionView.swift b/Signal/src/Loki/Components/PNOptionView.swift index 8bf4e4c63..e0fdde313 100644 --- a/Signal/src/Loki/Components/PNOptionView.swift +++ b/Signal/src/Loki/Components/PNOptionView.swift @@ -1,3 +1,4 @@ +import UIKit final class OptionView : UIView { private let title: String diff --git a/Signal/src/Loki/Components/PathStatusView.swift b/Signal/src/Loki/Components/PathStatusView.swift index 1e0dcdf6c..01373c862 100644 --- a/Signal/src/Loki/Components/PathStatusView.swift +++ b/Signal/src/Loki/Components/PathStatusView.swift @@ -1,3 +1,4 @@ +import UIKit final class PathStatusView : UIView { diff --git a/Signal/src/Loki/Components/SessionRestorationView.swift b/Signal/src/Loki/Components/SessionRestorationView.swift index 4126b2420..654020006 100644 --- a/Signal/src/Loki/Components/SessionRestorationView.swift +++ b/Signal/src/Loki/Components/SessionRestorationView.swift @@ -1,3 +1,4 @@ +import SessionUIKit @objc(LKSessionRestorationView) final class SessionRestorationView : UIView { diff --git a/Signal/src/Loki/Components/UserCell.swift b/Signal/src/Loki/Components/UserCell.swift index 86a447396..81e4516b1 100644 --- a/Signal/src/Loki/Components/UserCell.swift +++ b/Signal/src/Loki/Components/UserCell.swift @@ -1,3 +1,4 @@ +import UIKit final class UserCell : UITableViewCell { var accessory = Accessory.none diff --git a/Signal/src/Signal-Bridging-Header.h b/Signal/src/Signal-Bridging-Header.h index b17ef8b9d..d7d08bd2f 100644 --- a/Signal/src/Signal-Bridging-Header.h +++ b/Signal/src/Signal-Bridging-Header.h @@ -4,6 +4,7 @@ #import #import +#import // Separate iOS Frameworks from other imports. #import "AppDelegate.h" diff --git a/SignalMessaging/Loki/Redesign/Components/ProfilePictureView.swift b/SignalMessaging/Loki/Redesign/Components/ProfilePictureView.swift index cf2aa5c78..4b90a25d8 100644 --- a/SignalMessaging/Loki/Redesign/Components/ProfilePictureView.swift +++ b/SignalMessaging/Loki/Redesign/Components/ProfilePictureView.swift @@ -1,3 +1,4 @@ +import SessionUIKit @objc(LKProfilePictureView) public final class ProfilePictureView : UIView { diff --git a/SignalMessaging/Loki/Redesign/Utilities/UIView+Utilities.swift b/SignalMessaging/Loki/Redesign/Utilities/UIView+Utilities.swift index 9048ba2e2..8856d2b91 100644 --- a/SignalMessaging/Loki/Redesign/Utilities/UIView+Utilities.swift +++ b/SignalMessaging/Loki/Redesign/Utilities/UIView+Utilities.swift @@ -1,3 +1,4 @@ +import SessionUIKit public extension UIView { diff --git a/SignalMessaging/Loki/Redesign/Utilities/UIViewController+Utilities.swift b/SignalMessaging/Loki/Redesign/Utilities/UIViewController+Utilities.swift index 644e0e833..d9a3a42b6 100644 --- a/SignalMessaging/Loki/Redesign/Utilities/UIViewController+Utilities.swift +++ b/SignalMessaging/Loki/Redesign/Utilities/UIViewController+Utilities.swift @@ -1,3 +1,4 @@ +import SessionUIKit @objc(LKViewControllerUtilities) public final class ViewControllerUtilities : NSObject { diff --git a/SignalMessaging/ViewControllers/AttachmentApproval/AttachmentApprovalInputAccessoryView.swift b/SignalMessaging/ViewControllers/AttachmentApproval/AttachmentApprovalInputAccessoryView.swift index 64b579467..a28986786 100644 --- a/SignalMessaging/ViewControllers/AttachmentApproval/AttachmentApprovalInputAccessoryView.swift +++ b/SignalMessaging/ViewControllers/AttachmentApproval/AttachmentApprovalInputAccessoryView.swift @@ -4,6 +4,7 @@ import Foundation import UIKit +import SessionUIKit protocol AttachmentApprovalInputAccessoryViewDelegate: class { func attachmentApprovalInputUpdateMediaRail() diff --git a/SignalMessaging/ViewControllers/AttachmentApproval/AttachmentApprovalViewController.swift b/SignalMessaging/ViewControllers/AttachmentApproval/AttachmentApprovalViewController.swift index 2f813cd2a..6b90e61b8 100644 --- a/SignalMessaging/ViewControllers/AttachmentApproval/AttachmentApprovalViewController.swift +++ b/SignalMessaging/ViewControllers/AttachmentApproval/AttachmentApprovalViewController.swift @@ -6,6 +6,7 @@ import Foundation import AVFoundation import MediaPlayer import PromiseKit +import SessionUIKit @objc public protocol AttachmentApprovalViewControllerDelegate: class { diff --git a/SignalMessaging/ViewControllers/AttachmentApproval/AttachmentCaptionToolbar.swift b/SignalMessaging/ViewControllers/AttachmentApproval/AttachmentCaptionToolbar.swift index 0f455717b..3419bef56 100644 --- a/SignalMessaging/ViewControllers/AttachmentApproval/AttachmentCaptionToolbar.swift +++ b/SignalMessaging/ViewControllers/AttachmentApproval/AttachmentCaptionToolbar.swift @@ -4,6 +4,7 @@ import Foundation import UIKit +import SessionUIKit protocol AttachmentCaptionToolbarDelegate: class { func attachmentCaptionToolbarDidEdit(_ attachmentCaptionToolbar: AttachmentCaptionToolbar) diff --git a/SignalMessaging/ViewControllers/AttachmentApproval/AttachmentPrepViewController.swift b/SignalMessaging/ViewControllers/AttachmentApproval/AttachmentPrepViewController.swift index 74408eab4..dea19759d 100644 --- a/SignalMessaging/ViewControllers/AttachmentApproval/AttachmentPrepViewController.swift +++ b/SignalMessaging/ViewControllers/AttachmentApproval/AttachmentPrepViewController.swift @@ -5,6 +5,7 @@ import Foundation import UIKit import AVFoundation +import SessionUIKit protocol AttachmentPrepViewControllerDelegate: class { func prepViewControllerUpdateNavigationBar() diff --git a/SignalMessaging/ViewControllers/AttachmentApproval/AttachmentTextToolbar.swift b/SignalMessaging/ViewControllers/AttachmentApproval/AttachmentTextToolbar.swift index 359e30053..8cdc30eb2 100644 --- a/SignalMessaging/ViewControllers/AttachmentApproval/AttachmentTextToolbar.swift +++ b/SignalMessaging/ViewControllers/AttachmentApproval/AttachmentTextToolbar.swift @@ -4,6 +4,7 @@ import Foundation import UIKit +import SessionUIKit // Coincides with Android's max text message length let kMaxMessageBodyCharacterCount = 2000 diff --git a/SignalMessaging/ViewControllers/MediaMessageView.swift b/SignalMessaging/ViewControllers/MediaMessageView.swift index 74f6def92..e54730edf 100644 --- a/SignalMessaging/ViewControllers/MediaMessageView.swift +++ b/SignalMessaging/ViewControllers/MediaMessageView.swift @@ -6,6 +6,7 @@ import Foundation import MediaPlayer import YYImage import SessionServiceKit +import SessionUIKit @objc public enum MediaMessageViewMode: UInt { diff --git a/SignalMessaging/ViewControllers/OWSNavigationController.m b/SignalMessaging/ViewControllers/OWSNavigationController.m index fe116ed4b..ea6bf3268 100644 --- a/SignalMessaging/ViewControllers/OWSNavigationController.m +++ b/SignalMessaging/ViewControllers/OWSNavigationController.m @@ -4,6 +4,7 @@ #import "OWSNavigationController.h" #import +#import NS_ASSUME_NONNULL_BEGIN diff --git a/SignalMessaging/ViewControllers/OWSTableViewController.m b/SignalMessaging/ViewControllers/OWSTableViewController.m index 9e0777b91..69efbbfea 100644 --- a/SignalMessaging/ViewControllers/OWSTableViewController.m +++ b/SignalMessaging/ViewControllers/OWSTableViewController.m @@ -9,6 +9,7 @@ #import "UIFont+OWS.h" #import "UIView+OWS.h" #import +#import NS_ASSUME_NONNULL_BEGIN diff --git a/SignalMessaging/ViewControllers/ScreenLockViewController.m b/SignalMessaging/ViewControllers/ScreenLockViewController.m index 21d4c3514..5716aec0d 100644 --- a/SignalMessaging/ViewControllers/ScreenLockViewController.m +++ b/SignalMessaging/ViewControllers/ScreenLockViewController.m @@ -7,6 +7,7 @@ #import "UIFont+OWS.h" #import "UIView+OWS.h" #import +#import NSString *NSStringForScreenLockUIState(ScreenLockUIState value) { diff --git a/SignalMessaging/ViewControllers/SelectThreadViewController.m b/SignalMessaging/ViewControllers/SelectThreadViewController.m index 081999754..d1edc2bfa 100644 --- a/SignalMessaging/ViewControllers/SelectThreadViewController.m +++ b/SignalMessaging/ViewControllers/SelectThreadViewController.m @@ -23,6 +23,7 @@ #import #import #import +#import NS_ASSUME_NONNULL_BEGIN diff --git a/SignalMessaging/ViewControllers/SharingThreadPickerViewController.m b/SignalMessaging/ViewControllers/SharingThreadPickerViewController.m index d3c4660c3..4c2417c13 100644 --- a/SignalMessaging/ViewControllers/SharingThreadPickerViewController.m +++ b/SignalMessaging/ViewControllers/SharingThreadPickerViewController.m @@ -14,6 +14,7 @@ #import #import #import +#import NS_ASSUME_NONNULL_BEGIN diff --git a/SignalMessaging/Views/ContactCellView.m b/SignalMessaging/Views/ContactCellView.m index eaaff2644..6fef73843 100644 --- a/SignalMessaging/Views/ContactCellView.m +++ b/SignalMessaging/Views/ContactCellView.m @@ -13,6 +13,7 @@ #import #import #import +#import NS_ASSUME_NONNULL_BEGIN diff --git a/SignalMessaging/Views/GalleryRailView.swift b/SignalMessaging/Views/GalleryRailView.swift index 3be72bcd4..013602477 100644 --- a/SignalMessaging/Views/GalleryRailView.swift +++ b/SignalMessaging/Views/GalleryRailView.swift @@ -3,6 +3,7 @@ // import PromiseKit +import SessionUIKit public protocol GalleryRailItemProvider: class { var railItems: [GalleryRailItem] { get } diff --git a/SignalMessaging/Views/ImageEditor/ImageEditorBrushViewController.swift b/SignalMessaging/Views/ImageEditor/ImageEditorBrushViewController.swift index f4aa2db76..e777e120d 100644 --- a/SignalMessaging/Views/ImageEditor/ImageEditorBrushViewController.swift +++ b/SignalMessaging/Views/ImageEditor/ImageEditorBrushViewController.swift @@ -3,6 +3,7 @@ // import UIKit +import SessionUIKit @objc public protocol ImageEditorBrushViewControllerDelegate: class { diff --git a/SignalMessaging/Views/ImageEditor/ImageEditorCropViewController.swift b/SignalMessaging/Views/ImageEditor/ImageEditorCropViewController.swift index 2eab87b9b..8cb6f74b8 100644 --- a/SignalMessaging/Views/ImageEditor/ImageEditorCropViewController.swift +++ b/SignalMessaging/Views/ImageEditor/ImageEditorCropViewController.swift @@ -3,6 +3,7 @@ // import UIKit +import SessionUIKit public protocol ImageEditorCropViewControllerDelegate: class { func cropDidComplete(transform: ImageEditorTransform) diff --git a/SignalMessaging/Views/ImageEditor/ImageEditorTextViewController.swift b/SignalMessaging/Views/ImageEditor/ImageEditorTextViewController.swift index 7345dfcc7..662b02f56 100644 --- a/SignalMessaging/Views/ImageEditor/ImageEditorTextViewController.swift +++ b/SignalMessaging/Views/ImageEditor/ImageEditorTextViewController.swift @@ -3,6 +3,7 @@ // import UIKit +import SessionUIKit @objc public protocol VAlignTextViewDelegate: class { diff --git a/SignalMessaging/Views/ImageEditor/OWSViewController+ImageEditor.swift b/SignalMessaging/Views/ImageEditor/OWSViewController+ImageEditor.swift index eb47a8f29..a11132f07 100644 --- a/SignalMessaging/Views/ImageEditor/OWSViewController+ImageEditor.swift +++ b/SignalMessaging/Views/ImageEditor/OWSViewController+ImageEditor.swift @@ -3,6 +3,7 @@ // import UIKit +import SessionUIKit public extension NSObject { diff --git a/SignalMessaging/Views/OWSNavigationBar.swift b/SignalMessaging/Views/OWSNavigationBar.swift index 6933403e0..7ba0c450d 100644 --- a/SignalMessaging/Views/OWSNavigationBar.swift +++ b/SignalMessaging/Views/OWSNavigationBar.swift @@ -4,6 +4,7 @@ import Foundation import UIKit +import SessionUIKit @objc public protocol NavBarLayoutDelegate: class { diff --git a/SignalMessaging/Views/OWSSearchBar.m b/SignalMessaging/Views/OWSSearchBar.m index 85a30cf66..00faa2c55 100644 --- a/SignalMessaging/Views/OWSSearchBar.m +++ b/SignalMessaging/Views/OWSSearchBar.m @@ -6,6 +6,7 @@ #import "Theme.h" #import "UIView+OWS.h" #import +#import NS_ASSUME_NONNULL_BEGIN diff --git a/SignalMessaging/Views/OWSTextField.m b/SignalMessaging/Views/OWSTextField.m index ed21e557b..9f57f2122 100644 --- a/SignalMessaging/Views/OWSTextField.m +++ b/SignalMessaging/Views/OWSTextField.m @@ -5,6 +5,7 @@ #import "OWSTextField.h" #import "Theme.h" #import +#import NS_ASSUME_NONNULL_BEGIN diff --git a/SignalMessaging/Views/OWSTextView.m b/SignalMessaging/Views/OWSTextView.m index 4c862eaa8..ba2408d79 100644 --- a/SignalMessaging/Views/OWSTextView.m +++ b/SignalMessaging/Views/OWSTextView.m @@ -5,6 +5,7 @@ #import "OWSTextView.h" #import "Theme.h" #import +#import NS_ASSUME_NONNULL_BEGIN diff --git a/SignalMessaging/appearance/Theme.m b/SignalMessaging/appearance/Theme.m index b24a3ffd0..0fdbb76a8 100644 --- a/SignalMessaging/appearance/Theme.m +++ b/SignalMessaging/appearance/Theme.m @@ -9,6 +9,7 @@ #import #import #import +#import NS_ASSUME_NONNULL_BEGIN diff --git a/SignalMessaging/utils/ConversationStyle.swift b/SignalMessaging/utils/ConversationStyle.swift index fb09c5d85..c93742cbb 100644 --- a/SignalMessaging/utils/ConversationStyle.swift +++ b/SignalMessaging/utils/ConversationStyle.swift @@ -3,6 +3,7 @@ // import Foundation +import SessionUIKit @objc public class ConversationStyle: NSObject { diff --git a/SignalMessaging/utils/UIUtil.m b/SignalMessaging/utils/UIUtil.m index ff1054bd9..b0d0a531d 100644 --- a/SignalMessaging/utils/UIUtil.m +++ b/SignalMessaging/utils/UIUtil.m @@ -7,6 +7,7 @@ #import "UIColor+OWS.h" #import #import +#import #define CONTACT_PICTURE_VIEW_BORDER_WIDTH 0.5f diff --git a/SignalServiceKit/src/Loki/Utilities/Notification+Loki.swift b/SignalServiceKit/src/Loki/Utilities/Notification+Loki.swift index 2830f82bc..da6894d6d 100644 --- a/SignalServiceKit/src/Loki/Utilities/Notification+Loki.swift +++ b/SignalServiceKit/src/Loki/Utilities/Notification+Loki.swift @@ -2,7 +2,6 @@ public extension Notification.Name { // State changes - public static let appModeChanged = Notification.Name("appModeChanged") public static let blockedContactsUpdated = Notification.Name("blockedContactsUpdated") public static let contactOnlineStatusChanged = Notification.Name("contactOnlineStatusChanged") public static let groupThreadUpdated = Notification.Name("groupThreadUpdated") @@ -29,7 +28,6 @@ public extension Notification.Name { @objc public extension NSNotification { // State changes - @objc public static let appModeChanged = Notification.Name.appModeChanged.rawValue as NSString @objc public static let blockedContactsUpdated = Notification.Name.blockedContactsUpdated.rawValue as NSString @objc public static let contactOnlineStatusChanged = Notification.Name.contactOnlineStatusChanged.rawValue as NSString @objc public static let groupThreadUpdated = Notification.Name.groupThreadUpdated.rawValue as NSString diff --git a/SignalShareExtension/ShareViewController.swift b/SignalShareExtension/ShareViewController.swift index 503c5eb47..762b9ca93 100644 --- a/SignalShareExtension/ShareViewController.swift +++ b/SignalShareExtension/ShareViewController.swift @@ -8,6 +8,7 @@ import SignalMessaging import PureLayout import SessionServiceKit import PromiseKit +import SessionUIKit @objc public class ShareViewController: UIViewController, ShareViewDelegate, SAEFailedViewDelegate, AppModeManagerDelegate { diff --git a/SignalShareExtension/SignalShareExtension-Prefix.pch b/SignalShareExtension/SignalShareExtension-Prefix.pch index c89ce4a9b..416fc8ef5 100644 --- a/SignalShareExtension/SignalShareExtension-Prefix.pch +++ b/SignalShareExtension/SignalShareExtension-Prefix.pch @@ -18,4 +18,5 @@ #import #import #import + #import #endif