Add translation keys for Sessions page (#1377)

Co-authored-by: Sasha Sorokin <10401817+brawaru@users.noreply.github.com>
This commit is contained in:
Mysterious_Dev 2023-09-29 04:43:53 +02:00 committed by GitHub
parent 475d434e98
commit b9248553be
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 106 additions and 24 deletions

View File

@ -50,9 +50,6 @@
"profile.joined-at": { "profile.joined-at": {
"message": "Joined {ago}" "message": "Joined {ago}"
}, },
"profile.joined-at.tooltip": {
"message": "{date, date, long} at {time, time, short}"
},
"profile.label.edit-bio": { "profile.label.edit-bio": {
"message": "Bio" "message": "Bio"
}, },
@ -163,5 +160,32 @@
}, },
"settings.language.title": { "settings.language.title": {
"message": "Language" "message": "Language"
},
"settings.sessions.button.revoke-session": {
"message": "Revoke session"
},
"settings.sessions.description": {
"message": "Here are all the devices that are currently logged in with your Modrinth account. You can log out of each one individually.\n\n If you see an entry you don't recognize, log out of that device and change your Modrinth account password immediately."
},
"settings.sessions.label.current-session": {
"message": "Current session"
},
"settings.sessions.label.created-at": {
"message": "Created {ago}"
},
"settings.sessions.label.last-accessed-at": {
"message": "Last accessed {ago}"
},
"settings.sessions.label.unknown-os": {
"message": "Unknown OS"
},
"settings.sessions.label.unknown-platform": {
"message": "Unknown platform"
},
"settings.sessions.title": {
"message": "Sessions"
},
"tooltip.date-at-time": {
"message": "{date, date, long} at {time, time, short}"
} }
} }

View File

@ -1,36 +1,55 @@
<template> <template>
<div class="universal-card"> <div class="universal-card">
<h2>Sessions</h2> <h2>{{ formatMessage(messages.sessionsTitle) }}</h2>
<p> <p class="preserve-lines">
Here are all the devices that are currently logged in with your Modrinth account. You can log {{ formatMessage(messages.sessionsDescription) }}
out of each one individually.
<br /><br />
If you see an entry you don't recognize, log out of that device and change your Modrinth
account password immediately.
</p> </p>
<div v-for="session in sessions" :key="session.id" class="universal-card recessed session"> <div v-for="session in sessions" :key="session.id" class="universal-card recessed session">
<div> <div>
<div> <div>
<strong> <strong>
{{ session.os ?? 'Unknown OS' }} {{ session.platform ?? 'Unknown platform' }} {{ session.os ?? formatMessage(messages.unknownOsLabel) }}
{{ session.platform ?? formatMessage(messages.unknownPlatformLabel) }}
{{ session.ip }} {{ session.ip }}
</strong> </strong>
</div> </div>
<div> <div>
<template v-if="session.city">{{ session.city }}, {{ session.country }} </template> <template v-if="session.city">{{ session.city }}, {{ session.country }} </template>
<span v-tooltip="$dayjs(session.last_login).format('MMMM D, YYYY [at] h:mm A')"> <span
Last accessed {{ fromNow(session.last_login) }} v-tooltip="
formatMessage(commonMessages.dateAtTimeTooltip, {
date: new Date(session.last_login),
time: new Date(session.last_login),
})
"
>
{{
formatMessage(messages.sessionsLastAccessedAt, {
ago: formatRelativeTime(session.last_login),
})
}}
</span> </span>
<span v-tooltip="$dayjs(session.created).format('MMMM D, YYYY [at] h:mm A')"> <span
Created {{ fromNow(session.created) }} v-tooltip="
formatMessage(commonMessages.dateAtTimeTooltip, {
date: new Date(session.created),
time: new Date(session.created),
})
"
>
{{
formatMessage(messages.sessionsCreatedAt, {
ago: formatRelativeTime(session.created),
})
}}
</span> </span>
</div> </div>
</div> </div>
<div class="input-group"> <div class="input-group">
<i v-if="session.current">Current session</i> <i v-if="session.current">{{ formatMessage(messages.currentSessionLabel) }}</i>
<button v-else class="iconified-button raised-button" @click="revokeSession(session.id)"> <button v-else class="iconified-button raised-button" @click="revokeSession(session.id)">
<XIcon /> Revoke session <XIcon /> {{ formatMessage(messages.revokeSessionButton) }}
</button> </button>
</div> </div>
</div> </div>
@ -43,8 +62,47 @@ definePageMeta({
middleware: 'auth', middleware: 'auth',
}) })
const { formatMessage } = useVIntl()
const formatRelativeTime = useRelativeTime()
const messages = defineMessages({
currentSessionLabel: {
id: 'settings.sessions.label.current-session',
defaultMessage: 'Current session',
},
revokeSessionButton: {
id: 'settings.sessions.button.revoke-session',
defaultMessage: 'Revoke session',
},
sessionsCreatedAt: {
id: 'settings.sessions.label.created-at',
defaultMessage: 'Created {ago}',
},
sessionsDescription: {
id: 'settings.sessions.description',
defaultMessage:
"Here are all the devices that are currently logged in with your Modrinth account. You can log out of each one individually.\n\n If you see an entry you don't recognize, log out of that device and change your Modrinth account password immediately.",
},
sessionsLastAccessedAt: {
id: 'settings.sessions.label.last-accessed-at',
defaultMessage: 'Last accessed {ago}',
},
sessionsTitle: {
id: 'settings.sessions.title',
defaultMessage: 'Sessions',
},
unknownOsLabel: {
id: 'settings.sessions.label.unknown-os',
defaultMessage: 'Unknown OS',
},
unknownPlatformLabel: {
id: 'settings.sessions.label.unknown-platform',
defaultMessage: 'Unknown platform',
},
})
useHead({ useHead({
title: 'Sessions - Modrinth', title: () => `${formatMessage(messages.sessionsTitle)} - Modrinth'`,
}) })
const data = useNuxtApp() const data = useNuxtApp()
@ -63,7 +121,7 @@ async function revokeSession(id) {
} catch (err) { } catch (err) {
data.$notify({ data.$notify({
group: 'main', group: 'main',
title: 'An error occurred', title: formatMessage(commonMessages.errorNotificationTitle),
text: err.data.description, text: err.data.description,
type: 'error', type: 'error',
}) })

View File

@ -131,7 +131,7 @@
<SunriseIcon class="secondary-stat__icon" aria-hidden="true" /> <SunriseIcon class="secondary-stat__icon" aria-hidden="true" />
<span <span
v-tooltip=" v-tooltip="
formatMessage(messages.profileJoinedAtTooltip, { formatMessage(commonMessages.dateAtTimeTooltip, {
date: new Date(user.created), date: new Date(user.created),
time: new Date(user.created), time: new Date(user.created),
}) })
@ -314,10 +314,6 @@ const messages = defineMessages({
id: 'profile.joined-at', id: 'profile.joined-at',
defaultMessage: 'Joined {ago}', defaultMessage: 'Joined {ago}',
}, },
profileJoinedAtTooltip: {
id: 'profile.joined-at.tooltip',
defaultMessage: '{date, date, long} at {time, time, short}',
},
profileUserId: { profileUserId: {
id: 'profile.user-id', id: 'profile.user-id',
defaultMessage: 'User ID: {id}', defaultMessage: 'User ID: {id}',

View File

@ -7,6 +7,10 @@ export const commonMessages = defineMessages({
id: 'button.cancel', id: 'button.cancel',
defaultMessage: 'Cancel', defaultMessage: 'Cancel',
}, },
dateAtTimeTooltip: {
id: 'tooltip.date-at-time',
defaultMessage: '{date, date, long} at {time, time, short}',
},
editButton: { editButton: {
id: 'button.edit', id: 'button.edit',
defaultMessage: 'Edit', defaultMessage: 'Edit',