41 lines
974 B
JavaScript
41 lines
974 B
JavaScript
import { getGlobal } from 'reactn'
|
|
import { navigate } from '../navigation/NavigationService'
|
|
import { Routes } from '../navigation/Routes'
|
|
|
|
const redirectToRegister = () => {
|
|
try {
|
|
const activeRoute = getGlobal()?.activeRouteName
|
|
if (activeRoute === Routes.Register) {
|
|
return
|
|
}
|
|
} catch (error) {
|
|
console.warn('authRedirect: unable to read active route', error)
|
|
}
|
|
navigate(Routes.Register)
|
|
}
|
|
|
|
export const ensureAuthenticated = (currentUID, options = {}) => {
|
|
const { onIntercept } = options || {}
|
|
if (currentUID) {
|
|
return true
|
|
}
|
|
try {
|
|
if (typeof onIntercept === 'function') {
|
|
onIntercept()
|
|
}
|
|
} catch (error) {
|
|
console.warn('authRedirect: onIntercept error', error)
|
|
}
|
|
redirectToRegister()
|
|
return false
|
|
}
|
|
|
|
export const withAuthGuard = async (currentUID, handler, options = {}) => {
|
|
if (!ensureAuthenticated(currentUID, options)) {
|
|
return
|
|
}
|
|
return handler?.()
|
|
}
|
|
|
|
export default ensureAuthenticated
|