From db3606a59a8d73dc435f355ad468d9ca158bca5f Mon Sep 17 00:00:00 2001 From: Jorge Leandro Perez Date: Mon, 28 May 2018 15:18:33 -0300 Subject: [PATCH 01/26] Style: Sorting alphabetically --- WooCommerce/Classes/Styles/Style.swift | 70 ++++++++++++++------------ 1 file changed, 38 insertions(+), 32 deletions(-) diff --git a/WooCommerce/Classes/Styles/Style.swift b/WooCommerce/Classes/Styles/Style.swift index db1c5614449..a68471830fd 100644 --- a/WooCommerce/Classes/Styles/Style.swift +++ b/WooCommerce/Classes/Styles/Style.swift @@ -4,37 +4,39 @@ import UIKit // MARK: - Style defines the basic API of a Woo Skin. // protocol Style { - var wooCommerceBrandColor: UIColor { get } + var buttonPrimaryColor: UIColor { get } + var buttonPrimaryHighlightedColor: UIColor { get } + var defaultTextColor: UIColor { get } + var sectionTitleColor: UIColor { get } var statusDangerColor: UIColor { get } var statusDangerBoldColor: UIColor { get } + var statusNotIdentifiedColor: UIColor { get } + var statusNotIdentifiedBoldColor: UIColor { get } var statusPrimaryColor: UIColor { get } var statusPrimaryBoldColor: UIColor { get } var statusSuccessColor: UIColor { get } var statusSuccessBoldColor: UIColor { get } - var statusNotIdentifiedColor: UIColor { get } - var statusNotIdentifiedBoldColor: UIColor { get } - var defaultTextColor: UIColor { get } - var sectionTitleColor: UIColor { get } - var buttonPrimaryColor: UIColor { get } - var buttonPrimaryHighlightedColor: UIColor { get } + var tableViewBackgroundColor: UIColor { get } + var wooCommerceBrandColor: UIColor { get } } // MARK: - WooCommerce's Default Style // class DefaultStyle: Style { - let wooCommerceBrandColor = UIColor(red: 0x96/255.0, green: 0x58/255.0, blue: 0x8A/255.0, alpha: 0xFF/255.0) + let buttonPrimaryColor = UIColor(red: 0x96/255.0, green: 0x58/255.0, blue: 0x8A/255.0, alpha: 0xFF/255.0) + let buttonPrimaryHighlightedColor = UIColor(red: 0x6E/255.0, green: 0x29/255.0, blue: 0x67/255.0, alpha: 0xFF/255.0) + let defaultTextColor = UIColor.black + let sectionTitleColor = UIColor.darkGray let statusDangerColor = UIColor(red: 255.0/255.0, green: 230.0/255.0, blue: 229.0/255.0, alpha: 1.0) let statusDangerBoldColor = UIColor(red: 255.0/255.0, green: 197.0/255.0, blue: 195.0/255.0, alpha: 1.0) + let statusNotIdentifiedColor = UIColor(red: 235.0/255.0, green: 235.0/255.0, blue: 235.0/255.0, alpha: 1.0) + let statusNotIdentifiedBoldColor = UIColor(red: 226.0/255.0, green: 226.0/255.0, blue: 226.0/255.0, alpha: 1.0) let statusPrimaryColor = UIColor(red: 244.0/255.0, green: 249.0/255.0, blue: 251.0/255.0, alpha: 1.0) let statusPrimaryBoldColor = UIColor(red: 188.0/255.0, green: 222.0/255.0, blue: 238.0/255.0, alpha: 1.0) let statusSuccessColor = UIColor(red: 239.00/255.0, green: 249.0/255.0, blue: 230.0/255.0, alpha: 1.0) let statusSuccessBoldColor = UIColor(red: 201.0/255.0, green: 233.0/255.0, blue: 169.0/255.0, alpha: 1.0) - let statusNotIdentifiedColor = UIColor(red: 235.0/255.0, green: 235.0/255.0, blue: 235.0/255.0, alpha: 1.0) - let statusNotIdentifiedBoldColor = UIColor(red: 226.0/255.0, green: 226.0/255.0, blue: 226.0/255.0, alpha: 1.0) - let defaultTextColor = UIColor.black - let sectionTitleColor = UIColor.darkGray - let buttonPrimaryColor = UIColor(red: 0x96/255.0, green: 0x58/255.0, blue: 0x8A/255.0, alpha: 0xFF/255.0) - let buttonPrimaryHighlightedColor = UIColor(red: 0x6E/255.0, green: 0x29/255.0, blue: 0x67/255.0, alpha: 0xFF/255.0) + let tableViewBackgroundColor = UIColor(red: 247.0/255.0, green: 247.0/255.0, blue: 247.0/255.0, alpha: 1.0) + let wooCommerceBrandColor = UIColor(red: 0x96/255.0, green: 0x58/255.0, blue: 0x8A/255.0, alpha: 0xFF/255.0) } @@ -55,8 +57,16 @@ class StyleManager { } } - static var wooCommerceBrandColor: UIColor { - return active.wooCommerceBrandColor + static var buttonPrimaryColor: UIColor { + return active.buttonPrimaryColor + } + + static var buttonPrimaryHighlightedColor: UIColor { + return active.buttonPrimaryHighlightedColor + } + + static var defaultTextColor: UIColor { + return active.defaultTextColor } static var statusDangerColor: UIColor { @@ -67,6 +77,14 @@ class StyleManager { return active.statusDangerBoldColor } + static var statusNotIdentifiedColor: UIColor { + return active.statusNotIdentifiedColor + } + + static var statusNotIdentifiedBoldColor: UIColor { + return active.statusNotIdentifiedBoldColor + } + static var statusPrimaryColor: UIColor { return active.statusPrimaryColor } @@ -83,27 +101,15 @@ class StyleManager { return active.statusSuccessBoldColor } - static var statusNotIdentifiedColor: UIColor { - return active.statusNotIdentifiedColor - } - - static var statusNotIdentifiedBoldColor: UIColor { - return active.statusNotIdentifiedBoldColor - } - - static var defaultTextColor: UIColor { - return active.defaultTextColor - } - static var sectionTitleColor: UIColor { return active.sectionTitleColor } - static var buttonPrimaryColor: UIColor { - return active.buttonPrimaryColor + static var tableViewBackgroundColor: UIColor { + return active.tableViewBackgroundColor } - static var buttonPrimaryHighlightedColor: UIColor { - return active.buttonPrimaryHighlightedColor + static var wooCommerceBrandColor: UIColor { + return active.wooCommerceBrandColor } } From aca4091830216f17b3426e57bd6bfb15f0a8f9d0 Mon Sep 17 00:00:00 2001 From: Jorge Leandro Perez Date: Mon, 28 May 2018 15:20:50 -0300 Subject: [PATCH 02/26] StorePickerViewController: Barebones --- .../AuthenticationManager.swift | 8 +-- .../Epilogue/StorePickerViewController.swift | 63 +++++++++++++++++ .../Epilogue/StorePickerViewController.xib | 69 +++++++++++++++++++ .../WooCommerce.xcodeproj/project.pbxproj | 16 +++++ 4 files changed, 152 insertions(+), 4 deletions(-) create mode 100644 WooCommerce/Classes/Authentication/Epilogue/StorePickerViewController.swift create mode 100644 WooCommerce/Classes/Authentication/Epilogue/StorePickerViewController.xib diff --git a/WooCommerce/Classes/Authentication/AuthenticationManager.swift b/WooCommerce/Classes/Authentication/AuthenticationManager.swift index d2b74995e2d..11ab1695e89 100644 --- a/WooCommerce/Classes/Authentication/AuthenticationManager.swift +++ b/WooCommerce/Classes/Authentication/AuthenticationManager.swift @@ -114,7 +114,8 @@ extension AuthenticationManager: WordPressAuthenticatorDelegate { /// Presents the Login Epilogue, in the specified NavigationController. /// func presentLoginEpilogue(in navigationController: UINavigationController, for credentials: WordPressCredentials, onDismiss: @escaping () -> Void) { - // TODO: Wire Store Picker + let pickerViewController = StorePickerViewController() + navigationController.pushViewController(pickerViewController, animated: true) } /// Presents the Signup Epilogue, in the specified NavigationController. @@ -123,11 +124,10 @@ extension AuthenticationManager: WordPressAuthenticatorDelegate { // NO-OP: The current WC version does not support Signup. } - /// Indicates if the Login Epilogue should be presented. This is false only when we're doing a Jetpack Connect, and the new - /// WordPress.com account has no sites. Capicci? + /// Indicates if the Login Epilogue should be presented. /// func shouldPresentLoginEpilogue(isJetpackLogin: Bool) -> Bool { - return false + return true } /// Indicates if the Signup Epilogue should be displayed. diff --git a/WooCommerce/Classes/Authentication/Epilogue/StorePickerViewController.swift b/WooCommerce/Classes/Authentication/Epilogue/StorePickerViewController.swift new file mode 100644 index 00000000000..0765969b117 --- /dev/null +++ b/WooCommerce/Classes/Authentication/Epilogue/StorePickerViewController.swift @@ -0,0 +1,63 @@ +import Foundation +import UIKit + + +/// +/// +class StorePickerViewController: UIViewController { + + /// White-Background View, to be placed surrounding the bottom area. + /// + @IBOutlet var backgroundView: UIView! + + /// Default Action Button. + /// + @IBOutlet var continueButton: UIButton! + + + // MARK: - Overriden Methods + + override func viewDidLoad() { + super.viewDidLoad() + + setupMainView() + setupBackgroundView() + setupContinueButton() + } + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + navigationController?.setNavigationBarHidden(true, animated: animated) + } +} + + +// MARK: - Initialization Methods +// +private extension StorePickerViewController { + + func setupMainView() { + view.backgroundColor = StyleManager.tableViewBackgroundColor + } + + func setupBackgroundView() { + backgroundView.layer.masksToBounds = false + backgroundView.layer.shadowOpacity = 0.2 + } + + func setupContinueButton() { + continueButton.backgroundColor = .clear + } +} + + +// MARK: - Action Handlers +// +extension StorePickerViewController { + + /// Proceeds with the Login Flow. + /// + @IBAction func continueWasPressed() { + dismiss(animated: true, completion: nil) + } +} diff --git a/WooCommerce/Classes/Authentication/Epilogue/StorePickerViewController.xib b/WooCommerce/Classes/Authentication/Epilogue/StorePickerViewController.xib new file mode 100644 index 00000000000..d5e9b1a8b87 --- /dev/null +++ b/WooCommerce/Classes/Authentication/Epilogue/StorePickerViewController.xib @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WooCommerce/WooCommerce.xcodeproj/project.pbxproj b/WooCommerce/WooCommerce.xcodeproj/project.pbxproj index 0838e1b9398..475d42c2bab 100644 --- a/WooCommerce/WooCommerce.xcodeproj/project.pbxproj +++ b/WooCommerce/WooCommerce.xcodeproj/project.pbxproj @@ -48,6 +48,8 @@ B5D1AFB820BC510200DB0E8C /* UIImage+Woo.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D1AFB720BC510200DB0E8C /* UIImage+Woo.swift */; }; B5D1AFBA20BC515600DB0E8C /* UIColor+Woo.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D1AFB920BC515600DB0E8C /* UIColor+Woo.swift */; }; B5D1AFC020BC67C200DB0E8C /* WooConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D1AFBF20BC67C200DB0E8C /* WooConstants.swift */; }; + B5D1AFC620BC7B7300DB0E8C /* StorePickerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D1AFC520BC7B7300DB0E8C /* StorePickerViewController.swift */; }; + B5D1AFC820BC7B9600DB0E8C /* StorePickerViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = B5D1AFC720BC7B9600DB0E8C /* StorePickerViewController.xib */; }; B5EE26C020A5EE6600468622 /* Storage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B5EE26BF20A5EE6600468622 /* Storage.framework */; }; B5EE26C120A5EE8100468622 /* Storage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B5EE26BF20A5EE6600468622 /* Storage.framework */; }; B5EE26C220A5EE8100468622 /* Storage.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = B5EE26BF20A5EE6600468622 /* Storage.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; @@ -151,6 +153,8 @@ B5D1AFB720BC510200DB0E8C /* UIImage+Woo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIImage+Woo.swift"; sourceTree = ""; }; B5D1AFB920BC515600DB0E8C /* UIColor+Woo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIColor+Woo.swift"; sourceTree = ""; }; B5D1AFBF20BC67C200DB0E8C /* WooConstants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WooConstants.swift; sourceTree = ""; }; + B5D1AFC520BC7B7300DB0E8C /* StorePickerViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StorePickerViewController.swift; sourceTree = ""; }; + B5D1AFC720BC7B9600DB0E8C /* StorePickerViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = StorePickerViewController.xib; sourceTree = ""; }; B5EE26BF20A5EE6600468622 /* Storage.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Storage.framework; sourceTree = BUILT_PRODUCTS_DIR; }; CE17C2E020ACA06800AFBD20 /* BillingDetailsTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BillingDetailsTableViewCell.swift; sourceTree = ""; }; CE17C2E120ACA06800AFBD20 /* BillingDetailsTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = BillingDetailsTableViewCell.xib; sourceTree = ""; }; @@ -249,6 +253,7 @@ isa = PBXGroup; children = ( B5A8F8AB20B88D8400D211DE /* Prologue */, + B5D1AFC420BC7B3000DB0E8C /* Epilogue */, B55D4C0520B6027100D7A50F /* AuthenticationManager.swift */, ); path = Authentication; @@ -365,6 +370,15 @@ path = System; sourceTree = ""; }; + B5D1AFC420BC7B3000DB0E8C /* Epilogue */ = { + isa = PBXGroup; + children = ( + B5D1AFC520BC7B7300DB0E8C /* StorePickerViewController.swift */, + B5D1AFC720BC7B9600DB0E8C /* StorePickerViewController.xib */, + ); + path = Epilogue; + sourceTree = ""; + }; CE1CCB3E2056F204000EE3AC /* Styles */ = { isa = PBXGroup; children = ( @@ -541,6 +555,7 @@ files = ( B56DB3D72049BFAA00D4AA8E /* LaunchScreen.storyboard in Resources */, B5A8F8AF20B88DCC00D211DE /* LoginPrologueViewController.xib in Resources */, + B5D1AFC820BC7B9600DB0E8C /* StorePickerViewController.xib in Resources */, CED6021E20B35FDF0032C639 /* NoResultsTableViewCell.xib in Resources */, CEE006012077CA820079161F /* order-915.json in Resources */, B557DA1620979904005962F4 /* CustomerNoteTableViewCell.xib in Resources */, @@ -695,6 +710,7 @@ CE263DE6206ACD220015A693 /* NotificationsViewController.swift in Sources */, B50911312049E27A007D25DC /* OrdersViewController.swift in Sources */, B5A8F8AD20B88D9900D211DE /* LoginPrologueViewController.swift in Sources */, + B5D1AFC620BC7B7300DB0E8C /* StorePickerViewController.swift in Sources */, B5A8F8A920B84D3F00D211DE /* ApiCredentials.swift in Sources */, CE17C2E220ACA06800AFBD20 /* BillingDetailsTableViewCell.swift in Sources */, B55D4C2720B717C000D7A50F /* UserAgent.swift in Sources */, From bbf0e54a15a97973f370e7ebb43d2f7e1a81276e Mon Sep 17 00:00:00 2001 From: Jorge Leandro Perez Date: Tue, 29 May 2018 13:08:04 -0300 Subject: [PATCH 03/26] Fixing merge issue --- WooCommerce/Classes/Authentication/AuthenticationManager.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WooCommerce/Classes/Authentication/AuthenticationManager.swift b/WooCommerce/Classes/Authentication/AuthenticationManager.swift index e418c9863a6..d6ef1e9fb26 100644 --- a/WooCommerce/Classes/Authentication/AuthenticationManager.swift +++ b/WooCommerce/Classes/Authentication/AuthenticationManager.swift @@ -29,7 +29,7 @@ class AuthenticationManager { /// func displayAuthentication(from presenter: UIViewController) { let prologueViewController = LoginPrologueViewController() - let navigationController = LoginNavigationController(rootViewController: loginViewController) + let navigationController = LoginNavigationController(rootViewController: prologueViewController) presenter.present(navigationController, animated: true, completion: nil) } From fa5dc45aa1ee184ce7ebb21f0f244eba0a33a2cd Mon Sep 17 00:00:00 2001 From: Jorge Leandro Perez Date: Tue, 29 May 2018 14:02:03 -0300 Subject: [PATCH 04/26] Assets: Adding Gravatar Placeholder --- WooCommerce/Classes/Extensions/UIImage+Woo.swift | 6 ++++++ .../gravatar.imageset/Contents.json | 12 ++++++++++++ .../gravatar.imageset/gravatar.pdf | Bin 0 -> 4019 bytes 3 files changed, 18 insertions(+) create mode 100644 WooCommerce/Resources/Images.xcassets/gravatar.imageset/Contents.json create mode 100644 WooCommerce/Resources/Images.xcassets/gravatar.imageset/gravatar.pdf diff --git a/WooCommerce/Classes/Extensions/UIImage+Woo.swift b/WooCommerce/Classes/Extensions/UIImage+Woo.swift index b76dc6c02ee..6a80d7cd634 100644 --- a/WooCommerce/Classes/Extensions/UIImage+Woo.swift +++ b/WooCommerce/Classes/Extensions/UIImage+Woo.swift @@ -6,6 +6,12 @@ import UIKit /// extension UIImage { + /// Gravatar Placeholder Image + /// + static var gravatarPlaceholderImage: UIImage { + return UIImage(named: "gravatar")! + } + /// Jetpack Logo Image /// static var jetpackLogoImage: UIImage { diff --git a/WooCommerce/Resources/Images.xcassets/gravatar.imageset/Contents.json b/WooCommerce/Resources/Images.xcassets/gravatar.imageset/Contents.json new file mode 100644 index 00000000000..f88b1cfea8b --- /dev/null +++ b/WooCommerce/Resources/Images.xcassets/gravatar.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "gravatar.pdf" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/WooCommerce/Resources/Images.xcassets/gravatar.imageset/gravatar.pdf b/WooCommerce/Resources/Images.xcassets/gravatar.imageset/gravatar.pdf new file mode 100644 index 0000000000000000000000000000000000000000..fc7f61013b8cf432c2746ba1d6758b6412cf7b12 GIT binary patch literal 4019 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

~|`VwSBoabM#=$stcex;2wqtRk?wCAx=n z#~2LMo_)IZ)Mh1kyfE=jVvYo?u)FY2r;v)xiXL@QOk~+97MDm-))*HTUG&c-pvo=aG)p4$2LL zJ;M8%L%r9xu&<4XFD@L#q5UP6AF9uLTQ$~<{#8F0>jt>#3@&wQcgElZN8BTadyO6# zmDOKyEMJ^#Rj*bz8YM|}S#Y?%bUoy{Fl1j|?EE2F*t+{K+s@CCpAAGm#?OtI1zg@5 zdc7X9Kzg|TkmCKxi^con&`iy$X{xQ6_28S5PgcbfuUE2HDr+y#*I&X|T)o2S6l)h- zAzSd2bhgwP-IqU`I~yzzn>I|w1I5IjE{jjYm_FA7}?|^)Pe4<=aOnmE;v8!$Polk#h z_#Z5qF@)t*Z-Nw#BbPt7Z5~_9U{@OSjSP4+BfgWl{``%3q9!qruU5%_14hks0hCBGna{|nu_ta=_O?) z!=1s&rPj;Uo`oMsl&=?)iyTUjR*C`X0i=bnotXZkwHbG9=5IL7JX>@l&3KgW+#M^v zUC$ISwQWU_8D6gmn7F;0F31?QZ~KdMz5lNDN9CD-;hk>gLQZRy*M15+jyu@-v21a$ z!KsW#D#bf}n*;WRq_z1616Ro9e>lX3RcXlVCT*1(G&7M4$)~j|v}e)9Xma#c^pM|^ zwUo^K>|7iHe?rjQ(LJ6e`py5~|=&JGvUBe(n4-KOlO$9ue;7W48W zhl}b})`NGlDA={OxS4r_O@pM&7!~j9tY24r#N6yBM>axMDgUNw8inqmv>a6SC#=%= zm8MZ4S64$r9Yes`0W^R$2CRNAp`rCpCjN)K3ICg=X^?!4%HvQ#M$gHPK!s=7@6mn% zWGD^2e~+kvA!1zd4&R}k@Pp?6L24-U#~UZlVX%OK31A99A<|H&v@BqB4dY4l1E_?) zhx$H5iJ$w1(lXQ1oYXuc3xUc(pim?Pf{=y5%^?tR>iN&gU-m<#e!FW}s!7|+Np%bw zRBuLf!nCM3(wl|E0m;RCn`V8eEQQqJGz4vT{^^^ScH?!2X?A7XGhw zFqp!>^1|S-|DjPm)!#XYo){-roadesHgWQ!){km{jPZEte9&fqT1Z`YdpvbmzTaz7 z$3;mFi$mHYpm19R9Ez2L%fsLh7y^m3Ln0wC1$nF;3jF_ Date: Tue, 29 May 2018 14:05:20 -0300 Subject: [PATCH 05/26] Implements CircularImageView --- .../ReusableViews/CircularImageView.swift | 24 +++++++++++++++++++ .../WooCommerce.xcodeproj/project.pbxproj | 12 ++++++++++ 2 files changed, 36 insertions(+) create mode 100644 WooCommerce/Classes/ViewRelated/ReusableViews/CircularImageView.swift diff --git a/WooCommerce/Classes/ViewRelated/ReusableViews/CircularImageView.swift b/WooCommerce/Classes/ViewRelated/ReusableViews/CircularImageView.swift new file mode 100644 index 00000000000..2443841c37f --- /dev/null +++ b/WooCommerce/Classes/ViewRelated/ReusableViews/CircularImageView.swift @@ -0,0 +1,24 @@ +import Foundation +import UIKit + + +/// UIImageView with a circular shape. +/// +class CircularImageView: UIImageView { + + override var frame: CGRect { + didSet { + refreshRadius() + } + } + + override func layoutSubviews() { + super.layoutSubviews() + refreshRadius() + } + + private func refreshRadius() { + layer.cornerRadius = frame.width * 0.5 + layer.masksToBounds = true + } +} diff --git a/WooCommerce/WooCommerce.xcodeproj/project.pbxproj b/WooCommerce/WooCommerce.xcodeproj/project.pbxproj index 290ee8b40d3..cb067510e8f 100644 --- a/WooCommerce/WooCommerce.xcodeproj/project.pbxproj +++ b/WooCommerce/WooCommerce.xcodeproj/project.pbxproj @@ -41,6 +41,7 @@ B56DB3D22049BFAA00D4AA8E /* WooCommerce.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = B56DB3D02049BFAA00D4AA8E /* WooCommerce.xcdatamodeld */; }; B56DB3D42049BFAA00D4AA8E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B56DB3D32049BFAA00D4AA8E /* Assets.xcassets */; }; B56DB3D72049BFAA00D4AA8E /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B56DB3D52049BFAA00D4AA8E /* LaunchScreen.storyboard */; }; + 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 */; }; @@ -149,6 +150,7 @@ B56DB3D82049BFAA00D4AA8E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; B56DB3DD2049BFAA00D4AA8E /* WooCommerceTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = WooCommerceTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; B56DB3E32049BFAA00D4AA8E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B5A8532120BDBFAE00FAAB4D /* CircularImageView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CircularImageView.swift; sourceTree = ""; }; 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 = ""; }; @@ -325,6 +327,7 @@ B56DB3F12049C0B800D4AA8E /* Classes */ = { isa = PBXGroup; children = ( + B5A8532020BDBF9700FAAB4D /* New Group */, B55D4C2220B716CE00D7A50F /* Tools */, B55D4C0420B6026700D7A50F /* Authentication */, CE1CCB4C20572444000EE3AC /* Extensions */, @@ -352,6 +355,13 @@ path = Resources; sourceTree = ""; }; + B5A8532020BDBF9700FAAB4D /* New Group */ = { + isa = PBXGroup; + children = ( + ); + path = "New Group"; + sourceTree = ""; + }; B5A8F8A620B84CF600D211DE /* DerivedSources */ = { isa = PBXGroup; children = ( @@ -432,6 +442,7 @@ CED6021A20B35FBF0032C639 /* ReusableViews */ = { isa = PBXGroup; children = ( + B5A8532120BDBFAE00FAAB4D /* CircularImageView.swift */, CED6021B20B35FDF0032C639 /* NoResultsTableViewCell.swift */, CED6021C20B35FDF0032C639 /* NoResultsTableViewCell.xib */, ); @@ -738,6 +749,7 @@ CE1F512B206985DF00C6C810 /* PaddedLabel.swift in Sources */, B557DA1520979904005962F4 /* CustomerNoteTableViewCell.swift in Sources */, CE855366209BA6A700938BDC /* CustomerInfoTableViewCell.swift in Sources */, + B5A8532220BDBFAF00FAAB4D /* CircularImageView.swift in Sources */, CE1F51252064179A00C6C810 /* UILabel+Helpers.swift in Sources */, B50911302049E27A007D25DC /* DashboardViewController.swift in Sources */, B5D1AFB820BC510200DB0E8C /* UIImage+Woo.swift in Sources */, From 59cb416fff500d4f5261613098b3dd6895fc2f51 Mon Sep 17 00:00:00 2001 From: Jorge Leandro Perez Date: Tue, 29 May 2018 14:30:38 -0300 Subject: [PATCH 06/26] StorePickerViewController: Adding new outlets --- .../AuthenticationManager.swift | 1 + .../Epilogue/StorePickerViewController.swift | 72 +++++++++++++++---- .../Epilogue/StorePickerViewController.xib | 38 +++++++++- 3 files changed, 95 insertions(+), 16 deletions(-) diff --git a/WooCommerce/Classes/Authentication/AuthenticationManager.swift b/WooCommerce/Classes/Authentication/AuthenticationManager.swift index ab97ef6a99b..ecebe932771 100644 --- a/WooCommerce/Classes/Authentication/AuthenticationManager.swift +++ b/WooCommerce/Classes/Authentication/AuthenticationManager.swift @@ -115,6 +115,7 @@ extension AuthenticationManager: WordPressAuthenticatorDelegate { /// func presentLoginEpilogue(in navigationController: UINavigationController, for credentials: WordPressCredentials, onDismiss: @escaping () -> Void) { let pickerViewController = StorePickerViewController() + pickerViewController.credentials = credentials navigationController.pushViewController(pickerViewController, animated: true) } diff --git a/WooCommerce/Classes/Authentication/Epilogue/StorePickerViewController.swift b/WooCommerce/Classes/Authentication/Epilogue/StorePickerViewController.swift index 0765969b117..f2ad89ad399 100644 --- a/WooCommerce/Classes/Authentication/Epilogue/StorePickerViewController.swift +++ b/WooCommerce/Classes/Authentication/Epilogue/StorePickerViewController.swift @@ -1,34 +1,75 @@ import Foundation import UIKit +import WordPressAuthenticator -/// +/// Allows the user to pick which WordPress.com (OR) Jetpack-Connected-Store we should set up as the Main Store. /// class StorePickerViewController: UIViewController { /// White-Background View, to be placed surrounding the bottom area. /// - @IBOutlet var backgroundView: UIView! + @IBOutlet private var backgroundView: UIView! { + didSet { + backgroundView.layer.masksToBounds = false + backgroundView.layer.shadowOpacity = Constants.backgroundShadowOpacity + } + } + + /// Spinner, to be displayed while the User Details are being retrieved. + /// + @IBOutlet private var activityIndicator: UIActivityIndicatorView! + + /// Account's Gravatar. + /// + @IBOutlet private var gravatarImageView: UIImageView! { + didSet { + gravatarImageView.image = .gravatarPlaceholderImage + } + } + + /// Account's Full Name. + /// + @IBOutlet private var fullnameLabel: UILabel! + + /// Account's Username. + /// + @IBOutlet private var usernameLabel: UILabel! /// Default Action Button. /// - @IBOutlet var continueButton: UIButton! + @IBOutlet private var continueButton: UIButton! { + didSet { + continueButton.backgroundColor = .clear + } + } + + /// + /// + var credentials: WordPressCredentials! + + /// Closure to be executed upon dismissal. + /// + var onDismiss: (() -> Void)? + // MARK: - Overriden Methods override func viewDidLoad() { super.viewDidLoad() - setupMainView() - setupBackgroundView() - setupContinueButton() } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) navigationController?.setNavigationBarHidden(true, animated: animated) } + + override func viewWillDisappear(_ animated: Bool) { + super.viewWillDisappear(animated) + onDismiss?() + } } @@ -39,15 +80,6 @@ private extension StorePickerViewController { func setupMainView() { view.backgroundColor = StyleManager.tableViewBackgroundColor } - - func setupBackgroundView() { - backgroundView.layer.masksToBounds = false - backgroundView.layer.shadowOpacity = 0.2 - } - - func setupContinueButton() { - continueButton.backgroundColor = .clear - } } @@ -61,3 +93,13 @@ extension StorePickerViewController { dismiss(animated: true, completion: nil) } } + + +// MARK: - Nested Types +// +extension StorePickerViewController { + + struct Constants { + static let backgroundShadowOpacity = Float(0.2) + } +} diff --git a/WooCommerce/Classes/Authentication/Epilogue/StorePickerViewController.xib b/WooCommerce/Classes/Authentication/Epilogue/StorePickerViewController.xib index d5e9b1a8b87..b102306a910 100644 --- a/WooCommerce/Classes/Authentication/Epilogue/StorePickerViewController.xib +++ b/WooCommerce/Classes/Authentication/Epilogue/StorePickerViewController.xib @@ -11,8 +11,12 @@ + + + + @@ -51,15 +55,47 @@ + + + + + + + + + + - + + + + + + + + + + + From 8443b73613f14d502af5b60cf71632e4549b625e Mon Sep 17 00:00:00 2001 From: Jorge Leandro Perez Date: Wed, 30 May 2018 10:28:16 -0300 Subject: [PATCH 07/26] StorePickerViewController: Fixing Hound Warnings --- .../Authentication/Epilogue/StorePickerViewController.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WooCommerce/Classes/Authentication/Epilogue/StorePickerViewController.swift b/WooCommerce/Classes/Authentication/Epilogue/StorePickerViewController.swift index f2ad89ad399..f58e8ddd168 100644 --- a/WooCommerce/Classes/Authentication/Epilogue/StorePickerViewController.swift +++ b/WooCommerce/Classes/Authentication/Epilogue/StorePickerViewController.swift @@ -10,7 +10,7 @@ class StorePickerViewController: UIViewController { /// White-Background View, to be placed surrounding the bottom area. /// @IBOutlet private var backgroundView: UIView! { - didSet { + didSet { backgroundView.layer.masksToBounds = false backgroundView.layer.shadowOpacity = Constants.backgroundShadowOpacity } From 585f133d02be648c315ce8dbaab955e2e9feb72f Mon Sep 17 00:00:00 2001 From: Jorge Leandro Perez Date: Wed, 27 Jun 2018 16:40:39 -0300 Subject: [PATCH 08/26] Style: Fixing Hound Warning --- WooCommerce/Classes/Styles/Style.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WooCommerce/Classes/Styles/Style.swift b/WooCommerce/Classes/Styles/Style.swift index 4fbc29c33e4..cd77a873610 100644 --- a/WooCommerce/Classes/Styles/Style.swift +++ b/WooCommerce/Classes/Styles/Style.swift @@ -121,7 +121,7 @@ class StyleManager { return active.sectionTitleColor } - static var tableViewBackgroundColor: UIColor { + static var tableViewBackgroundColor: UIColor { return active.tableViewBackgroundColor } From 5d5ce869026fef63875eb45a001e684374d92edc Mon Sep 17 00:00:00 2001 From: Jorge Leandro Perez Date: Fri, 29 Jun 2018 10:06:27 -0300 Subject: [PATCH 09/26] Project: Fixing Merge Glitch --- WooCommerce/WooCommerce.xcodeproj/project.pbxproj | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/WooCommerce/WooCommerce.xcodeproj/project.pbxproj b/WooCommerce/WooCommerce.xcodeproj/project.pbxproj index 248ec5945bc..f8c58e87a44 100644 --- a/WooCommerce/WooCommerce.xcodeproj/project.pbxproj +++ b/WooCommerce/WooCommerce.xcodeproj/project.pbxproj @@ -170,9 +170,9 @@ B56DB3D82049BFAA00D4AA8E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; B56DB3DD2049BFAA00D4AA8E /* WooCommerceTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = WooCommerceTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; B56DB3E32049BFAA00D4AA8E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - B5A8532120BDBFAE00FAAB4D /* CircularImageView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CircularImageView.swift; sourceTree = ""; }; B59F38DF20D40A24008C1829 /* WooCommerce.debug.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = WooCommerce.debug.entitlements; sourceTree = ""; }; B59F38E020D40A24008C1829 /* WooCommerce.release.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = WooCommerce.release.entitlements; sourceTree = ""; }; + B5A8532120BDBFAE00FAAB4D /* CircularImageView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CircularImageView.swift; sourceTree = ""; }; 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 = ""; }; @@ -378,7 +378,6 @@ B56DB3F12049C0B800D4AA8E /* Classes */ = { isa = PBXGroup; children = ( - B5A8532020BDBF9700FAAB4D /* New Group */, B55D4C2220B716CE00D7A50F /* Tools */, B55D4C0420B6026700D7A50F /* Authentication */, CE1CCB4C20572444000EE3AC /* Extensions */, @@ -409,13 +408,6 @@ path = Resources; sourceTree = ""; }; - B5A8532020BDBF9700FAAB4D /* New Group */ = { - isa = PBXGroup; - children = ( - ); - path = "New Group"; - sourceTree = ""; - }; B5A8F8A620B84CF600D211DE /* DerivedSources */ = { isa = PBXGroup; children = ( From ed453ea1b7c1781486c40e93e75b9a365f7413f4 Mon Sep 17 00:00:00 2001 From: Jorge Leandro Perez Date: Fri, 29 Jun 2018 14:27:48 -0300 Subject: [PATCH 10/26] Style: Nuking duplicated properties --- WooCommerce/Classes/Styles/Style.swift | 4 ---- 1 file changed, 4 deletions(-) diff --git a/WooCommerce/Classes/Styles/Style.swift b/WooCommerce/Classes/Styles/Style.swift index cd77a873610..ddbb60e1b99 100644 --- a/WooCommerce/Classes/Styles/Style.swift +++ b/WooCommerce/Classes/Styles/Style.swift @@ -22,8 +22,6 @@ protocol Style { var statusNotIdentifiedBoldColor: UIColor { get } var defaultTextColor: UIColor { get } var sectionTitleColor: UIColor { get } - var buttonPrimaryColor: UIColor { get } - var buttonPrimaryHighlightedColor: UIColor { get } var cellSeparatorColor: UIColor { get } var wooGreyMid: UIColor { get } } @@ -49,8 +47,6 @@ class DefaultStyle: Style { let statusNotIdentifiedBoldColor = UIColor(red: 226.0/255.0, green: 226.0/255.0, blue: 226.0/255.0, alpha: 1.0) let defaultTextColor = UIColor.black let sectionTitleColor = UIColor.darkGray - let buttonPrimaryColor = UIColor(red: 0x96/255.0, green: 0x58/255.0, blue: 0x8A/255.0, alpha: 0xFF/255.0) - let buttonPrimaryHighlightedColor = UIColor(red: 0x6E/255.0, green: 0x29/255.0, blue: 0x67/255.0, alpha: 0xFF/255.0) let cellSeparatorColor = UIColor.lightGray let wooGreyMid = UIColor(red: 150.0/255.0, green: 150.0/255.0, blue: 150.0/255.0, alpha: 1.0) } From 0aaca653bb036ddeccd4759fb4617aaa123ede60 Mon Sep 17 00:00:00 2001 From: Jorge Leandro Perez Date: Fri, 29 Jun 2018 14:29:02 -0300 Subject: [PATCH 11/26] Style: Nukes (more) duplicated properties --- WooCommerce/Classes/Styles/Style.swift | 8 -------- 1 file changed, 8 deletions(-) diff --git a/WooCommerce/Classes/Styles/Style.swift b/WooCommerce/Classes/Styles/Style.swift index ddbb60e1b99..d34f7c1f457 100644 --- a/WooCommerce/Classes/Styles/Style.swift +++ b/WooCommerce/Classes/Styles/Style.swift @@ -18,10 +18,6 @@ protocol Style { var statusSuccessBoldColor: UIColor { get } var tableViewBackgroundColor: UIColor { get } var wooCommerceBrandColor: UIColor { get } - var statusNotIdentifiedColor: UIColor { get } - var statusNotIdentifiedBoldColor: UIColor { get } - var defaultTextColor: UIColor { get } - var sectionTitleColor: UIColor { get } var cellSeparatorColor: UIColor { get } var wooGreyMid: UIColor { get } } @@ -43,10 +39,6 @@ class DefaultStyle: Style { let statusSuccessBoldColor = UIColor(red: 201.0/255.0, green: 233.0/255.0, blue: 169.0/255.0, alpha: 1.0) let tableViewBackgroundColor = UIColor(red: 247.0/255.0, green: 247.0/255.0, blue: 247.0/255.0, alpha: 1.0) let wooCommerceBrandColor = UIColor(red: 0x96/255.0, green: 0x58/255.0, blue: 0x8A/255.0, alpha: 0xFF/255.0) - let statusNotIdentifiedColor = UIColor(red: 235.0/255.0, green: 235.0/255.0, blue: 235.0/255.0, alpha: 1.0) - let statusNotIdentifiedBoldColor = UIColor(red: 226.0/255.0, green: 226.0/255.0, blue: 226.0/255.0, alpha: 1.0) - let defaultTextColor = UIColor.black - let sectionTitleColor = UIColor.darkGray let cellSeparatorColor = UIColor.lightGray let wooGreyMid = UIColor(red: 150.0/255.0, green: 150.0/255.0, blue: 150.0/255.0, alpha: 1.0) } From 15cd443883920ea27bc7511ecaafa186dcb5945a Mon Sep 17 00:00:00 2001 From: Jorge Leandro Perez Date: Tue, 10 Jul 2018 12:44:23 -0300 Subject: [PATCH 12/26] AccountStore: Fixing merge issue --- Yosemite/Yosemite/Stores/AccountStore.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Yosemite/Yosemite/Stores/AccountStore.swift b/Yosemite/Yosemite/Stores/AccountStore.swift index 819c846963e..22377c83c60 100644 --- a/Yosemite/Yosemite/Stores/AccountStore.swift +++ b/Yosemite/Yosemite/Stores/AccountStore.swift @@ -73,7 +73,7 @@ private extension AccountStore { /// Loads the Account associated with the specified userID (if any!). /// func loadAccount(userID: Int, onCompletion: @escaping (Account?) -> Void) { - let account = loadStoredAccount(userId: userID)?.toReadOnly() + let account = storageManager.viewStorage.loadAccount(userId: userID)?.toReadOnly() onCompletion(account) } } From 3f2b8a730738f07d3d42422c7a9c605b3a7bbb75 Mon Sep 17 00:00:00 2001 From: Jorge Leandro Perez Date: Tue, 10 Jul 2018 15:59:03 -0300 Subject: [PATCH 13/26] StorePickerViewController: Adding Placeholder --- .../Epilogue/StorePickerViewController.swift | 54 ++++++++++++++----- .../Epilogue/StorePickerViewController.xib | 46 +++++++++------- 2 files changed, 70 insertions(+), 30 deletions(-) diff --git a/WooCommerce/Classes/Authentication/Epilogue/StorePickerViewController.swift b/WooCommerce/Classes/Authentication/Epilogue/StorePickerViewController.swift index f58e8ddd168..8e782666c82 100644 --- a/WooCommerce/Classes/Authentication/Epilogue/StorePickerViewController.swift +++ b/WooCommerce/Classes/Authentication/Epilogue/StorePickerViewController.swift @@ -1,6 +1,7 @@ import Foundation import UIKit import WordPressAuthenticator +import WordPressUI /// Allows the user to pick which WordPress.com (OR) Jetpack-Connected-Store we should set up as the Main Store. @@ -9,17 +10,13 @@ class StorePickerViewController: UIViewController { /// White-Background View, to be placed surrounding the bottom area. /// - @IBOutlet private var backgroundView: UIView! { + @IBOutlet private var buttonBackgroundView: UIView! { didSet { - backgroundView.layer.masksToBounds = false - backgroundView.layer.shadowOpacity = Constants.backgroundShadowOpacity + buttonBackgroundView.layer.masksToBounds = false + buttonBackgroundView.layer.shadowOpacity = Constants.backgroundShadowOpacity } } - /// Spinner, to be displayed while the User Details are being retrieved. - /// - @IBOutlet private var activityIndicator: UIActivityIndicatorView! - /// Account's Gravatar. /// @IBOutlet private var gravatarImageView: UIImageView! { @@ -34,7 +31,24 @@ class StorePickerViewController: UIViewController { /// Account's Username. /// - @IBOutlet private var usernameLabel: UILabel! + @IBOutlet private var usernameLabel: UILabel! { + didSet { + usernameLabel.textColor = StyleManager.wooGreyTextMin + } + } + + /// No Results Placeholder Image + /// + @IBOutlet private var noResultsImageView: UIImageView! + + /// No Results Placeholder Text + /// + @IBOutlet private var noResultsLabel: UILabel! { + didSet { + noResultsLabel.font = UIFont.font(forStyle: .subheadline, weight: .regular) + noResultsLabel.textColor = StyleManager.wooGreyTextMin + } + } /// Default Action Button. /// @@ -44,10 +58,6 @@ class StorePickerViewController: UIViewController { } } - /// - /// - var credentials: WordPressCredentials! - /// Closure to be executed upon dismissal. /// var onDismiss: (() -> Void)? @@ -58,7 +68,10 @@ class StorePickerViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() + setupMainView() + setupAccountDetails() + downloadGravatarImage() } override func viewWillAppear(_ animated: Bool) { @@ -80,6 +93,23 @@ private extension StorePickerViewController { func setupMainView() { view.backgroundColor = StyleManager.tableViewBackgroundColor } + + func downloadGravatarImage() { + guard let targetURL = StoresManager.shared.sessionManager.defaultAccount?.gravatarUrl, let gravatarURL = URL(string: targetURL) else { + return + } + + gravatarImageView.downloadImage(from: gravatarURL, placeholderImage: .gravatarPlaceholderImage) + } + + func setupAccountDetails() { + guard let defaultAccount = StoresManager.shared.sessionManager.defaultAccount else { + return + } + + fullnameLabel.text = defaultAccount.displayName + usernameLabel.text = "@" + defaultAccount.username + } } diff --git a/WooCommerce/Classes/Authentication/Epilogue/StorePickerViewController.xib b/WooCommerce/Classes/Authentication/Epilogue/StorePickerViewController.xib index b102306a910..8965a38905e 100644 --- a/WooCommerce/Classes/Authentication/Epilogue/StorePickerViewController.xib +++ b/WooCommerce/Classes/Authentication/Epilogue/StorePickerViewController.xib @@ -1,21 +1,23 @@ - + + - - + + + @@ -25,11 +27,7 @@ - - - - - +