@@ -45,78 +45,81 @@ struct SignInWithOAuth: View {
4545 }
4646}
4747
48- final class SignInWithOAuthViewController : UIViewController , UIPickerViewDataSource ,
49- UIPickerViewDelegate
50- {
51- let providers = Provider . allCases
52- var provider = Provider . allCases [ 0 ]
48+ #if canImport(UIKit)
49+ final class SignInWithOAuthViewController : UIViewController , UIPickerViewDataSource ,
50+ UIPickerViewDelegate
51+ {
52+ let providers = Provider . allCases
53+ var provider = Provider . allCases [ 0 ]
54+
55+ let providerPicker = UIPickerView ( )
56+ let signInButton = UIButton ( type: . system)
57+
58+ override func viewDidLoad( ) {
59+ super. viewDidLoad ( )
60+ setupViews ( )
61+ }
5362
54- let providerPicker = UIPickerView ( )
55- let signInButton = UIButton ( type: . system)
63+ func setupViews( ) {
64+ view. backgroundColor = . white
65+
66+ providerPicker. dataSource = self
67+ providerPicker. delegate = self
68+ view. addSubview ( providerPicker)
69+ providerPicker. translatesAutoresizingMaskIntoConstraints = false
70+ NSLayoutConstraint . activate ( [
71+ providerPicker. centerXAnchor. constraint ( equalTo: view. centerXAnchor) ,
72+ providerPicker. centerYAnchor. constraint ( equalTo: view. centerYAnchor) ,
73+ providerPicker. widthAnchor. constraint ( equalToConstant: 200 ) ,
74+ providerPicker. heightAnchor. constraint ( equalToConstant: 100 ) ,
75+ ] )
76+
77+ signInButton. setTitle ( " Start Sign-in Flow " , for: . normal)
78+ signInButton. addTarget ( self , action: #selector( signInButtonTapped) , for: . touchUpInside)
79+ view. addSubview ( signInButton)
80+ signInButton. translatesAutoresizingMaskIntoConstraints = false
81+ NSLayoutConstraint . activate ( [
82+ signInButton. centerXAnchor. constraint ( equalTo: view. centerXAnchor) ,
83+ signInButton. topAnchor. constraint ( equalTo: providerPicker. bottomAnchor, constant: 20 ) ,
84+ ] )
85+ }
5686
57- override func viewDidLoad( ) {
58- super. viewDidLoad ( )
59- setupViews ( )
60- }
87+ @objc func signInButtonTapped( ) {
88+ Task {
89+ do {
90+ try await supabase. auth. signInWithOAuth (
91+ provider: provider,
92+ redirectTo: Constants . redirectToURL
93+ )
94+ } catch {
95+ debug ( " Failed to sign-in with OAuth flow: \( error) " )
96+ }
97+ }
98+ }
6199
62- func setupViews( ) {
63- view. backgroundColor = . white
64-
65- providerPicker. dataSource = self
66- providerPicker. delegate = self
67- view. addSubview ( providerPicker)
68- providerPicker. translatesAutoresizingMaskIntoConstraints = false
69- NSLayoutConstraint . activate ( [
70- providerPicker. centerXAnchor. constraint ( equalTo: view. centerXAnchor) ,
71- providerPicker. centerYAnchor. constraint ( equalTo: view. centerYAnchor) ,
72- providerPicker. widthAnchor. constraint ( equalToConstant: 200 ) ,
73- providerPicker. heightAnchor. constraint ( equalToConstant: 100 ) ,
74- ] )
75-
76- signInButton. setTitle ( " Start Sign-in Flow " , for: . normal)
77- signInButton. addTarget ( self , action: #selector( signInButtonTapped) , for: . touchUpInside)
78- view. addSubview ( signInButton)
79- signInButton. translatesAutoresizingMaskIntoConstraints = false
80- NSLayoutConstraint . activate ( [
81- signInButton. centerXAnchor. constraint ( equalTo: view. centerXAnchor) ,
82- signInButton. topAnchor. constraint ( equalTo: providerPicker. bottomAnchor, constant: 20 ) ,
83- ] )
84- }
100+ func numberOfComponents( in _: UIPickerView ) -> Int {
101+ 1
102+ }
85103
86- @objc func signInButtonTapped( ) {
87- Task {
88- do {
89- try await supabase. auth. signInWithOAuth (
90- provider: provider,
91- redirectTo: Constants . redirectToURL
92- )
93- } catch {
94- debug ( " Failed to sign-in with OAuth flow: \( error) " )
95- }
104+ func pickerView( _: UIPickerView , numberOfRowsInComponent _: Int ) -> Int {
105+ providers. count
96106 }
97- }
98107
99- func numberOfComponents ( in _: UIPickerView ) -> Int {
100- 1
101- }
108+ func pickerView ( _: UIPickerView , titleForRow row : Int , forComponent _ : Int ) -> String ? {
109+ " \( providers [ row ] ) "
110+ }
102111
103- func pickerView( _: UIPickerView , numberOfRowsInComponent _: Int ) -> Int {
104- providers. count
112+ func pickerView( _: UIPickerView , didSelectRow row: Int , inComponent _: Int ) {
113+ provider = providers [ row]
114+ }
105115 }
106116
107- func pickerView ( _ : UIPickerView , titleForRow row : Int , forComponent _ : Int ) -> String ? {
108- " \( providers [ row ] ) "
117+ #Preview ( " UIKit " ) {
118+ SignInWithOAuthViewController ( )
109119 }
110120
111- func pickerView( _: UIPickerView , didSelectRow row: Int , inComponent _: Int ) {
112- provider = providers [ row]
113- }
114- }
121+ #endif
115122
116123#Preview( " SwiftUI " ) {
117124 SignInWithOAuth ( )
118125}
119-
120- #Preview( " UIKit " ) {
121- SignInWithOAuthViewController ( )
122- }
0 commit comments