From a60fc390a036078a857693193cfd18b9ee42954b Mon Sep 17 00:00:00 2001
From: Hakaba Hitoyo <hakabahitoyo@yahoo.co.jp>
Date: Mon, 7 Jan 2019 17:26:47 +0000
Subject: [PATCH] Add instance information page for mobile

---
 src/boot/routes.js                             |  2 ++
 src/components/about/about.js                  | 13 +++++++++++++
 src/components/about/about.vue                 | 12 ++++++++++++
 src/components/side_drawer/side_drawer.vue     |  5 +++++
 .../terms_of_service_panel.js                  |  9 +++++++++
 .../terms_of_service_panel.vue                 | 18 ++++++++++++++++++
 src/i18n/en.json                               |  1 +
 7 files changed, 60 insertions(+)
 create mode 100644 src/components/about/about.js
 create mode 100644 src/components/about/about.vue
 create mode 100644 src/components/terms_of_service_panel/terms_of_service_panel.js
 create mode 100644 src/components/terms_of_service_panel/terms_of_service_panel.vue

diff --git a/src/boot/routes.js b/src/boot/routes.js
index e892839c..05513794 100644
--- a/src/boot/routes.js
+++ b/src/boot/routes.js
@@ -16,6 +16,7 @@ import Notifications from 'components/notifications/notifications.vue'
 import UserPanel from 'components/user_panel/user_panel.vue'
 import LoginForm from 'components/login_form/login_form.vue'
 import ChatPanel from 'components/chat_panel/chat_panel.vue'
+import About from 'components/about/about.vue'
 
 export default (store) => {
   return [
@@ -46,6 +47,7 @@ export default (store) => {
     { name: 'chat', path: '/chat', component: ChatPanel, props: () => ({ floating: false }) },
     { name: 'oauth-callback', path: '/oauth-callback', component: OAuthCallback, props: (route) => ({ code: route.query.code }) },
     { name: 'user-search', path: '/user-search', component: UserSearch, props: (route) => ({ query: route.query.query }) },
+    { name: 'about', path: '/about', component: About },
     { name: 'user-profile', path: '/(users/)?:name', component: UserProfile }
   ]
 }
diff --git a/src/components/about/about.js b/src/components/about/about.js
new file mode 100644
index 00000000..b4433b4e
--- /dev/null
+++ b/src/components/about/about.js
@@ -0,0 +1,13 @@
+import InstanceSpecificPanel from '../instance_specific_panel/instance_specific_panel.vue'
+import FeaturesPanel from '../features_panel/features_panel.vue'
+import TermsOfServicePanel from '../terms_of_service_panel/terms_of_service_panel.vue'
+
+const About = {
+  components: {
+    InstanceSpecificPanel,
+    FeaturesPanel,
+    TermsOfServicePanel
+  }
+}
+
+export default About
diff --git a/src/components/about/about.vue b/src/components/about/about.vue
new file mode 100644
index 00000000..bf87e0b8
--- /dev/null
+++ b/src/components/about/about.vue
@@ -0,0 +1,12 @@
+<template>
+  <div class="sidebar">
+    <instance-specific-panel></instance-specific-panel>
+    <features-panel></features-panel>
+    <terms-of-service-panel></terms-of-service-panel>
+  </div>
+</template>
+
+<script src="./about.js" ></script>
+
+<style lang="scss">
+</style>
diff --git a/src/components/side_drawer/side_drawer.vue b/src/components/side_drawer/side_drawer.vue
index f5ccba67..7c792deb 100644
--- a/src/components/side_drawer/side_drawer.vue
+++ b/src/components/side_drawer/side_drawer.vue
@@ -71,6 +71,11 @@
             {{ $t("settings.settings") }}
           </router-link>
         </li>
+        <li @click="toggleDrawer">
+          <router-link :to="{ name: 'about'}">
+            {{ $t("nav.about") }}
+          </router-link>
+        </li>
         <li v-if="currentUser" @click="toggleDrawer">
           <a @click="doLogout" href="#">
             {{ $t("login.logout") }}
diff --git a/src/components/terms_of_service_panel/terms_of_service_panel.js b/src/components/terms_of_service_panel/terms_of_service_panel.js
new file mode 100644
index 00000000..4276f8f7
--- /dev/null
+++ b/src/components/terms_of_service_panel/terms_of_service_panel.js
@@ -0,0 +1,9 @@
+const TermsOfServicePanel = {
+  computed: {
+    content () {
+      return this.$store.state.instance.tos
+    }
+  }
+}
+
+export default TermsOfServicePanel
diff --git a/src/components/terms_of_service_panel/terms_of_service_panel.vue b/src/components/terms_of_service_panel/terms_of_service_panel.vue
new file mode 100644
index 00000000..eb0f2527
--- /dev/null
+++ b/src/components/terms_of_service_panel/terms_of_service_panel.vue
@@ -0,0 +1,18 @@
+<template>
+  <div>
+    <div class="panel panel-default">
+      <div class="panel-body">
+        <div v-html="content" class="tos-content">
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script src="./terms_of_service_panel.js" ></script>
+
+<style lang="scss">
+.tos-content {
+  margin: 1em
+}
+</style>
diff --git a/src/i18n/en.json b/src/i18n/en.json
index eec101f7..8a6d1310 100644
--- a/src/i18n/en.json
+++ b/src/i18n/en.json
@@ -29,6 +29,7 @@
     "username": "Username"
   },
   "nav": {
+    "about": "About",
     "back": "Back",
     "chat": "Local Chat",
     "friend_requests": "Follow Requests",