diff --git a/Podfile b/Podfile index 2a4302093b2..08b3b6dfd4b 100644 --- a/Podfile +++ b/Podfile @@ -91,9 +91,9 @@ target 'WooCommerce' do pod 'Gridicons', '~> 1.2.0' # To allow pod to pick up beta versions use -beta. E.g., 1.1.7-beta.1 - pod 'WordPressAuthenticator', '~> 9.10.1' + # pod 'WordPressAuthenticator', '~> 9.10.1' # pod 'WordPressAuthenticator', git: 'https://github.com/wordpress-mobile/WordPressAuthenticator-iOS.git', branch: '' - # pod 'WordPressAuthenticator', git: 'https://github.com/wordpress-mobile/WordPressAuthenticator-iOS.git', commit: '' + pod 'WordPressAuthenticator', git: 'https://github.com/wordpress-mobile/WordPressAuthenticator-iOS.git', commit: 'e5247b2d9bdb522c5d210dd6b66d58a4013eed99' # pod 'WordPressAuthenticator', path: '../WordPressAuthenticator-iOS' wordpress_shared diff --git a/Podfile.lock b/Podfile.lock index 93d02de7971..c598b981862 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -67,7 +67,7 @@ DEPENDENCIES: - StripeTerminal (~> 3.9.1) - SwiftLint (= 0.54.0) - WordPress-Editor-iOS (~> 1.19) - - WordPressAuthenticator (~> 9.10.1) + - WordPressAuthenticator (from `https://github.com/wordpress-mobile/WordPressAuthenticator-iOS.git`, commit `e5247b2d9bdb522c5d210dd6b66d58a4013eed99`) - WordPressShared (~> 2.1) - WordPressUI (~> 1.15) - Wormholy (~> 1.6.6) @@ -75,8 +75,6 @@ DEPENDENCIES: - ZendeskSupportSDK (~> 9.0.0) SPEC REPOS: - https://github.com/wordpress-mobile/cocoapods-specs.git: - - WordPressAuthenticator trunk: - Alamofire - Automattic-Tracks-iOS @@ -109,6 +107,16 @@ SPEC REPOS: - ZendeskSupportProvidersSDK - ZendeskSupportSDK +EXTERNAL SOURCES: + WordPressAuthenticator: + :commit: e5247b2d9bdb522c5d210dd6b66d58a4013eed99 + :git: https://github.com/wordpress-mobile/WordPressAuthenticator-iOS.git + +CHECKOUT OPTIONS: + WordPressAuthenticator: + :commit: e5247b2d9bdb522c5d210dd6b66d58a4013eed99 + :git: https://github.com/wordpress-mobile/WordPressAuthenticator-iOS.git + SPEC CHECKSUMS: Alamofire: 3ca42e259043ee0dc5c0cdd76c4bc568b8e42af7 Automattic-Tracks-iOS: 2d4bee68ff9db4d51f2f6c9fc85857dc69a008a4 @@ -127,7 +135,7 @@ SPEC CHECKSUMS: UIDeviceIdentifier: 442b65b4ff1832d4ca9c2a157815cb29ad981b17 WordPress-Aztec-iOS: 8eaa928fb3a5694924ed3befac64beaae5656e12 WordPress-Editor-iOS: 98ce1fc542c3a09e48ddc9423405b1d1e48240f1 - WordPressAuthenticator: 2896e9a678fbe09463866fe7ee82bb5c7c1ba530 + WordPressAuthenticator: d54323ca733b41b10a7fd64f5d1ca2d9efc47720 WordPressKit: faf8c6de7c2acfe71cf95b4db896901060967089 WordPressShared: 0aa459e5257a77184db87805a998f447443c9706 WordPressUI: 700e3ec5a9f77b6920c8104c338c85788036ab3c @@ -142,6 +150,6 @@ SPEC CHECKSUMS: ZendeskSupportProvidersSDK: 281acf2bb731d2a67f913cfe653ed0da9f5b2f42 ZendeskSupportSDK: b512cfc74b6bf8490e589f02cf52e27ed4f2bebe -PODFILE CHECKSUM: 9b0e747f08251a1b347a70debab470e5e105f89a +PODFILE CHECKSUM: 3c4625f3cbe2d1db480727650952ee77b82c2931 COCOAPODS: 1.16.2 diff --git a/WooCommerce/Classes/Authentication/Prologue/LoginProloguePages.swift b/WooCommerce/Classes/Authentication/Prologue/LoginProloguePages.swift index e1fbbe31871..e45734e86d0 100644 --- a/WooCommerce/Classes/Authentication/Prologue/LoginProloguePages.swift +++ b/WooCommerce/Classes/Authentication/Prologue/LoginProloguePages.swift @@ -9,7 +9,6 @@ enum LoginProloguePageType: CaseIterable { case orderManagement case products case reviews - case getStarted var title: String { switch self { @@ -25,9 +24,6 @@ enum LoginProloguePageType: CaseIterable { case .reviews: return NSLocalizedString("Monitor and approve your product reviews", comment: "Caption displayed in promotional screens shown during the login flow.") - case .getStarted: - return NSLocalizedString("The ecommerce platform that grows with you", - comment: "Caption displayed in the simplified prologue screen") } } @@ -42,58 +38,23 @@ enum LoginProloguePageType: CaseIterable { case .products: return NSLocalizedString("We enable you to process them effortlessly.", comment: "Subtitle displayed in promotional screens shown during the login flow.") - case .getStarted: - return NSLocalizedString("loginProloguePageType.getStartedText", - value: "From your first sale to millions in revenue, Woo is with you. " - + "See why merchants trust us to power 3.9 million online stores.", - comment: "Subtitle displayed in the simplified prologue screen") default: return nil } } - var subtitleColor: UIColor { - switch self { - case .stats, .orderManagement, .products, .reviews: - return .textSubtle - case .getStarted: - return .text - } - } - - var image: UIImage { - switch self { - case .stats: - return UIImage.prologueAnalyticsImage - case .orderManagement: - return UIImage.prologueOrdersImage - case .products: - return UIImage.prologueProductsImage - case .reviews: - return UIImage.prologueReviewsImage - case .getStarted: - return UIImage.prologueWooMobileImage - } - } - - var imageHeightMultiplier: CGFloat { - switch self { - case .stats, .orderManagement, .products, .reviews: - return 0.35 - case .getStarted: - return 0.6 - } - } - - // Space between image and text - var stackSpacing: CGFloat { - switch self { - case .stats, .orderManagement, .products, .reviews: - return 16 - case .getStarted: - return 8 + var image: UIImage { + switch self { + case .stats: + return UIImage.prologueAnalyticsImage + case .orderManagement: + return UIImage.prologueOrdersImage + case .products: + return UIImage.prologueProductsImage + case .reviews: + return UIImage.prologueReviewsImage + } } - } } // MARK: - View Controller @@ -147,7 +108,7 @@ private extension LoginProloguePageTypeViewController { // Stack view layout stackView.axis = .vertical stackView.alignment = .center - stackView.spacing = pageType.stackSpacing + stackView.spacing = Constants.stackSpacing // Set constraints @@ -166,7 +127,7 @@ private extension LoginProloguePageTypeViewController { imageView.translatesAutoresizingMaskIntoConstraints = false NSLayoutConstraint.activate([ imageView.widthAnchor.constraint(equalTo: stackView.widthAnchor), - imageView.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: pageType.imageHeightMultiplier) + imageView.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: Constants.imageHeightMultiplier) ]) // Image contents @@ -178,9 +139,7 @@ private extension LoginProloguePageTypeViewController { // Label style & layout titleLabel.font = { - if pageType == .getStarted { - return .title3SemiBold - } else if showsSubtitle { + if showsSubtitle { return .font(forStyle: .title2, weight: .semibold) } else { return .body @@ -208,7 +167,7 @@ private extension LoginProloguePageTypeViewController { // Label style & layout subtitleLabel.font = .body subtitleLabel.adjustsFontForContentSizeCategory = true - subtitleLabel.textColor = pageType.subtitleColor + subtitleLabel.textColor = Constants.subtitleColor subtitleLabel.textAlignment = .center subtitleLabel.numberOfLines = 0 subtitleLabel.translatesAutoresizingMaskIntoConstraints = false @@ -226,5 +185,8 @@ private extension LoginProloguePageTypeViewController { enum Constants { static let stackBottomMargin: CGFloat = -24 // Minimum margin between stack view and login buttons, including space required for UIPageControl static let labelLeadingMargin: CGFloat = 48 + static let imageHeightMultiplier: CGFloat = 0.35 + static let stackSpacing: CGFloat = 16 // Space between image and text + static let subtitleColor: UIColor = .textSubtle } } diff --git a/WooCommerce/Classes/Authentication/Prologue/LoginPrologueViewController.swift b/WooCommerce/Classes/Authentication/Prologue/LoginPrologueViewController.swift index 5831cbc8671..08e5c0e7251 100644 --- a/WooCommerce/Classes/Authentication/Prologue/LoginPrologueViewController.swift +++ b/WooCommerce/Classes/Authentication/Prologue/LoginPrologueViewController.swift @@ -1,112 +1,123 @@ import Foundation -import UIKit -import WordPressAuthenticator +import SwiftUI import Experiments import protocol WooFoundation.Analytics /// Displays the WooCommerce Prologue UI. /// -final class LoginPrologueViewController: UIViewController { - - private let analytics: Analytics - private let featureFlagService: FeatureFlagService - - /// Background View, to be placed surrounding the bottom area. - /// - @IBOutlet private var backgroundView: UIView! - - /// Container View: Holds up the Button + bottom legend. - /// - @IBOutlet private var containerView: UIView! - - /// Curved Rectangle: Background shape with curved top edge - /// - @IBOutlet private weak var curvedRectangle: UIImageView! - - /// The WooCommerce logo on top of the screen - @IBOutlet private weak var topLogoImageView: UIImageView! - - // MARK: - Overridden Properties - - override var supportedInterfaceOrientations: UIInterfaceOrientationMask { - return .portrait +final class LoginPrologueViewController: UIHostingController { + init() { + super.init(rootView: LoginPrologueView()) + view.backgroundColor = .clear } - - // MARK: - Overridden Methods - - init(analytics: Analytics = ServiceLocator.analytics, - featureFlagService: FeatureFlagService = ServiceLocator.featureFlagService) { - self.analytics = analytics - self.featureFlagService = featureFlagService - super.init(nibName: nil, bundle: nil) - } - - required init?(coder: NSCoder) { + @objc required dynamic init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } - override func viewDidLoad() { - super.viewDidLoad() - - setupMainView() - setupBackgroundView() - setupContainerView() - setupCurvedRectangle() - setupCarousel() - } - override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) navigationController?.setNavigationBarHidden(true, animated: animated) } } +extension LoginPrologueViewController { + static let backgroundColor = UIColor(light: .wooCommercePurple(.shade70), + dark: .systemBackground) -// MARK: - Initialization Methods -// -private extension LoginPrologueViewController { + static var backgroundImage: UIImage { + .prologueBackgroundBubbles(tint: UIColor(light: .wooCommercePurple(.shade40), + dark: .gray(.shade80))) + } +} - func setupMainView() { - view.backgroundColor = .systemBackground +struct LoginPrologueView: View { + var body: some View { + GeometryReader { geometry in + ScrollView(.vertical) { + content + .frame(minHeight: geometry.size.height) + } + } + .scrollBounceBasedOnSize() + .frame(maxWidth: .infinity, maxHeight: .infinity) } - func setupBackgroundView() { - backgroundView.backgroundColor = .systemBackground + var content: some View { + VStack(alignment: .center) { + Image(uiImage: .wooLogoImage(withSize: Layout.wooLogoSize)!) + .padding(.top, Layout.topPadding) + + VStack(spacing: Layout.stackSpacing) { + Spacer(minLength: 2 * Layout.stackSpacing) + + Image(uiImage: .prologueWooMobileImage) + .resizable() + .scaledToFit() + .fixedSize() + .padding(.bottom, 4 * Layout.stackSpacing) + + Text(Localization.title) + .font(.title.bold()) + .multilineTextAlignment(.center) + .foregroundColor(.white) + .frame(maxWidth: Layout.textMaxWidth) + + Text(Localization.subtitle) + .font(.body) + .multilineTextAlignment(.center) + .foregroundColor(.white) + .frame(maxWidth: Layout.textMaxWidth) + + Spacer(minLength: 2 * Layout.stackSpacing) + } + .frame(maxWidth: .infinity, maxHeight: .infinity) + } + .padding(Layout.mainContentPadding) } +} - func setupContainerView() { - containerView.backgroundColor = .systemBackground +private extension LoginPrologueView { + enum Layout { + static let wooLogoSize = CGSize(width: 100, height: 26) + static let topPadding: CGFloat = 54 + static let stackSpacing: CGFloat = 8 + static let textMaxWidth: CGFloat = 333 + static let mainContentPadding: CGFloat = 16 } - func setupCurvedRectangle() { - curvedRectangle.isHidden = true + enum Localization { + static let title = NSLocalizedString("loginPrologue.title", + value: "The ecommerce platform that grows with you", + comment: "Caption displayed in the simplified prologue screen") + + static let subtitle = NSLocalizedString("loginPrologue.subtitle", + value: "From your first sale to millions in revenue, Woo is with you. " + + "See why merchants trust us to power 3.9 million stores.", + comment: "Subtitle displayed in the prologue screen") } +} - /// Adds a carousel (slider) of screens to promote the main features of the app. - /// This is contained in a child view so that this view's background doesn't scroll. - /// - func setupCarousel() { - let pageTypes: [LoginProloguePageType] = [.getStarted] - let carousel = LoginProloguePageViewController(pageTypes: pageTypes, showsSubtitle: true) - carousel.view.translatesAutoresizingMaskIntoConstraints = false - - addChild(carousel) - view.addSubview(carousel.view) - NSLayoutConstraint.activate([ - carousel.view.leadingAnchor.constraint(equalTo: view.leadingAnchor), - carousel.view.trailingAnchor.constraint(equalTo: view.trailingAnchor), - carousel.view.topAnchor.constraint(equalTo: topLogoImageView.bottomAnchor, constant: Constants.spacingBetweenTopLogoAndCarousel), - carousel.view.bottomAnchor.constraint(equalTo: view.bottomAnchor) - ]) - - view.bringSubviewToFront(topLogoImageView) +private extension View { + func scrollBounceBasedOnSize() -> some View { + if #available(iOS 16.4, *) { + return self.scrollBounceBehavior(.basedOnSize) + } else { + return self + } } } -private extension LoginPrologueViewController { - enum Constants { - static let spacingBetweenTopLogoAndCarousel: CGFloat = -16 +#if DEBUG +struct LoginPrologueView_Previews: PreviewProvider { + static var previews: some View { + LoginPrologueView() + .background { + Image(uiImage: LoginPrologueViewController.backgroundImage) + .resizable() + } + .background(Color(LoginPrologueViewController.backgroundColor)) } } +#endif diff --git a/WooCommerce/Classes/Authentication/Prologue/LoginPrologueViewController.xib b/WooCommerce/Classes/Authentication/Prologue/LoginPrologueViewController.xib deleted file mode 100644 index 6ef9b2a1392..00000000000 --- a/WooCommerce/Classes/Authentication/Prologue/LoginPrologueViewController.xib +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/WooCommerce/Classes/Extensions/UIImage+Woo.swift b/WooCommerce/Classes/Extensions/UIImage+Woo.swift index 1bd3f15daf0..478aa2240fa 100644 --- a/WooCommerce/Classes/Extensions/UIImage+Woo.swift +++ b/WooCommerce/Classes/Extensions/UIImage+Woo.swift @@ -558,6 +558,11 @@ extension UIImage { return UIImage(named: "prologue-curved-rectangle")! } + static func prologueBackgroundBubbles(tint: UIColor) -> UIImage { + let image = UIImage(named: "login-prologue-background-bubbles")! + return image.withTintColor(tint) + } + /// Login prologue analytics image /// static var prologueAnalyticsImage: UIImage { diff --git a/WooCommerce/Classes/Extensions/WordPressAuthenticator+Woo.swift b/WooCommerce/Classes/Extensions/WordPressAuthenticator+Woo.swift index dd1a68e29cb..1148ad9d0fc 100644 --- a/WooCommerce/Classes/Extensions/WordPressAuthenticator+Woo.swift +++ b/WooCommerce/Classes/Extensions/WordPressAuthenticator+Woo.swift @@ -72,6 +72,8 @@ extension WordPressAuthenticator { navBarImage: StyleManager.navBarImage, navBarBadgeColor: .primary, navBarBackgroundColor: .appBar, + prologueSecondaryButtonStyle: prologueSigninButtonStyle, + prologueTertiaryButtonStyle: prologueSiteCreationGuideButtonStyle, prologueTopContainerChildViewController: LoginPrologueViewController(), statusBarStyle: .default) @@ -108,8 +110,10 @@ extension WordPressAuthenticator { textButtonColor: .accent, textButtonHighlightColor: .accentDark, viewControllerBackgroundColor: .basicBackground, - prologueButtonsBackgroundColor: .systemBackground, - prologueViewBackgroundColor: .systemBackground, + prologueButtonsBackgroundColor: .clear, + prologueViewBackgroundColor: LoginPrologueViewController.backgroundColor, + prologueBackgroundImage: LoginPrologueViewController.backgroundImage, + prologueBackgroundScaleMode: .center, navBarBackgroundColor: .basicBackground, navButtonTextColor: .accent, navTitleTextColor: .text, @@ -126,4 +130,35 @@ extension WordPressAuthenticator { displayImages: displayImages, displayStrings: displayStrings) } + + static var prologueSigninButtonStyle: NUXButtonStyle { + let titleColor = UIColor(light: .black, dark: .primaryButtonTitle) + let backgroundColor = UIColor(light: .white, dark: .primaryButtonBackground) + let highlightedBackgroundColor = UIColor(light: .gray(.shade20), dark: .primaryButtonDownBackground) + + return NUXButtonStyle(normal: .init(backgroundColor: backgroundColor, + borderColor: .clear, + titleColor: titleColor), + highlighted: .init(backgroundColor: highlightedBackgroundColor, + borderColor: .clear, + titleColor: titleColor), + disabled: .init(backgroundColor: .buttonDisabledBackground, + borderColor: .clear, + titleColor: .textSubtle)) + } + + static var prologueSiteCreationGuideButtonStyle: NUXButtonStyle { + let buttonTitleColor = UIColor.white + let buttonHighlightColor = UIColor.gray(.shade20) + + return NUXButtonStyle(normal: .init(backgroundColor: .clear, + borderColor: .clear, + titleColor: buttonTitleColor), + highlighted: .init(backgroundColor: .clear, + borderColor: .clear, + titleColor: buttonHighlightColor), + disabled: .init(backgroundColor: .clear, + borderColor: .clear, + titleColor: buttonTitleColor.withAlphaComponent(0.5))) + } } diff --git a/WooCommerce/Resources/Images.xcassets/login-prologue-background-bubbles.imageset/Contents.json b/WooCommerce/Resources/Images.xcassets/login-prologue-background-bubbles.imageset/Contents.json new file mode 100644 index 00000000000..c3b16410a2b --- /dev/null +++ b/WooCommerce/Resources/Images.xcassets/login-prologue-background-bubbles.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "bubbles.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/WooCommerce/Resources/Images.xcassets/login-prologue-background-bubbles.imageset/bubbles.pdf b/WooCommerce/Resources/Images.xcassets/login-prologue-background-bubbles.imageset/bubbles.pdf new file mode 100644 index 00000000000..1b01a568175 Binary files /dev/null and b/WooCommerce/Resources/Images.xcassets/login-prologue-background-bubbles.imageset/bubbles.pdf differ diff --git a/WooCommerce/Resources/Images.xcassets/login-prologue-woo-mobile.imageset/Contents.json b/WooCommerce/Resources/Images.xcassets/login-prologue-woo-mobile.imageset/Contents.json index 81bc9882faa..cc60790d490 100644 --- a/WooCommerce/Resources/Images.xcassets/login-prologue-woo-mobile.imageset/Contents.json +++ b/WooCommerce/Resources/Images.xcassets/login-prologue-woo-mobile.imageset/Contents.json @@ -1,18 +1,9 @@ { "images" : [ { - "filename" : "prologue-light.pdf", - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "filename" : "prologue-dark.pdf", - "idiom" : "universal" + "filename" : "prologue-illustration.pdf", + "idiom" : "universal", + "language-direction" : "left-to-right" } ], "info" : { @@ -20,6 +11,7 @@ "version" : 1 }, "properties" : { + "localizable" : true, "preserves-vector-representation" : true } } diff --git a/WooCommerce/Resources/Images.xcassets/login-prologue-woo-mobile.imageset/prologue-dark.pdf b/WooCommerce/Resources/Images.xcassets/login-prologue-woo-mobile.imageset/prologue-dark.pdf deleted file mode 100644 index 62012fcddfd..00000000000 Binary files a/WooCommerce/Resources/Images.xcassets/login-prologue-woo-mobile.imageset/prologue-dark.pdf and /dev/null differ diff --git a/WooCommerce/Resources/Images.xcassets/login-prologue-woo-mobile.imageset/prologue-illustration.pdf b/WooCommerce/Resources/Images.xcassets/login-prologue-woo-mobile.imageset/prologue-illustration.pdf new file mode 100644 index 00000000000..699222ddc70 Binary files /dev/null and b/WooCommerce/Resources/Images.xcassets/login-prologue-woo-mobile.imageset/prologue-illustration.pdf differ diff --git a/WooCommerce/Resources/Images.xcassets/login-prologue-woo-mobile.imageset/prologue-light.pdf b/WooCommerce/Resources/Images.xcassets/login-prologue-woo-mobile.imageset/prologue-light.pdf deleted file mode 100644 index 3f713d72a99..00000000000 Binary files a/WooCommerce/Resources/Images.xcassets/login-prologue-woo-mobile.imageset/prologue-light.pdf and /dev/null differ diff --git a/WooCommerce/WooCommerce.xcodeproj/project.pbxproj b/WooCommerce/WooCommerce.xcodeproj/project.pbxproj index d5d0ff39124..a947f8fe6b8 100644 --- a/WooCommerce/WooCommerce.xcodeproj/project.pbxproj +++ b/WooCommerce/WooCommerce.xcodeproj/project.pbxproj @@ -1904,7 +1904,6 @@ B5A8532220BDBFAF00FAAB4D /* CircularImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5A8532120BDBFAE00FAAB4D /* CircularImageView.swift */; }; B5A8F8A920B84D3F00D211DE /* ApiCredentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5A8F8A720B84D3F00D211DE /* ApiCredentials.swift */; }; B5A8F8AD20B88D9900D211DE /* LoginPrologueViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5A8F8AC20B88D9900D211DE /* LoginPrologueViewController.swift */; }; - B5A8F8AF20B88DCC00D211DE /* LoginPrologueViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = B5A8F8AE20B88DCC00D211DE /* LoginPrologueViewController.xib */; }; B5AA7B3D20ED5D15004DA14F /* SessionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5AA7B3C20ED5D15004DA14F /* SessionManager.swift */; }; B5AA7B3F20ED81C2004DA14F /* UserDefaults+Woo.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5AA7B3E20ED81C2004DA14F /* UserDefaults+Woo.swift */; }; B5BBD6DE21B1703700E3207E /* PushNotificationsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5BBD6DD21B1703600E3207E /* PushNotificationsManager.swift */; }; @@ -5021,7 +5020,6 @@ B5A8F8A720B84D3F00D211DE /* ApiCredentials.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ApiCredentials.swift; path = DerivedSources/ApiCredentials.swift; sourceTree = SOURCE_ROOT; }; B5A8F8A820B84D3F00D211DE /* InfoPlist.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = InfoPlist.h; path = DerivedSources/InfoPlist.h; sourceTree = SOURCE_ROOT; }; B5A8F8AC20B88D9900D211DE /* LoginPrologueViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginPrologueViewController.swift; sourceTree = ""; }; - B5A8F8AE20B88DCC00D211DE /* LoginPrologueViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = LoginPrologueViewController.xib; sourceTree = ""; }; B5AA7B3C20ED5D15004DA14F /* SessionManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionManager.swift; sourceTree = ""; }; B5AA7B3E20ED81C2004DA14F /* UserDefaults+Woo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UserDefaults+Woo.swift"; sourceTree = ""; }; B5BBD6DD21B1703600E3207E /* PushNotificationsManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PushNotificationsManager.swift; sourceTree = ""; }; @@ -10666,7 +10664,6 @@ isa = PBXGroup; children = ( B5A8F8AC20B88D9900D211DE /* LoginPrologueViewController.swift */, - B5A8F8AE20B88DCC00D211DE /* LoginPrologueViewController.xib */, CC6923AB26010D8D002FB669 /* LoginProloguePageViewController.swift */, CC69236126010946002FB669 /* LoginProloguePages.swift */, 02FE1B9E287F51F400EC03B3 /* LoginOnboardingViewController.swift */, @@ -14263,7 +14260,6 @@ B560D68A2195BD100027BB7E /* NoteDetailsCommentTableViewCell.xib in Resources */, B9FBEF9B2A7BCCF100AC609B /* UnderlineableTitleAndSubtitleAndDetailTableViewCell.xib in Resources */, CE0F17D022A8105800964A63 /* ReadMoreTableViewCell.xib in Resources */, - B5A8F8AF20B88DCC00D211DE /* LoginPrologueViewController.xib in Resources */, 0262DA5923A23AC80029AF30 /* ProductShippingSettingsViewController.xib in Resources */, B5F571B021BF149D0010D1B8 /* o.caf in Resources */, 0212275E2449728A0042161F /* BottomSheetListSelectorSectionHeaderView.xib in Resources */,