good place with phone auth worked with bhai's phone, but need loading screen for the whole time
This commit is contained in:
@@ -29,7 +29,6 @@
|
|||||||
89288EC7276756DF00E962C4 /* FirebaseDatabase in Frameworks */ = {isa = PBXBuildFile; productRef = 89288EC6276756DF00E962C4 /* FirebaseDatabase */; };
|
89288EC7276756DF00E962C4 /* FirebaseDatabase in Frameworks */ = {isa = PBXBuildFile; productRef = 89288EC6276756DF00E962C4 /* FirebaseDatabase */; };
|
||||||
89288EC9276756DF00E962C4 /* FirebaseStorage in Frameworks */ = {isa = PBXBuildFile; productRef = 89288EC8276756DF00E962C4 /* FirebaseStorage */; };
|
89288EC9276756DF00E962C4 /* FirebaseStorage in Frameworks */ = {isa = PBXBuildFile; productRef = 89288EC8276756DF00E962C4 /* FirebaseStorage */; };
|
||||||
89288ECB27675B9F00E962C4 /* OnboardingTemplateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89288ECA27675B9F00E962C4 /* OnboardingTemplateView.swift */; };
|
89288ECB27675B9F00E962C4 /* OnboardingTemplateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89288ECA27675B9F00E962C4 /* OnboardingTemplateView.swift */; };
|
||||||
89AD556F276D63E4001658E0 /* PopupView in Frameworks */ = {isa = PBXBuildFile; productRef = 89AD556E276D63E4001658E0 /* PopupView */; };
|
|
||||||
89B46E71276893E200B74255 /* AuthSessionStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89B46E70276893E200B74255 /* AuthSessionStore.swift */; };
|
89B46E71276893E200B74255 /* AuthSessionStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89B46E70276893E200B74255 /* AuthSessionStore.swift */; };
|
||||||
89BCABE2276B3CB0009E9B10 /* NavigationStack in Frameworks */ = {isa = PBXBuildFile; productRef = 89BCABE1276B3CB0009E9B10 /* NavigationStack */; };
|
89BCABE2276B3CB0009E9B10 /* NavigationStack in Frameworks */ = {isa = PBXBuildFile; productRef = 89BCABE1276B3CB0009E9B10 /* NavigationStack */; };
|
||||||
89BCABE5276B3D58009E9B10 /* InnerCircleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89BCABE4276B3D58009E9B10 /* InnerCircleView.swift */; };
|
89BCABE5276B3D58009E9B10 /* InnerCircleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89BCABE4276B3D58009E9B10 /* InnerCircleView.swift */; };
|
||||||
@@ -97,7 +96,6 @@
|
|||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
89288EC3276756DF00E962C4 /* FirebaseAnalytics in Frameworks */,
|
89288EC3276756DF00E962C4 /* FirebaseAnalytics in Frameworks */,
|
||||||
89AD556F276D63E4001658E0 /* PopupView in Frameworks */,
|
|
||||||
89BCABE2276B3CB0009E9B10 /* NavigationStack in Frameworks */,
|
89BCABE2276B3CB0009E9B10 /* NavigationStack in Frameworks */,
|
||||||
89288EC5276756DF00E962C4 /* FirebaseAuth in Frameworks */,
|
89288EC5276756DF00E962C4 /* FirebaseAuth in Frameworks */,
|
||||||
89288EC7276756DF00E962C4 /* FirebaseDatabase in Frameworks */,
|
89288EC7276756DF00E962C4 /* FirebaseDatabase in Frameworks */,
|
||||||
@@ -319,7 +317,6 @@
|
|||||||
89288EC8276756DF00E962C4 /* FirebaseStorage */,
|
89288EC8276756DF00E962C4 /* FirebaseStorage */,
|
||||||
89F1386F2767F55F006680ED /* GoogleSignIn */,
|
89F1386F2767F55F006680ED /* GoogleSignIn */,
|
||||||
89BCABE1276B3CB0009E9B10 /* NavigationStack */,
|
89BCABE1276B3CB0009E9B10 /* NavigationStack */,
|
||||||
89AD556E276D63E4001658E0 /* PopupView */,
|
|
||||||
);
|
);
|
||||||
productName = "nirvana-ios";
|
productName = "nirvana-ios";
|
||||||
productReference = 891A15DD27653A7000B26659 /* nirvana-ios.app */;
|
productReference = 891A15DD27653A7000B26659 /* nirvana-ios.app */;
|
||||||
@@ -353,7 +350,6 @@
|
|||||||
89288EC1276756DF00E962C4 /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */,
|
89288EC1276756DF00E962C4 /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */,
|
||||||
89F1386E2767F55F006680ED /* XCRemoteSwiftPackageReference "GoogleSignIn-iOS" */,
|
89F1386E2767F55F006680ED /* XCRemoteSwiftPackageReference "GoogleSignIn-iOS" */,
|
||||||
89BCABE0276B3CB0009E9B10 /* XCRemoteSwiftPackageReference "swiftui-navigation-stack" */,
|
89BCABE0276B3CB0009E9B10 /* XCRemoteSwiftPackageReference "swiftui-navigation-stack" */,
|
||||||
89AD556D276D63E4001658E0 /* XCRemoteSwiftPackageReference "PopupView" */,
|
|
||||||
);
|
);
|
||||||
productRefGroup = 891A15DE27653A7000B26659 /* Products */;
|
productRefGroup = 891A15DE27653A7000B26659 /* Products */;
|
||||||
projectDirPath = "";
|
projectDirPath = "";
|
||||||
@@ -634,14 +630,6 @@
|
|||||||
minimumVersion = 8.0.0;
|
minimumVersion = 8.0.0;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
89AD556D276D63E4001658E0 /* XCRemoteSwiftPackageReference "PopupView" */ = {
|
|
||||||
isa = XCRemoteSwiftPackageReference;
|
|
||||||
repositoryURL = "https://github.com/exyte/PopupView";
|
|
||||||
requirement = {
|
|
||||||
kind = upToNextMajorVersion;
|
|
||||||
minimumVersion = 1.0.0;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
89BCABE0276B3CB0009E9B10 /* XCRemoteSwiftPackageReference "swiftui-navigation-stack" */ = {
|
89BCABE0276B3CB0009E9B10 /* XCRemoteSwiftPackageReference "swiftui-navigation-stack" */ = {
|
||||||
isa = XCRemoteSwiftPackageReference;
|
isa = XCRemoteSwiftPackageReference;
|
||||||
repositoryURL = "https://github.com/matteopuc/swiftui-navigation-stack.git";
|
repositoryURL = "https://github.com/matteopuc/swiftui-navigation-stack.git";
|
||||||
@@ -681,11 +669,6 @@
|
|||||||
package = 89288EC1276756DF00E962C4 /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */;
|
package = 89288EC1276756DF00E962C4 /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */;
|
||||||
productName = FirebaseStorage;
|
productName = FirebaseStorage;
|
||||||
};
|
};
|
||||||
89AD556E276D63E4001658E0 /* PopupView */ = {
|
|
||||||
isa = XCSwiftPackageProductDependency;
|
|
||||||
package = 89AD556D276D63E4001658E0 /* XCRemoteSwiftPackageReference "PopupView" */;
|
|
||||||
productName = PopupView;
|
|
||||||
};
|
|
||||||
89BCABE1276B3CB0009E9B10 /* NavigationStack */ = {
|
89BCABE1276B3CB0009E9B10 /* NavigationStack */ = {
|
||||||
isa = XCSwiftPackageProductDependency;
|
isa = XCSwiftPackageProductDependency;
|
||||||
package = 89BCABE0276B3CB0009E9B10 /* XCRemoteSwiftPackageReference "swiftui-navigation-stack" */;
|
package = 89BCABE0276B3CB0009E9B10 /* XCRemoteSwiftPackageReference "swiftui-navigation-stack" */;
|
||||||
|
|||||||
@@ -118,15 +118,6 @@
|
|||||||
"version": "2.30908.0"
|
"version": "2.30908.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"package": "PopupView",
|
|
||||||
"repositoryURL": "https://github.com/exyte/PopupView",
|
|
||||||
"state": {
|
|
||||||
"branch": null,
|
|
||||||
"revision": "4cf8c01473282b3711e6780bd78ef81add97f6e2",
|
|
||||||
"version": "1.0.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"package": "Promises",
|
"package": "Promises",
|
||||||
"repositoryURL": "https://github.com/google/promises.git",
|
"repositoryURL": "https://github.com/google/promises.git",
|
||||||
|
|||||||
@@ -19,5 +19,7 @@
|
|||||||
<array>
|
<array>
|
||||||
<string>Satisfy-Regular.ttf</string>
|
<string>Satisfy-Regular.ttf</string>
|
||||||
</array>
|
</array>
|
||||||
|
<key>UIUserInterfaceStyle</key>
|
||||||
|
<string>Light</string>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ final class AuthSessionStore: ObservableObject, SessionStore {
|
|||||||
self.setupAuthListen()
|
self.setupAuthListen()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MARK: OLD for google sign in with link
|
||||||
func signInOrCreateUser() {
|
func signInOrCreateUser() {
|
||||||
if GIDSignIn.sharedInstance.currentUser == nil {
|
if GIDSignIn.sharedInstance.currentUser == nil {
|
||||||
guard
|
guard
|
||||||
@@ -76,6 +77,7 @@ final class AuthSessionStore: ObservableObject, SessionStore {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MARK: OLD for google sign in with link
|
||||||
func firebaseAuth(withCredentials authCred: AuthCredential) {
|
func firebaseAuth(withCredentials authCred: AuthCredential) {
|
||||||
Auth.auth().signIn(with: authCred) { result, error in
|
Auth.auth().signIn(with: authCred) { result, error in
|
||||||
if error != nil {
|
if error != nil {
|
||||||
@@ -113,12 +115,14 @@ final class AuthSessionStore: ObservableObject, SessionStore {
|
|||||||
self.handler = Auth.auth().addStateDidChangeListener { (auth, user) in
|
self.handler = Auth.auth().addStateDidChangeListener { (auth, user) in
|
||||||
print("auth listener activated")
|
print("auth listener activated")
|
||||||
|
|
||||||
|
// get the user from the auth table in firebase auth
|
||||||
if let user = user {
|
if let user = user {
|
||||||
// if we have a user, create a new user model
|
// if we have a user, create a new user model
|
||||||
print("Got user: \(user.displayName!)")
|
print("Got user: \(user.uid)")
|
||||||
self.user = User(
|
print("phone number: \(user.phoneNumber!)")
|
||||||
_uid: user.uid, _email: user.email, _displayName: user.displayName, _profilePic: user.photoURL, _phoneNumber: user.phoneNumber)
|
|
||||||
|
|
||||||
|
// TODO: go to firestore and get full user document for the current authenticated user
|
||||||
|
// and have this in environment for all pages to access without having to fetch all the time
|
||||||
self.sessionState = .isAuthenticated
|
self.sessionState = .isAuthenticated
|
||||||
} else {
|
} else {
|
||||||
// if we don't have a user, set our session to nil
|
// if we don't have a user, set our session to nil
|
||||||
|
|||||||
@@ -216,7 +216,6 @@ struct InnerCircleView: View {
|
|||||||
}
|
}
|
||||||
.scaleEffect(scale)
|
.scaleEffect(scale)
|
||||||
.padding(scale * 5)
|
.padding(scale * 5)
|
||||||
|
|
||||||
} // geometry reader
|
} // geometry reader
|
||||||
.offset(
|
.offset(
|
||||||
x: honeycombOffSetX(value),
|
x: honeycombOffSetX(value),
|
||||||
|
|||||||
@@ -8,8 +8,6 @@
|
|||||||
import SwiftUI
|
import SwiftUI
|
||||||
import NavigationStack
|
import NavigationStack
|
||||||
import Combine
|
import Combine
|
||||||
// TODO: maybe this is useless and just do my own toasts and alerts
|
|
||||||
import PopupView
|
|
||||||
import Firebase
|
import Firebase
|
||||||
import FirebaseAuth
|
import FirebaseAuth
|
||||||
|
|
||||||
@@ -191,14 +189,21 @@ struct PhoneVerificationCodeView: View {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//setting in key storage
|
||||||
UserDefaults.standard.set(true, forKey: "authVerificationID")
|
UserDefaults.standard.set(true, forKey: "authVerificationID")
|
||||||
|
|
||||||
|
//TODO: is the auth listener going to find that this person signed in? idk test it
|
||||||
|
|
||||||
|
// firebase either created a new user or is giving back an existing user's id
|
||||||
|
let userId = res?.user.uid
|
||||||
|
let userPhoneNumber = res?.user.phoneNumber
|
||||||
|
print("user id that was authenticated is: \(userId)")
|
||||||
|
print("user id that was authenticated is: \(userPhoneNumber)")
|
||||||
|
|
||||||
|
|
||||||
|
// then sending to next page
|
||||||
|
self.navigationStack.push(PhoneVerificationCodeView()) // verify code page
|
||||||
}
|
}
|
||||||
|
|
||||||
// then async send to next page
|
|
||||||
self.navigationStack.push(PhoneVerificationCodeView()) // verify code page
|
|
||||||
|
|
||||||
|
|
||||||
} label: {
|
} label: {
|
||||||
Text("Send Verification")
|
Text("Send Verification")
|
||||||
.bold()
|
.bold()
|
||||||
|
|||||||
@@ -13,22 +13,61 @@ import GoogleSignIn
|
|||||||
struct nirvana_iosApp: App {
|
struct nirvana_iosApp: App {
|
||||||
@StateObject var authSessionStore: AuthSessionStore = AuthSessionStore()
|
@StateObject var authSessionStore: AuthSessionStore = AuthSessionStore()
|
||||||
|
|
||||||
@UIApplicationDelegateAdaptor private var appDelegate: AppDelegate
|
@UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
|
||||||
|
|
||||||
var body: some Scene {
|
var body: some Scene {
|
||||||
WindowGroup {
|
WindowGroup {
|
||||||
ContentView().environmentObject(authSessionStore)
|
ContentView()
|
||||||
|
.environmentObject(authSessionStore)
|
||||||
|
.onOpenURL { url in
|
||||||
|
print("Received URL: \(url)")
|
||||||
|
Auth.auth().canHandle(url) // <- just for information purposes
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class AppDelegate: NSObject, UIApplicationDelegate {
|
class AppDelegate: NSObject, UIApplicationDelegate {
|
||||||
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
|
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
|
||||||
FirebaseApp.configure()
|
FirebaseApp.configure()
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
|
||||||
|
print("\(#function)")
|
||||||
|
Auth.auth().setAPNSToken(deviceToken, type: .sandbox)
|
||||||
|
}
|
||||||
|
|
||||||
|
func application(_ application: UIApplication, didReceiveRemoteNotification notification: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
|
||||||
|
print("\(#function)")
|
||||||
|
if Auth.auth().canHandleNotification(notification) {
|
||||||
|
completionHandler(.noData)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// For iOS 9+
|
||||||
func application(_ application: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any]) -> Bool {
|
func application(_ application: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any]) -> Bool {
|
||||||
return GIDSignIn.sharedInstance.handle(url)
|
// MARK: turned off google sign in link in for phone below
|
||||||
|
// return GIDSignIn.sharedInstance.handle(url)
|
||||||
|
|
||||||
|
// if the user can be handled by google auth, then it will do so
|
||||||
|
if Auth.auth().canHandle(url) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
// URL not auth related, developer should handle it.
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
// For iOS 8-
|
||||||
|
func application(_ application: UIApplication,
|
||||||
|
open url: URL,
|
||||||
|
sourceApplication: String?,
|
||||||
|
annotation: Any) -> Bool {
|
||||||
|
if Auth.auth().canHandle(url) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
// URL not auth related, developer should handle it.
|
||||||
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user