88 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
<!--
 | 
						|
SPDX-FileCopyrightText: syuilo and misskey-project
 | 
						|
SPDX-License-Identifier: AGPL-3.0-only
 | 
						|
-->
 | 
						|
 | 
						|
<template>
 | 
						|
<div>
 | 
						|
	<MkAnimBg style="position: fixed; top: 0;"/>
 | 
						|
	<div :class="$style.formContainer">
 | 
						|
		<form :class="$style.form" class="_panel" @submit.prevent="submit()">
 | 
						|
			<div :class="$style.banner">
 | 
						|
				<i class="ti ti-user-check"></i>
 | 
						|
			</div>
 | 
						|
			<div class="_gaps_m" style="padding: 32px;">
 | 
						|
				<div>{{ i18n.tsx.clickToFinishEmailVerification({ ok: i18n.ts.gotIt }) }}</div>
 | 
						|
				<div>
 | 
						|
					<MkButton gradate large rounded type="submit" :disabled="submitting" data-cy-admin-ok style="margin: 0 auto;">
 | 
						|
						{{ submitting ? i18n.ts.processing : i18n.ts.gotIt }}<MkEllipsis v-if="submitting"/>
 | 
						|
					</MkButton>
 | 
						|
				</div>
 | 
						|
			</div>
 | 
						|
		</form>
 | 
						|
	</div>
 | 
						|
</div>
 | 
						|
</template>
 | 
						|
 | 
						|
<script lang="ts" setup>
 | 
						|
import { ref } from 'vue';
 | 
						|
import MkButton from '@/components/MkButton.vue';
 | 
						|
import MkAnimBg from '@/components/MkAnimBg.vue';
 | 
						|
import { login } from '@/account.js';
 | 
						|
import { i18n } from '@/i18n.js';
 | 
						|
import * as os from '@/os.js';
 | 
						|
import { misskeyApi } from '@/scripts/misskey-api.js';
 | 
						|
 | 
						|
const submitting = ref(false);
 | 
						|
 | 
						|
const props = defineProps<{
 | 
						|
	code: string;
 | 
						|
}>();
 | 
						|
 | 
						|
function submit() {
 | 
						|
	if (submitting.value) return;
 | 
						|
	submitting.value = true;
 | 
						|
 | 
						|
	misskeyApi('signup-pending', {
 | 
						|
		code: props.code,
 | 
						|
	}).then(res => {
 | 
						|
		return login(res.i, '/');
 | 
						|
	}).catch(() => {
 | 
						|
		submitting.value = false;
 | 
						|
 | 
						|
		os.alert({
 | 
						|
			type: 'error',
 | 
						|
			title: i18n.ts.somethingHappened,
 | 
						|
			text: i18n.ts.signupPendingError,
 | 
						|
		});
 | 
						|
	});
 | 
						|
}
 | 
						|
</script>
 | 
						|
 | 
						|
<style lang="scss" module>
 | 
						|
.formContainer {
 | 
						|
	min-height: 100svh;
 | 
						|
	padding: 32px 32px 64px 32px;
 | 
						|
	box-sizing: border-box;
 | 
						|
display: grid;
 | 
						|
place-content: center;
 | 
						|
}
 | 
						|
 | 
						|
.form {
 | 
						|
	position: relative;
 | 
						|
	z-index: 10;
 | 
						|
	border-radius: var(--radius);
 | 
						|
	box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1);
 | 
						|
	overflow: clip;
 | 
						|
	max-width: 500px;
 | 
						|
}
 | 
						|
 | 
						|
.banner {
 | 
						|
	padding: 16px;
 | 
						|
	text-align: center;
 | 
						|
	font-size: 26px;
 | 
						|
	background-color: var(--accentedBg);
 | 
						|
	color: var(--accent);
 | 
						|
}
 | 
						|
</style>
 |