getting basic call to backend for a token but it's messy as hellll!!!!
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
//
|
||||
// AgoraService.swift
|
||||
// nirvana-ios
|
||||
//
|
||||
// Created by Arjun Patel on 12/29/21.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import FirebaseAuth
|
||||
import Firebase
|
||||
|
||||
class AgoraService {
|
||||
func getAgoraUserToken(channelName: String) {
|
||||
let currentUser = Auth.auth().currentUser
|
||||
currentUser?.getIDTokenForcingRefresh(true) { idToken, error in
|
||||
if let error = error {
|
||||
// Handle error
|
||||
return;
|
||||
}
|
||||
|
||||
// Send token to your backend via HTTPS
|
||||
// ...
|
||||
let baseUrl = ProcessInfo.processInfo.environment["nirvana-server-url"] ?? "http://localhost:3000"
|
||||
let reqUrl = baseUrl + "agoraToken?channelName=" + channelName
|
||||
guard let url = URL(string: reqUrl) else { fatalError("Missing URL") }
|
||||
|
||||
var urlRequest = URLRequest(url: url)
|
||||
urlRequest.addValue(idToken!, forHTTPHeaderField: "authorization")
|
||||
|
||||
let dataTask = URLSession.shared.dataTask(with: urlRequest) { (data, response, error) in
|
||||
if let error = error {
|
||||
print("Request error: ", error)
|
||||
return
|
||||
}
|
||||
|
||||
guard let response = response as? HTTPURLResponse else { return }
|
||||
|
||||
if response.statusCode == 200 {
|
||||
guard let data = data else { return }
|
||||
print("the token is: \(data)")
|
||||
}
|
||||
}
|
||||
|
||||
dataTask.resume()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -140,7 +140,7 @@ final class AuthSessionStore: ObservableObject, SessionStore {
|
||||
}
|
||||
}
|
||||
|
||||
func getCurrentUserId() -> String? {
|
||||
static func getCurrentUserId() -> String? {
|
||||
return Auth.auth().currentUser?.uid
|
||||
}
|
||||
|
||||
@@ -214,7 +214,7 @@ extension AuthSessionStore {
|
||||
}
|
||||
|
||||
// can't get proper listeners working if don't have current user's id
|
||||
let currUserId = self.getCurrentUserId()
|
||||
let currUserId = AuthSessionStore.getCurrentUserId()
|
||||
if currUserId == nil {
|
||||
print("no user id available to initiate data listeners")
|
||||
return
|
||||
@@ -457,7 +457,7 @@ extension AuthSessionStore {
|
||||
print("user already has status: \(userStatus)")
|
||||
}
|
||||
else {
|
||||
if let uid = self.getCurrentUserId() {
|
||||
if let uid = AuthSessionStore.getCurrentUserId() {
|
||||
self.firestoreService.updateUserStatus(userId: uid, userStatus: userStatus) {res in
|
||||
print(res)
|
||||
}
|
||||
|
||||
@@ -266,6 +266,9 @@ struct CircleGridView: View {
|
||||
if self.authSessionStore.friendsArr.count > 0 {
|
||||
scrollReaderValue.scrollTo(self.selectedFriendIndex)
|
||||
}
|
||||
|
||||
// get this user's agora token
|
||||
self.innerCircleVM.getAgoraToken()
|
||||
}
|
||||
} // scrollview reader
|
||||
.fullScreenCover(isPresented: $showCall, content: {
|
||||
|
||||
@@ -21,6 +21,7 @@ class InnerCircleViewModel: ObservableObject {
|
||||
private let cloudStorageService = CloudStorageService()
|
||||
private let firestoreService = FirestoreService()
|
||||
private let pushNotificationService = PushNotificationService()
|
||||
private let agoraService = AgoraService()
|
||||
|
||||
init() {
|
||||
// separate set up for listening vs recording
|
||||
@@ -139,3 +140,14 @@ extension InnerCircleViewModel {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
extension InnerCircleViewModel {
|
||||
func getAgoraToken() {
|
||||
if let uid = AuthSessionStore.getCurrentUserId() {
|
||||
self.agoraService.getAgoraUserToken(channelName: uid)
|
||||
}
|
||||
else {
|
||||
print("no user authenticated to get an agora token")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user