Files
hoppscotch/pages/enter.vue
2021-08-24 09:14:46 +05:30

58 lines
1.5 KiB
Vue

<template>
<div class="flex flex-col min-h-screen items-center justify-center">
<div v-if="signingInWithEmail">
<SmartSpinner />
</div>
<div v-else class="text-sm text-secondaryLight animate-pulse">
<AppLogo class="h-8 w-8" />
</div>
<pre v-if="error">{{ error }}</pre>
</div>
</template>
<script lang="ts">
import { defineComponent } from "@nuxtjs/composition-api"
import { initializeFirebase } from "~/helpers/fb"
import { isSignInWithEmailLink, signInWithEmailLink } from "~/helpers/fb/auth"
import { getLocalConfig, removeLocalConfig } from "~/newstore/localpersistence"
export default defineComponent({
layout: "empty",
data() {
return {
signingInWithEmail: false,
error: null,
}
},
beforeMount() {
initializeFirebase()
},
async mounted() {
if (isSignInWithEmailLink(window.location.href)) {
this.signingInWithEmail = true
let email = getLocalConfig("emailForSignIn")
if (!email) {
email = window.prompt(
"Please provide your email for confirmation"
) as string
}
await signInWithEmailLink(email, window.location.href)
.then(() => {
removeLocalConfig("emailForSignIn")
this.$router.push({ path: "/" })
})
.catch((e) => {
this.signingInWithEmail = false
this.error = e.message
})
.finally(() => {
this.signingInWithEmail = false
})
}
},
})
</script>