flaschengeist-frontend/src/plugins/user/components/settings/Sessions.vue

98 lines
2.4 KiB
Vue
Raw Normal View History

<template>
<q-card class="col-12" height="">
<q-card-section v-if="isThisSession(session.token)" class="text-caption">
Diese Session.
</q-card-section>
<q-card-section>
<div class="row">
<div class="col-xs-12 col-sm-6">
Browser:
<q-icon :name="getBrowserIcon(session.browser)" size="24px" />
{{ session.browser }}
</div>
<div class="col-xs-12 col-sm-6">
Plattform:
<q-icon :name="getPlatformIcon(session.platform)" size="24px" />
{{ session.platform }}
</div>
</div>
<div class="row">
<div class="col-xs-12 col-sm-6">
Lebenszeit:
{{ session.lifetime }}
</div>
<div class="col-xs-12 col-sm-6">
Läuft aus: {{ session.expires | dateTime(true) }}
</div>
</div>
</q-card-section>
<q-card-actions align="right">
<q-btn
flat
round
dense
icon="mdi-delete"
@click="deleteSession(session.token)"
/>
</q-card-actions>
</q-card>
</template>
<script lang="ts">
2020-10-28 23:10:45 +00:00
import { defineComponent } from '@vue/composition-api';
import { Store } from 'vuex';
import { StateInterface } from 'src/store';
export default defineComponent({
name: 'Sessions',
props: {
session: {
required: true
}
},
setup(_, { root }) {
const store = <Store<StateInterface>>root.$store;
function getBrowserIcon(browser: string) {
return browser == 'firefox'
? 'mdi-firefox'
: browser == 'chrome'
? 'mdi-google-chrome'
: browser == 'safari'
? 'mdi-apple-safari'
: 'mdi-help';
}
function getPlatformIcon(platform: string) {
return platform == 'linux'
? 'mdi-linux'
: platform == 'windows'
? 'mdi-microsoft-windows'
2020-10-31 18:33:05 +00:00
: platform == 'macos'
? 'mdi-apple'
2020-10-31 21:37:28 +00:00
: platform == 'iphone'
? 'mdi-cellphone-iphone'
: platform == 'android'
? 'mdi-cellphone-android'
: 'mdi-help';
}
function deleteSession(token: string) {
store.dispatch('session/deleteSession', token).catch(error => {
2020-10-28 23:10:45 +00:00
console.warn(error);
});
}
function isThisSession(token: string) {
return store.state.session.currentSession?.token === token;
}
return {
getBrowserIcon,
getPlatformIcon,
isThisSession,
deleteSession
};
}
});
</script>