<template>
	<div class="home">
		<div
			ref="content"
			class="content-inner"
		>
			<FilterBar
				:fetch-releases="fetchReleases"
				:is-home="true"
				:items-total="totalCount"
				:items-per-page="limit"
				:content="$refs.content"
			/>

			<Releases :releases="releases" />

			<Pagination
				v-if="totalCount > 0"
				:items-total="totalCount"
				:items-per-page="limit"
				class="pagination-bottom"
			/>
		</div>

		<Footer />
	</div>
</template>

<script>
import FilterBar from '../filters/filter-bar.vue';
import Releases from '../releases/releases.vue';
import Pagination from '../pagination/pagination.vue';

async function fetchReleases() {
	const { releases, totalCount } = await this.$store.dispatch('fetchReleases', {
		limit: this.limit,
		range: this.$route.params.range,
		pageNumber: Number(this.$route.params.pageNumber) || 1,
	});

	this.totalCount = totalCount;
	this.releases = releases;

	this.$refs.content.scrollTop = 0;
}

async function route() {
	await this.fetchReleases();
}

async function mounted() {
	this.pageTitle = '';

	await this.fetchReleases();
}

export default {
	components: {
		FilterBar,
		Releases,
		Pagination,
	},
	data() {
		return {
			releases: [],
			networks: [],
			pageTitle: null,
			limit: 20,
			totalCount: 0,
			from: null,
		};
	},
	watch: {
		$route: route,
	},
	mounted,
	methods: {
		fetchReleases,
	},
};
</script>

<style lang="scss" scoped>
.home {
	display: flex;
	flex-direction: column;
	flex-grow: 1;
}
</style>