From dacc713f99208b6d8784ee4156264127c1ee3246 Mon Sep 17 00:00:00 2001
From: syuilo <syuilotan@yahoo.co.jp>
Date: Fri, 7 Jun 2019 20:24:07 +0900
Subject: [PATCH] Fix #5021

---
 .../app/common/views/pages/page/page.vue      | 58 ++++++++++++-------
 1 file changed, 37 insertions(+), 21 deletions(-)

diff --git a/src/client/app/common/views/pages/page/page.vue b/src/client/app/common/views/pages/page/page.vue
index 7938d706b..96a2cfafb 100644
--- a/src/client/app/common/views/pages/page/page.vue
+++ b/src/client/app/common/views/pages/page/page.vue
@@ -1,5 +1,5 @@
 <template>
-<div v-if="page" class="iroscrza" :class="{ shadow: $store.state.device.useShadow, round: $store.state.device.roundedCorners, center: page.alignCenter }" :style="{ fontFamily: page.font }">
+<div v-if="page" class="iroscrza" :class="{ shadow: $store.state.device.useShadow, round: $store.state.device.roundedCorners, center: page.alignCenter }" :style="{ fontFamily: page.font }" :key="path">
 	<header>
 		<div class="title">{{ page.title }}</div>
 	</header>
@@ -85,30 +85,46 @@ export default Vue.extend({
 		};
 	},
 
+	computed: {
+		path(): string {
+			return this.username + '/' + this.pageName;
+		}
+	},
+
+	watch: {
+		path() {
+			this.fetch();
+		}
+	},
+
 	created() {
-		this.$root.api('pages/show', {
-			name: this.pageName,
-			username: this.username,
-		}).then(page => {
-			this.page = page;
-			this.$emit('init', {
-				title: this.page.title,
-				icon: faStickyNote
-			});
-			const pageVars = this.getPageVars();
-			this.script = new Script(new ASEvaluator(this.page.variables, pageVars, {
-				randomSeed: Math.random(),
-				user: page.user,
-				visitor: this.$store.state.i,
-				page: page,
-				url: url
-			}), e => {
-				console.dir(e);
-			});
-		});
+		this.fetch();
 	},
 
 	methods: {
+		fetch() {
+			this.$root.api('pages/show', {
+				name: this.pageName,
+				username: this.username,
+			}).then(page => {
+				this.page = page;
+				this.$emit('init', {
+					title: this.page.title,
+					icon: faStickyNote
+				});
+				const pageVars = this.getPageVars();
+				this.script = new Script(new ASEvaluator(this.page.variables, pageVars, {
+					randomSeed: Math.random(),
+					user: page.user,
+					visitor: this.$store.state.i,
+					page: page,
+					url: url
+				}), e => {
+					console.dir(e);
+				});
+			});
+		},
+
 		getPageVars() {
 			return collectPageVars(this.page.content);
 		},