summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorXeltica <7106976+Xeltica@users.noreply.github.com>2020-02-09 21:31:17 +0900
committerGitHub <noreply@github.com>2020-02-09 21:31:17 +0900
commitac5453232fa848d123cf19b461195d957b9dbc20 (patch)
treea196a07b5f249ab11a6bd127283e4291504072a5 /src
parentMerge branch 'develop' of https://github.com/syuilo/misskey into develop (diff)
downloadmisskey-ac5453232fa848d123cf19b461195d957b9dbc20.tar.gz
misskey-ac5453232fa848d123cf19b461195d957b9dbc20.tar.bz2
misskey-ac5453232fa848d123cf19b461195d957b9dbc20.zip
お知らせの固定表示 (#5887)
* お知らせの固定 * :v: * Update index.home.vue Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
Diffstat (limited to 'src')
-rw-r--r--src/client/components/misskey-flavored-markdown.vue2
-rw-r--r--src/client/pages/index.home.vue107
-rw-r--r--src/client/store.ts1
-rw-r--r--src/server/api/endpoints/announcements.ts7
4 files changed, 110 insertions, 7 deletions
diff --git a/src/client/components/misskey-flavored-markdown.vue b/src/client/components/misskey-flavored-markdown.vue
index 960ecf355c..8fe6aba0cf 100644
--- a/src/client/components/misskey-flavored-markdown.vue
+++ b/src/client/components/misskey-flavored-markdown.vue
@@ -1,5 +1,5 @@
<template>
-<mfm-core v-bind="$attrs" class="havbbuyv" :class="{ nowrap: $attrs['nowrap'] }" v-once/>
+<mfm-core v-bind="$attrs" class="havbbuyv" :class="{ nowrap: $attrs['nowrap'] }"/>
</template>
<script lang="ts">
diff --git a/src/client/pages/index.home.vue b/src/client/pages/index.home.vue
index 9f1642efa4..75ea81661d 100644
--- a/src/client/pages/index.home.vue
+++ b/src/client/pages/index.home.vue
@@ -13,16 +13,74 @@
<fa :icon="menuOpened ? faAngleUp : faAngleDown" style="margin-left: 8px;"/>
</button>
</portal>
+
+ <section class="_card tutorial" v-if="tutorial != -1">
+ <div class="_title">{{ $t('_tutorial.title') }}</div>
+ <div class="_content" v-if="tutorial === 0">
+ <div>{{ $t('_tutorial.step1_1') }}</div>
+ <div>{{ $t('_tutorial.step1_2') }}</div>
+ <div>{{ $t('_tutorial.step1_3') }}</div>
+ </div>
+ <div class="_content" v-else-if="tutorial === 1">
+ <div>{{ $t('_tutorial.step2_1') }}</div>
+ <div>{{ $t('_tutorial.step2_2') }}</div>
+ <router-link class="_link" to="/my/settings">{{ $t('editProfile') }}</router-link>
+ </div>
+ <div class="_content" v-else-if="tutorial === 2">
+ <div>{{ $t('_tutorial.step3_1') }}</div>
+ <div>{{ $t('_tutorial.step3_2') }}</div>
+ <div>{{ $t('_tutorial.step3_3') }}</div>
+ <small>{{ $t('_tutorial.step3_4') }}</small>
+ </div>
+ <div class="_content" v-else-if="tutorial === 3">
+ <div>{{ $t('_tutorial.step4_1') }}</div>
+ <div>{{ $t('_tutorial.step4_2') }}</div>
+ </div>
+ <div class="_content" v-else-if="tutorial === 4">
+ <div>{{ $t('_tutorial.step5_1') }}</div>
+ <i18n path="_tutorial.step5_2" tag="div">
+ <router-link class="_link" place="featured" to="/featured">{{ $t('featured') }}</router-link>
+ <router-link class="_link" place="explore" to="/explore">{{ $t('explore') }}</router-link>
+ </i18n>
+ <div>{{ $t('_tutorial.step5_3') }}</div>
+ <small>{{ $t('_tutorial.step5_4') }}</small>
+ </div>
+ <div class="_content" v-else-if="tutorial === 5">
+ <div>{{ $t('_tutorial.step6_1') }}</div>
+ <div>{{ $t('_tutorial.step6_2') }}</div>
+ <div>{{ $t('_tutorial.step6_3') }}</div>
+ </div>
+ <div class="_content" v-else-if="tutorial === 6">
+ <div>{{ $t('_tutorial.step7_1') }}</div>
+ <i18n path="_tutorial.step7_2" tag="div">
+ <router-link class="_link" place="help" to="/docs">{{ $t('help') }}</router-link>
+ </i18n>
+ <div>{{ $t('_tutorial.step7_3') }}</div>
+ </div>
+ <div class="_footer navigation">
+ <button class="arrow" @click="tutorial--" :disabled="tutorial === 0">
+ <fa :icon="faChevronLeft"/>
+ </button>
+ <span>{{ tutorial + 1 }} / 7</span>
+ <button class="arrow" @click="tutorial++" :disabled="tutorial === 6">
+ <fa :icon="faChevronRight"/>
+ </button>
+ <mk-button class="ok" @click="tutorial = -1" primary v-if="tutorial === 6"><fa :icon="faCheck"/> {{ $t('gotIt') }}</mk-button>
+ <mk-button class="ok" @click="tutorial++" primary v-else><fa :icon="faCheck"/> {{ $t('next') }}</mk-button>
+ </div>
+ </section>
+
<x-timeline ref="tl" :key="src === 'list' ? `list:${list.id}` : src === 'antenna' ? `antenna:${antenna.id}` : src" :src="src" :list="list" :antenna="antenna" @before="before()" @after="after()"/>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
-import { faAngleDown, faAngleUp, faHome, faShareAlt, faGlobe, faListUl, faSatellite, faCircle } from '@fortawesome/free-solid-svg-icons';
+import { faAngleDown, faAngleUp, faHome, faShareAlt, faGlobe, faListUl, faSatellite, faCircle, faChevronLeft, faChevronRight, faCheck } from '@fortawesome/free-solid-svg-icons';
import { faComments } from '@fortawesome/free-regular-svg-icons';
import Progress from '../scripts/loading';
import XTimeline from '../components/timeline.vue';
+import MkButton from '../components/ui/button.vue';
export default Vue.extend({
metaInfo() {
@@ -32,7 +90,8 @@ export default Vue.extend({
},
components: {
- XTimeline
+ XTimeline,
+ MkButton,
},
props: {
@@ -48,7 +107,7 @@ export default Vue.extend({
list: null,
antenna: null,
menuOpened: false,
- faAngleDown, faAngleUp, faHome, faShareAlt, faGlobe, faComments, faListUl, faSatellite, faCircle
+ faAngleDown, faAngleUp, faHome, faShareAlt, faGlobe, faComments, faListUl, faSatellite, faCircle, faChevronLeft, faChevronRight, faCheck
};
},
@@ -57,7 +116,11 @@ export default Vue.extend({
return {
't': this.focus
};
- }
+ },
+ tutorial: {
+ get() { return this.$store.state.settings.tutorial || 0; },
+ set(value) { this.$store.dispatch('settings/set', { key: 'tutorial', value }); }
+ },
},
watch: {
@@ -172,7 +235,41 @@ export default Vue.extend({
});
</script>
-<style lang="scss">
+<style lang="scss" scoped>
+.mk-home {
+ .tutorial {
+ margin-bottom: var(--margin);
+
+ > ._content {
+ > small {
+ opacity: 0.7;
+ }
+ }
+
+ > .navigation {
+ display: flex;
+ flex-direction: row;
+ align-items: baseline;
+ font-size: 18px;
+
+ > .arrow {
+ color: var(--fg);
+ background: none;
+ border: none;
+ font-size: inherit;
+
+ &:disabled {
+ opacity: 0.6;
+ }
+ }
+
+ > .ok {
+ margin-left: auto;
+ }
+ }
+ }
+}
+
._kjvfvyph_ {
position: relative;
height: 100%;
diff --git a/src/client/store.ts b/src/client/store.ts
index 04598525b7..8e75e0acf2 100644
--- a/src/client/store.ts
+++ b/src/client/store.ts
@@ -5,6 +5,7 @@ import * as nestedProperty from 'nested-property';
import MiOS from './mios';
const defaultSettings = {
+ tutorial: 0,
keepCw: false,
showFullAcct: false,
rememberNoteVisibility: false,
diff --git a/src/server/api/endpoints/announcements.ts b/src/server/api/endpoints/announcements.ts
index c6050d6092..2b7f90c31f 100644
--- a/src/server/api/endpoints/announcements.ts
+++ b/src/server/api/endpoints/announcements.ts
@@ -13,6 +13,11 @@ export const meta = {
default: 10
},
+ withUnreads: {
+ validator: $.optional.boolean,
+ default: false
+ },
+
sinceId: {
validator: $.optional.type(ID),
},
@@ -38,5 +43,5 @@ export default define(meta, async (ps, user) => {
}
}
- return announcements;
+ return ps.withUnreads ? announcements.filter((a: any) => !a.isRead) : announcements;
});