Files
AstralRinth/apps/frontend/src/pages/auth/welcome.vue
Geometrically 3a4843fb46 Billing / plus frontend (#2130)
* [wip] initial

* [wip] subscriptions/plus frontend

* [wip] finish payment flow

* Charges page

* finish most subscriptions work

* Finish

* update eslint

* Fix issues

* fix intl extract

* fix omorphia locale extract

* fix responsiveness

* fix lint
2024-08-15 23:21:30 -07:00

98 lines
2.6 KiB
Vue

<template>
<div>
<h1>{{ formatMessage(messages.welcomeLongTitle) }}</h1>
<section class="auth-form">
<p>
{{ formatMessage(messages.welcomeDescription) }}
</p>
<Checkbox
v-model="subscribe"
class="subscribe-btn"
:label="formatMessage(messages.subscribeCheckbox)"
:description="formatMessage(messages.subscribeCheckbox)"
/>
<button class="btn btn-primary continue-btn centered-btn" @click="continueSignUp">
{{ formatMessage(commonMessages.continueButton) }} <RightArrowIcon />
</button>
<p>
<IntlFormatted :message-id="messages.tosLabel">
<template #terms-link="{ children }">
<NuxtLink to="/legal/terms" class="text-link">
<component :is="() => children" />
</NuxtLink>
</template>
<template #privacy-policy-link="{ children }">
<NuxtLink to="/legal/privacy" class="text-link">
<component :is="() => children" />
</NuxtLink>
</template>
</IntlFormatted>
</p>
</section>
</div>
</template>
<script setup>
import { Checkbox } from "@modrinth/ui";
import { RightArrowIcon } from "@modrinth/assets";
const { formatMessage } = useVIntl();
const messages = defineMessages({
subscribeCheckbox: {
id: "auth.welcome.checkbox.subscribe",
defaultMessage: "Subscribe to updates about Modrinth",
},
tosLabel: {
id: "auth.welcome.label.tos",
defaultMessage:
"By creating an account, you have agreed to Modrinth's <terms-link>Terms</terms-link> and <privacy-policy-link>Privacy Policy</privacy-policy-link>.",
},
welcomeDescription: {
id: "auth.welcome.description",
defaultMessage:
"Thank you for creating an account. You can now follow and create projects, receive updates about your favorite projects, and more!",
},
welcomeLongTitle: {
id: "auth.welcome.long-title",
defaultMessage: "Welcome to Modrinth!",
},
welcomeTitle: {
id: "auth.welcome.title",
defaultMessage: "Welcome",
},
});
useHead({
title: () => `${formatMessage(messages.welcomeTitle)} - Modrinth`,
});
const subscribe = ref(true);
async function continueSignUp() {
const route = useRoute();
await useAuth(route.query.authToken);
await useUser();
if (subscribe.value) {
try {
await useBaseFetch("auth/email/subscribe", {
method: "POST",
});
} catch {
/* empty */
}
}
if (route.query.redirect) {
await navigateTo(route.query.redirect);
} else {
await navigateTo("/dashboard");
}
}
</script>