<template>
	<div id="changelog" class="window" aria-label="Changelog">
		<div class="header">
			<SidebarToggle />
		</div>
		<div class="container">
			<router-link id="back-to-help" to="/help">« Help</router-link>

			<template
				v-if="
					$store.state.versionData &&
					$store.state.versionData.current &&
					$store.state.versionData.current.version
				"
			>
				<h1 class="title">
					Release notes for {{ $store.state.versionData.current.version }}
				</h1>

				<template v-if="$store.state.versionData.current.changelog">
					<h3>Introduction</h3>
					<div
						ref="changelog"
						class="changelog-text"
						v-html="$store.state.versionData.current.changelog"
					></div>
				</template>
				<template v-else>
					<p>Unable to retrieve changelog for current release from GitHub.</p>
					<p>
						<a
							:href="`https://github.com/thelounge/thelounge/releases/tag/v${$store.state.serverConfiguration.version}`"
							target="_blank"
							rel="noopener"
							>View release notes for this version on GitHub</a
						>
					</p>
				</template>
			</template>
			<p v-else>Loading changelog…</p>
		</div>
	</div>
</template>

<script>
import socket from "../../js/socket";
import SidebarToggle from "../SidebarToggle.vue";

export default {
	name: "Changelog",
	components: {
		SidebarToggle,
	},
	mounted() {
		if (!this.$store.state.versionData) {
			socket.emit("changelog");
		}

		this.patchChangelog();
	},
	updated() {
		this.patchChangelog();
	},
	methods: {
		patchChangelog() {
			if (!this.$refs.changelog) {
				return;
			}

			const links = this.$refs.changelog.querySelectorAll("a");

			for (const link of links) {
				// Make sure all links will open a new tab instead of exiting the application
				link.setAttribute("target", "_blank");
				link.setAttribute("rel", "noopener");

				if (link.querySelector("img")) {
					// Add required metadata to image links, to support built-in image viewer
					link.classList.add("toggle-thumbnail");
				}
			}
		},
	},
};
</script>