<template>
	<div class="session-item">
		<div class="session-item-info">
			<strong>{{ session.agent }}</strong>

			<a :href="'https://ipinfo.io/' + session.ip" target="_blank" rel="noopener">{{
				session.ip
			}}</a>

			<p v-if="session.active > 1" class="session-usage">
				Active in {{ session.active }} browsers
			</p>
			<p v-else-if="!session.current && !session.active" class="session-usage">
				Last used on <time>{{ lastUse }}</time>
			</p>
		</div>
		<div class="session-item-btn">
			<button class="btn" @click.prevent="signOut">
				<template v-if="session.current">Sign out</template>
				<template v-else>Revoke</template>
			</button>
		</div>
	</div>
</template>

<style>
.session-list .session-item {
	display: flex;
	font-size: 14px;
}

.session-list .session-item-info {
	display: flex;
	flex-direction: column;
	flex-grow: 1;
}

.session-list .session-item-btn {
	flex-shrink: 0;
}

.session-list .session-usage {
	font-style: italic;
	color: var(--body-color-muted);
}
</style>

<script>
import localetime from "../js/helpers/localetime";
import Auth from "../js/auth";
import socket from "../js/socket";

export default {
	name: "Session",
	props: {
		session: Object,
	},
	computed: {
		lastUse() {
			return localetime(this.session.lastUse);
		},
	},
	methods: {
		signOut() {
			if (!this.session.current) {
				socket.emit("sign-out", this.session.token);
			} else {
				socket.emit("sign-out");
				Auth.signout();
			}
		},
	},
};
</script>