Compare commits
	
		
			10 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					c87a43bdba | ||
| 
						 | 
					fa6a7186e0 | ||
| 
						 | 
					34a5adf951 | ||
| 
						 | 
					4b3ece439e | ||
| 
						 | 
					10dc97c43f | ||
| 
						 | 
					2c59da36c2 | ||
| 
						 | 
					f457fb6067 | ||
| 
						 | 
					6843019481 | ||
| 
						 | 
					17cc5a9b95 | ||
| 
						 | 
					ecf44a4fc7 | 
@@ -1161,8 +1161,8 @@ mobile/views/pages/settings/settings.profile.vue:
 | 
			
		||||
  banner: "Banner"
 | 
			
		||||
  is-cat: "This account is a Cat"
 | 
			
		||||
  is-locked: "フォローを承認制にする"
 | 
			
		||||
  advanced: "その他"
 | 
			
		||||
  privacy: "プライバシー"
 | 
			
		||||
  advanced: "Advanced"
 | 
			
		||||
  privacy: "Privacy"
 | 
			
		||||
  save: "Update profile"
 | 
			
		||||
  saved: "Profile updated"
 | 
			
		||||
  uploading: "Uploading"
 | 
			
		||||
 
 | 
			
		||||
@@ -116,6 +116,8 @@ common:
 | 
			
		||||
  use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
 | 
			
		||||
  verified-user: "公式アカウント"
 | 
			
		||||
  disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
 | 
			
		||||
  always-show-nsfw: "常に閲覧注意のメディアを表示する"
 | 
			
		||||
  this-setting-is-this-device-only: "このデバイスのみ"
 | 
			
		||||
 | 
			
		||||
  do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,8 @@
 | 
			
		||||
{
 | 
			
		||||
	"name": "misskey",
 | 
			
		||||
	"author": "syuilo <i@syuilo.com>",
 | 
			
		||||
	"version": "8.36.0",
 | 
			
		||||
	"clientVersion": "1.0.9637",
 | 
			
		||||
	"version": "8.38.0",
 | 
			
		||||
	"clientVersion": "1.0.9647",
 | 
			
		||||
	"codename": "nighthike",
 | 
			
		||||
	"main": "./built/index.js",
 | 
			
		||||
	"private": true,
 | 
			
		||||
@@ -222,7 +222,7 @@
 | 
			
		||||
		"vuex-persistedstate": "2.5.4",
 | 
			
		||||
		"web-push": "3.3.2",
 | 
			
		||||
		"webfinger.js": "2.6.6",
 | 
			
		||||
		"webpack": "4.18.0",
 | 
			
		||||
		"webpack": "4.19.0",
 | 
			
		||||
		"webpack-cli": "3.1.0",
 | 
			
		||||
		"websocket": "1.0.26",
 | 
			
		||||
		"ws": "6.0.0",
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
<template>
 | 
			
		||||
<div class="ldwbgwstjsdgcjruamauqdrffetqudry" v-if="image.isSensitive && hide" @click="hide = false">
 | 
			
		||||
<div class="ldwbgwstjsdgcjruamauqdrffetqudry" v-if="image.isSensitive && hide && !$store.state.device.alwaysShowNsfw" @click="hide = false">
 | 
			
		||||
	<div>
 | 
			
		||||
		<b>%fa:exclamation-triangle% %i18n:@sensitive%</b>
 | 
			
		||||
		<span>%i18n:@click-to-show%</span>
 | 
			
		||||
 
 | 
			
		||||
@@ -10,8 +10,7 @@
 | 
			
		||||
	</div>
 | 
			
		||||
 | 
			
		||||
	<!-- トランジションを有効にするとなぜかメモリリークする -->
 | 
			
		||||
	<!--<transition-group name="mk-notes" class="transition">-->
 | 
			
		||||
	<div class="notes">
 | 
			
		||||
	<transition-group name="mk-notes" class="notes transition" tag="div">
 | 
			
		||||
		<template v-for="(note, i) in _notes">
 | 
			
		||||
			<x-note :note="note" :key="note.id" @update:note="onNoteUpdated(i, $event)"/>
 | 
			
		||||
			<p class="date" :key="note.id + '_date'" v-if="i != notes.length - 1 && note._date != _notes[i + 1]._date">
 | 
			
		||||
@@ -19,8 +18,7 @@
 | 
			
		||||
				<span>%fa:angle-down%{{ _notes[i + 1]._datetext }}</span>
 | 
			
		||||
			</p>
 | 
			
		||||
		</template>
 | 
			
		||||
	</div>
 | 
			
		||||
	<!--</transition-group>-->
 | 
			
		||||
	</transition-group>
 | 
			
		||||
 | 
			
		||||
	<footer v-if="more">
 | 
			
		||||
		<button @click="loadMore" :disabled="moreFetching" :style="{ cursor: moreFetching ? 'wait' : 'pointer' }">
 | 
			
		||||
 
 | 
			
		||||
@@ -2,8 +2,7 @@
 | 
			
		||||
<div class="mk-notifications">
 | 
			
		||||
	<div class="notifications" v-if="notifications.length != 0">
 | 
			
		||||
		<!-- トランジションを有効にするとなぜかメモリリークする -->
 | 
			
		||||
		<!-- <transition-group name="mk-notifications" class="transition"> -->
 | 
			
		||||
		<div>
 | 
			
		||||
		<transition-group name="mk-notifications" class="transition" tag="div">
 | 
			
		||||
			<template v-for="(notification, i) in _notifications">
 | 
			
		||||
				<div class="notification" :class="notification.type" :key="notification.id">
 | 
			
		||||
					<mk-time :time="notification.createdAt"/>
 | 
			
		||||
@@ -97,8 +96,7 @@
 | 
			
		||||
					<span>%fa:angle-down%{{ _notifications[i + 1]._datetext }}</span>
 | 
			
		||||
				</p>
 | 
			
		||||
			</template>
 | 
			
		||||
		</div>
 | 
			
		||||
		<!-- </transition-group> -->
 | 
			
		||||
		</transition-group>
 | 
			
		||||
	</div>
 | 
			
		||||
	<button class="more" :class="{ fetching: fetchingMoreNotifications }" v-if="moreNotifications" @click="fetchMoreNotifications" :disabled="fetchingMoreNotifications">
 | 
			
		||||
		<template v-if="fetchingMoreNotifications">%fa:spinner .pulse .fw%</template>{{ fetchingMoreNotifications ? '%i18n:common.loading%' : '%i18n:@more%' }}
 | 
			
		||||
 
 | 
			
		||||
@@ -20,7 +20,7 @@
 | 
			
		||||
 | 
			
		||||
		<section class="web" v-show="page == 'web'">
 | 
			
		||||
			<h1>%i18n:@behaviour%</h1>
 | 
			
		||||
			<mk-switch v-model="$store.state.settings.fetchOnScroll" @change="onChangeFetchOnScroll" text="%i18n:@fetch-on-scroll%">
 | 
			
		||||
			<mk-switch v-model="fetchOnScroll" text="%i18n:@fetch-on-scroll%">
 | 
			
		||||
				<span>%i18n:@fetch-on-scroll-desc%</span>
 | 
			
		||||
			</mk-switch>
 | 
			
		||||
			<mk-switch v-model="autoPopout" text="%i18n:@auto-popout%">
 | 
			
		||||
@@ -29,7 +29,7 @@
 | 
			
		||||
 | 
			
		||||
			<section>
 | 
			
		||||
				<header>%i18n:@note-visibility%</header>
 | 
			
		||||
				<mk-switch v-model="$store.state.settings.rememberNoteVisibility" @change="onChangeRememberNoteVisibility" text="%i18n:@remember-note-visibility%"/>
 | 
			
		||||
				<mk-switch v-model="rememberNoteVisibility" text="%i18n:@remember-note-visibility%"/>
 | 
			
		||||
				<section>
 | 
			
		||||
					<header>%i18n:@default-note-visibility%</header>
 | 
			
		||||
					<ui-select v-model="defaultNoteVisibility">
 | 
			
		||||
@@ -59,24 +59,25 @@
 | 
			
		||||
				<button class="ui" @click="updateWallpaper">%i18n:@choose-wallpaper%</button>
 | 
			
		||||
				<button class="ui" @click="deleteWallpaper">%i18n:@delete-wallpaper%</button>
 | 
			
		||||
				<mk-switch v-model="darkmode" text="%i18n:@dark-mode%"/>
 | 
			
		||||
				<mk-switch v-model="$store.state.settings.circleIcons" @change="onChangeCircleIcons" text="%i18n:@circle-icons%"/>
 | 
			
		||||
				<mk-switch v-model="$store.state.settings.contrastedAcct" @change="onChangeContrastedAcct" text="%i18n:@contrasted-acct%"/>
 | 
			
		||||
				<mk-switch v-model="$store.state.settings.gradientWindowHeader" @change="onChangeGradientWindowHeader" text="%i18n:@gradient-window-header%"/>
 | 
			
		||||
				<mk-switch v-model="$store.state.settings.iLikeSushi" @change="onChangeILikeSushi" text="%i18n:common.i-like-sushi%"/>
 | 
			
		||||
				<mk-switch v-model="circleIcons" text="%i18n:@circle-icons%"/>
 | 
			
		||||
				<mk-switch v-model="contrastedAcct" text="%i18n:@contrasted-acct%"/>
 | 
			
		||||
				<mk-switch v-model="gradientWindowHeader" text="%i18n:@gradient-window-header%"/>
 | 
			
		||||
				<mk-switch v-model="iLikeSushi" text="%i18n:common.i-like-sushi%"/>
 | 
			
		||||
			</div>
 | 
			
		||||
			<mk-switch v-model="$store.state.settings.showPostFormOnTopOfTl" @change="onChangeShowPostFormOnTopOfTl" text="%i18n:@post-form-on-timeline%"/>
 | 
			
		||||
			<mk-switch v-model="$store.state.settings.suggestRecentHashtags" @change="onChangeSuggestRecentHashtags" text="%i18n:@suggest-recent-hashtags%"/>
 | 
			
		||||
			<mk-switch v-model="$store.state.settings.showClockOnHeader" @change="onChangeShowClockOnHeader" text="%i18n:@show-clock-on-header%"/>
 | 
			
		||||
			<mk-switch v-model="$store.state.settings.showReplyTarget" @change="onChangeShowReplyTarget" text="%i18n:@show-reply-target%"/>
 | 
			
		||||
			<mk-switch v-model="$store.state.settings.showMyRenotes" @change="onChangeShowMyRenotes" text="%i18n:@show-my-renotes%"/>
 | 
			
		||||
			<mk-switch v-model="$store.state.settings.showRenotedMyNotes" @change="onChangeShowRenotedMyNotes" text="%i18n:@show-renoted-my-notes%"/>
 | 
			
		||||
			<mk-switch v-model="$store.state.settings.showLocalRenotes" @change="onChangeShowLocalRenotes" text="%i18n:@show-local-renotes%"/>
 | 
			
		||||
			<mk-switch v-model="$store.state.settings.showMaps" @change="onChangeShowMaps" text="%i18n:@show-maps%">
 | 
			
		||||
			<mk-switch v-model="showPostFormOnTopOfTl" text="%i18n:@post-form-on-timeline%"/>
 | 
			
		||||
			<mk-switch v-model="suggestRecentHashtags" text="%i18n:@suggest-recent-hashtags%"/>
 | 
			
		||||
			<mk-switch v-model="showClockOnHeader" text="%i18n:@show-clock-on-header%"/>
 | 
			
		||||
			<mk-switch v-model="alwaysShowNsfw" text="%i18n:common.always-show-nsfw%"/>
 | 
			
		||||
			<mk-switch v-model="showReplyTarget" text="%i18n:@show-reply-target%"/>
 | 
			
		||||
			<mk-switch v-model="showMyRenotes" text="%i18n:@show-my-renotes%"/>
 | 
			
		||||
			<mk-switch v-model="showRenotedMyNotes" text="%i18n:@show-renoted-my-notes%"/>
 | 
			
		||||
			<mk-switch v-model="showLocalRenotes" text="%i18n:@show-local-renotes%"/>
 | 
			
		||||
			<mk-switch v-model="showMaps" text="%i18n:@show-maps%">
 | 
			
		||||
				<span>%i18n:@show-maps-desc%</span>
 | 
			
		||||
			</mk-switch>
 | 
			
		||||
			<mk-switch v-model="$store.state.settings.disableAnimatedMfm" @change="onChangeDisableAnimatedMfm" text="%i18n:common.disable-animated-mfm%"/>
 | 
			
		||||
			<mk-switch v-model="$store.state.settings.games.reversi.showBoardLabels" @change="onChangeReversiBoardLabels" text="%i18n:common.show-reversi-board-labels%"/>
 | 
			
		||||
			<mk-switch v-model="$store.state.settings.games.reversi.useContrastStones" @change="onChangeUseContrastReversiStones" text="%i18n:common.use-contrast-reversi-stones%"/>
 | 
			
		||||
			<mk-switch v-model="disableAnimatedMfm" text="%i18n:common.disable-animated-mfm%"/>
 | 
			
		||||
			<mk-switch v-model="games_reversi_showBoardLabels" text="%i18n:common.show-reversi-board-labels%"/>
 | 
			
		||||
			<mk-switch v-model="games_reversi_useContrastStones" text="%i18n:common.use-contrast-reversi-stones%"/>
 | 
			
		||||
		</section>
 | 
			
		||||
 | 
			
		||||
		<section class="web" v-show="page == 'web'">
 | 
			
		||||
@@ -98,7 +99,7 @@
 | 
			
		||||
 | 
			
		||||
		<section class="web" v-show="page == 'web'">
 | 
			
		||||
			<h1>%i18n:@mobile%</h1>
 | 
			
		||||
			<mk-switch v-model="$store.state.settings.disableViaMobile" @change="onChangeDisableViaMobile" text="%i18n:@disable-via-mobile%"/>
 | 
			
		||||
			<mk-switch v-model="disableViaMobile" text="%i18n:@disable-via-mobile%"/>
 | 
			
		||||
		</section>
 | 
			
		||||
 | 
			
		||||
		<section class="web" v-show="page == 'web'">
 | 
			
		||||
@@ -255,11 +256,6 @@ export default Vue.extend({
 | 
			
		||||
			set(value) { this.$store.commit('device/set', { key: 'apiViaStream', value }); }
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		defaultNoteVisibility: {
 | 
			
		||||
			get() { return this.$store.state.settings.defaultNoteVisibility; },
 | 
			
		||||
			set(value) { this.$store.commit('settings/set', { key: 'defaultNoteVisibility', value }); }
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		autoPopout: {
 | 
			
		||||
			get() { return this.$store.state.device.autoPopout; },
 | 
			
		||||
			set(value) { this.$store.commit('device/set', { key: 'autoPopout', value }); }
 | 
			
		||||
@@ -298,7 +294,107 @@ export default Vue.extend({
 | 
			
		||||
		enableExperimentalFeatures: {
 | 
			
		||||
			get() { return this.$store.state.device.enableExperimentalFeatures; },
 | 
			
		||||
			set(value) { this.$store.commit('device/set', { key: 'enableExperimentalFeatures', value }); }
 | 
			
		||||
		}
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		alwaysShowNsfw: {
 | 
			
		||||
			get() { return this.$store.state.device.alwaysShowNsfw; },
 | 
			
		||||
			set(value) { this.$store.commit('device/set', { key: 'alwaysShowNsfw', value }); }
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		fetchOnScroll: {
 | 
			
		||||
			get() { return this.$store.state.settings.fetchOnScroll; },
 | 
			
		||||
			set(value) { this.$store.dispatch('settings/set', { key: 'fetchOnScroll', value }); }
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		rememberNoteVisibility: {
 | 
			
		||||
			get() { return this.$store.state.settings.rememberNoteVisibility; },
 | 
			
		||||
			set(value) { this.$store.dispatch('settings/set', { key: 'rememberNoteVisibility', value }); }
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		defaultNoteVisibility: {
 | 
			
		||||
			get() { return this.$store.state.settings.defaultNoteVisibility; },
 | 
			
		||||
			set(value) { this.$store.dispatch('settings/set', { key: 'defaultNoteVisibility', value }); }
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		showReplyTarget: {
 | 
			
		||||
			get() { return this.$store.state.settings.showReplyTarget; },
 | 
			
		||||
			set(value) { this.$store.dispatch('settings/set', { key: 'showReplyTarget', value }); }
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		showMyRenotes: {
 | 
			
		||||
			get() { return this.$store.state.settings.showMyRenotes; },
 | 
			
		||||
			set(value) { this.$store.dispatch('settings/set', { key: 'showMyRenotes', value }); }
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		showRenotedMyNotes: {
 | 
			
		||||
			get() { return this.$store.state.settings.showRenotedMyNotes; },
 | 
			
		||||
			set(value) { this.$store.dispatch('settings/set', { key: 'showRenotedMyNotes', value }); }
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		showLocalRenotes: {
 | 
			
		||||
			get() { return this.$store.state.settings.showLocalRenotes; },
 | 
			
		||||
			set(value) { this.$store.dispatch('settings/set', { key: 'showLocalRenotes', value }); }
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		showPostFormOnTopOfTl: {
 | 
			
		||||
			get() { return this.$store.state.settings.showPostFormOnTopOfTl; },
 | 
			
		||||
			set(value) { this.$store.dispatch('settings/set', { key: 'showPostFormOnTopOfTl', value }); }
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		suggestRecentHashtags: {
 | 
			
		||||
			get() { return this.$store.state.settings.suggestRecentHashtags; },
 | 
			
		||||
			set(value) { this.$store.dispatch('settings/set', { key: 'suggestRecentHashtags', value }); }
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		showClockOnHeader: {
 | 
			
		||||
			get() { return this.$store.state.settings.showClockOnHeader; },
 | 
			
		||||
			set(value) { this.$store.dispatch('settings/set', { key: 'showClockOnHeader', value }); }
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		showMaps: {
 | 
			
		||||
			get() { return this.$store.state.settings.showMaps; },
 | 
			
		||||
			set(value) { this.$store.dispatch('settings/set', { key: 'showMaps', value }); }
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		circleIcons: {
 | 
			
		||||
			get() { return this.$store.state.settings.circleIcons; },
 | 
			
		||||
			set(value) { this.$store.dispatch('settings/set', { key: 'circleIcons', value }); }
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		contrastedAcct: {
 | 
			
		||||
			get() { return this.$store.state.settings.contrastedAcct; },
 | 
			
		||||
			set(value) { this.$store.dispatch('settings/set', { key: 'contrastedAcct', value }); }
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		iLikeSushi: {
 | 
			
		||||
			get() { return this.$store.state.settings.iLikeSushi; },
 | 
			
		||||
			set(value) { this.$store.dispatch('settings/set', { key: 'iLikeSushi', value }); }
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		games_reversi_showBoardLabels: {
 | 
			
		||||
			get() { return this.$store.state.settings.games.reversi.showBoardLabels; },
 | 
			
		||||
			set(value) { this.$store.dispatch('settings/set', { key: 'games.reversi.showBoardLabels', value }); }
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		games_reversi_useContrastStones: {
 | 
			
		||||
			get() { return this.$store.state.settings.games.reversi.useContrastStones; },
 | 
			
		||||
			set(value) { this.$store.dispatch('settings/set', { key: 'games.reversi.useContrastStones', value }); }
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		disableAnimatedMfm: {
 | 
			
		||||
			get() { return this.$store.state.settings.disableAnimatedMfm; },
 | 
			
		||||
			set(value) { this.$store.dispatch('settings/set', { key: 'disableAnimatedMfm', value }); }
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		disableViaMobile: {
 | 
			
		||||
			get() { return this.$store.state.settings.disableViaMobile; },
 | 
			
		||||
			set(value) { this.$store.dispatch('settings/set', { key: 'disableViaMobile', value }); }
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		gradientWindowHeader: {
 | 
			
		||||
			get() { return this.$store.state.settings.gradientWindowHeader; },
 | 
			
		||||
			set(value) { this.$store.dispatch('settings/set', { key: 'gradientWindowHeader', value }); }
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
	created() {
 | 
			
		||||
		(this as any).os.getMeta().then(meta => {
 | 
			
		||||
@@ -327,125 +423,11 @@ export default Vue.extend({
 | 
			
		||||
				wallpaperId: null
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		onChangeFetchOnScroll(v) {
 | 
			
		||||
			this.$store.dispatch('settings/set', {
 | 
			
		||||
				key: 'fetchOnScroll',
 | 
			
		||||
				value: v
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		onChangeRememberNoteVisibility(v) {
 | 
			
		||||
			this.$store.dispatch('settings/set', {
 | 
			
		||||
				key: 'rememberNoteVisibility',
 | 
			
		||||
				value: v
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		onChangeAutoWatch(v) {
 | 
			
		||||
			(this as any).api('i/update', {
 | 
			
		||||
				autoWatch: v
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		onChangeDark(v) {
 | 
			
		||||
			this.$store.dispatch('settings/set', {
 | 
			
		||||
				key: 'dark',
 | 
			
		||||
				value: v
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		onChangeShowPostFormOnTopOfTl(v) {
 | 
			
		||||
			this.$store.dispatch('settings/set', {
 | 
			
		||||
				key: 'showPostFormOnTopOfTl',
 | 
			
		||||
				value: v
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		onChangeSuggestRecentHashtags(v) {
 | 
			
		||||
			this.$store.dispatch('settings/set', {
 | 
			
		||||
				key: 'suggestRecentHashtags',
 | 
			
		||||
				value: v
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		onChangeShowClockOnHeader(v) {
 | 
			
		||||
			this.$store.dispatch('settings/set', {
 | 
			
		||||
				key: 'showClockOnHeader',
 | 
			
		||||
				value: v
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		onChangeShowReplyTarget(v) {
 | 
			
		||||
			this.$store.dispatch('settings/set', {
 | 
			
		||||
				key: 'showReplyTarget',
 | 
			
		||||
				value: v
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		onChangeShowMyRenotes(v) {
 | 
			
		||||
			this.$store.dispatch('settings/set', {
 | 
			
		||||
				key: 'showMyRenotes',
 | 
			
		||||
				value: v
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		onChangeShowRenotedMyNotes(v) {
 | 
			
		||||
			this.$store.dispatch('settings/set', {
 | 
			
		||||
				key: 'showRenotedMyNotes',
 | 
			
		||||
				value: v
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		onChangeShowLocalRenotes(v) {
 | 
			
		||||
			this.$store.dispatch('settings/set', {
 | 
			
		||||
				key: 'showLocalRenotes',
 | 
			
		||||
				value: v
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		onChangeShowMaps(v) {
 | 
			
		||||
			this.$store.dispatch('settings/set', {
 | 
			
		||||
				key: 'showMaps',
 | 
			
		||||
				value: v
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		onChangeCircleIcons(v) {
 | 
			
		||||
			this.$store.dispatch('settings/set', {
 | 
			
		||||
				key: 'circleIcons',
 | 
			
		||||
				value: v
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		onChangeContrastedAcct(v) {
 | 
			
		||||
			this.$store.dispatch('settings/set', {
 | 
			
		||||
				key: 'contrastedAcct',
 | 
			
		||||
				value: v
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		onChangeILikeSushi(v) {
 | 
			
		||||
			this.$store.dispatch('settings/set', {
 | 
			
		||||
				key: 'iLikeSushi',
 | 
			
		||||
				value: v
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		onChangeReversiBoardLabels(v) {
 | 
			
		||||
			this.$store.dispatch('settings/set', {
 | 
			
		||||
				key: 'games.reversi.showBoardLabels',
 | 
			
		||||
				value: v
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		onChangeUseContrastReversiStones(v) {
 | 
			
		||||
			this.$store.dispatch('settings/set', {
 | 
			
		||||
				key: 'games.reversi.useContrastStones',
 | 
			
		||||
				value: v
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		onChangeDisableAnimatedMfm(v) {
 | 
			
		||||
			this.$store.dispatch('settings/set', {
 | 
			
		||||
				key: 'disableAnimatedMfm',
 | 
			
		||||
				value: v
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		onChangeGradientWindowHeader(v) {
 | 
			
		||||
			this.$store.dispatch('settings/set', {
 | 
			
		||||
				key: 'gradientWindowHeader',
 | 
			
		||||
				value: v
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		onChangeDisableViaMobile(v) {
 | 
			
		||||
			this.$store.dispatch('settings/set', {
 | 
			
		||||
				key: 'disableViaMobile',
 | 
			
		||||
				value: v
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		checkForUpdate() {
 | 
			
		||||
			this.checkingForUpdate = true;
 | 
			
		||||
			checkForUpdate((this as any).os, true, true).then(newer => {
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
<template>
 | 
			
		||||
<div class="qjewsnkgzzxlxtzncydssfbgjibiehcy" v-if="image.isSensitive && hide" @click="hide = false">
 | 
			
		||||
<div class="qjewsnkgzzxlxtzncydssfbgjibiehcy" v-if="image.isSensitive && hide && !$store.state.device.alwaysShowNsfw" @click="hide = false">
 | 
			
		||||
	<div>
 | 
			
		||||
		<b>%fa:exclamation-triangle% %i18n:@sensitive%</b>
 | 
			
		||||
		<span>%i18n:@click-to-show%</span>
 | 
			
		||||
 
 | 
			
		||||
@@ -14,8 +14,7 @@
 | 
			
		||||
	</div>
 | 
			
		||||
 | 
			
		||||
	<!-- トランジションを有効にするとなぜかメモリリークする -->
 | 
			
		||||
	<!-- <transition-group name="mk-notes" class="transition"> -->
 | 
			
		||||
	<div class="transition">
 | 
			
		||||
	<transition-group name="mk-notes" class="transition" tag="div">
 | 
			
		||||
		<template v-for="(note, i) in _notes">
 | 
			
		||||
			<mk-note :note="note" :key="note.id" @update:note="onNoteUpdated(i, $event)"/>
 | 
			
		||||
			<p class="date" :key="note.id + '_date'" v-if="i != notes.length - 1 && note._date != _notes[i + 1]._date">
 | 
			
		||||
@@ -23,8 +22,7 @@
 | 
			
		||||
				<span>%fa:angle-down%{{ _notes[i + 1]._datetext }}</span>
 | 
			
		||||
			</p>
 | 
			
		||||
		</template>
 | 
			
		||||
	</div>
 | 
			
		||||
	<!-- </transition-group> -->
 | 
			
		||||
	</transition-group>
 | 
			
		||||
 | 
			
		||||
	<footer v-if="more">
 | 
			
		||||
		<button @click="loadMore" :disabled="moreFetching" :style="{ cursor: moreFetching ? 'wait' : 'pointer' }">
 | 
			
		||||
 
 | 
			
		||||
@@ -45,7 +45,7 @@ export default Vue.extend({
 | 
			
		||||
	$height = 78px
 | 
			
		||||
 | 
			
		||||
	position fixed
 | 
			
		||||
	z-index 1024
 | 
			
		||||
	z-index 10000
 | 
			
		||||
	left 0
 | 
			
		||||
	right 0
 | 
			
		||||
	width 100%
 | 
			
		||||
 
 | 
			
		||||
@@ -12,21 +12,22 @@
 | 
			
		||||
 | 
			
		||||
				<section>
 | 
			
		||||
					<ui-switch v-model="darkmode">%i18n:@dark-mode%</ui-switch>
 | 
			
		||||
					<ui-switch v-model="$store.state.settings.circleIcons" @change="onChangeCircleIcons">%i18n:@circle-icons%</ui-switch>
 | 
			
		||||
					<ui-switch v-model="$store.state.settings.contrastedAcct" @change="onChangeContrastedAcct">%i18n:@contrasted-acct%</ui-switch>
 | 
			
		||||
					<ui-switch v-model="$store.state.settings.iLikeSushi" @change="onChangeILikeSushi">%i18n:common.i-like-sushi%</ui-switch>
 | 
			
		||||
					<ui-switch v-model="$store.state.settings.disableAnimatedMfm" @change="onChangeDisableAnimatedMfm">%i18n:common.disable-animated-mfm%</ui-switch>
 | 
			
		||||
					<ui-switch v-model="$store.state.settings.games.reversi.showBoardLabels" @change="onChangeReversiBoardLabels">%i18n:common.show-reversi-board-labels%</ui-switch>
 | 
			
		||||
					<ui-switch v-model="$store.state.settings.games.reversi.useContrastStones" @change="onChangeUseContrastReversiStones">%i18n:common.use-contrast-reversi-stones%</ui-switch>
 | 
			
		||||
					<ui-switch v-model="circleIcons">%i18n:@circle-icons%</ui-switch>
 | 
			
		||||
					<ui-switch v-model="contrastedAcct">%i18n:@contrasted-acct%</ui-switch>
 | 
			
		||||
					<ui-switch v-model="iLikeSushi">%i18n:common.i-like-sushi%</ui-switch>
 | 
			
		||||
					<ui-switch v-model="disableAnimatedMfm">%i18n:common.disable-animated-mfm%</ui-switch>
 | 
			
		||||
					<ui-switch v-model="alwaysShowNsfw">%i18n:common.always-show-nsfw% (%i18n:common.this-setting-is-this-device-only%)</ui-switch>
 | 
			
		||||
					<ui-switch v-model="games_reversi_showBoardLabels">%i18n:common.show-reversi-board-labels%</ui-switch>
 | 
			
		||||
					<ui-switch v-model="games_reversi_useContrastStones">%i18n:common.use-contrast-reversi-stones%</ui-switch>
 | 
			
		||||
				</section>
 | 
			
		||||
 | 
			
		||||
				<section>
 | 
			
		||||
					<header>%i18n:@timeline%</header>
 | 
			
		||||
					<div>
 | 
			
		||||
						<ui-switch v-model="$store.state.settings.showReplyTarget" @change="onChangeShowReplyTarget">%i18n:@show-reply-target%</ui-switch>
 | 
			
		||||
						<ui-switch v-model="$store.state.settings.showMyRenotes" @change="onChangeShowMyRenotes">%i18n:@show-my-renotes%</ui-switch>
 | 
			
		||||
						<ui-switch v-model="$store.state.settings.showRenotedMyNotes" @change="onChangeShowRenotedMyNotes">%i18n:@show-renoted-my-notes%</ui-switch>
 | 
			
		||||
						<ui-switch v-model="$store.state.settings.showLocalRenotes" @change="onChangeShowLocalRenotes">%i18n:@show-local-renotes%</ui-switch>
 | 
			
		||||
						<ui-switch v-model="showReplyTarget">%i18n:@show-reply-target%</ui-switch>
 | 
			
		||||
						<ui-switch v-model="showMyRenotes">%i18n:@show-my-renotes%</ui-switch>
 | 
			
		||||
						<ui-switch v-model="showRenotedMyNotes">%i18n:@show-renoted-my-notes%</ui-switch>
 | 
			
		||||
						<ui-switch v-model="showLocalRenotes">%i18n:@show-local-renotes%</ui-switch>
 | 
			
		||||
					</div>
 | 
			
		||||
				</section>
 | 
			
		||||
 | 
			
		||||
@@ -47,16 +48,16 @@
 | 
			
		||||
				<div slot="title">%fa:cog% %i18n:@behavior%</div>
 | 
			
		||||
 | 
			
		||||
				<section>
 | 
			
		||||
					<ui-switch v-model="$store.state.settings.fetchOnScroll" @change="onChangeFetchOnScroll">%i18n:@fetch-on-scroll%</ui-switch>
 | 
			
		||||
					<ui-switch v-model="$store.state.settings.disableViaMobile" @change="onChangeDisableViaMobile">%i18n:@disable-via-mobile%</ui-switch>
 | 
			
		||||
					<ui-switch v-model="fetchOnScroll">%i18n:@fetch-on-scroll%</ui-switch>
 | 
			
		||||
					<ui-switch v-model="disableViaMobile">%i18n:@disable-via-mobile%</ui-switch>
 | 
			
		||||
					<ui-switch v-model="loadRawImages">%i18n:@load-raw-images%</ui-switch>
 | 
			
		||||
					<ui-switch v-model="$store.state.settings.loadRemoteMedia" @change="onChangeLoadRemoteMedia">%i18n:@load-remote-media%</ui-switch>
 | 
			
		||||
					<ui-switch v-model="loadRemoteMedia">%i18n:@load-remote-media%</ui-switch>
 | 
			
		||||
					<ui-switch v-model="lightmode">%i18n:@i-am-under-limited-internet%</ui-switch>
 | 
			
		||||
				</section>
 | 
			
		||||
 | 
			
		||||
				<section>
 | 
			
		||||
					<header>%i18n:@note-visibility%</header>
 | 
			
		||||
					<ui-switch v-model="$store.state.settings.rememberNoteVisibility" @change="onChangeRememberNoteVisibility">%i18n:@remember-note-visibility%</ui-switch>
 | 
			
		||||
					<ui-switch v-model="rememberNoteVisibility">%i18n:@remember-note-visibility%</ui-switch>
 | 
			
		||||
					<section>
 | 
			
		||||
						<header>%i18n:@default-note-visibility%</header>
 | 
			
		||||
						<ui-select v-model="defaultNoteVisibility">
 | 
			
		||||
@@ -166,6 +167,11 @@ export default Vue.extend({
 | 
			
		||||
			set(value) { this.$store.commit('device/set', { key: 'darkmode', value }); }
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		alwaysShowNsfw: {
 | 
			
		||||
			get() { return this.$store.state.device.alwaysShowNsfw; },
 | 
			
		||||
			set(value) { this.$store.commit('device/set', { key: 'alwaysShowNsfw', value }); }
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		postStyle: {
 | 
			
		||||
			get() { return this.$store.state.device.postStyle; },
 | 
			
		||||
			set(value) { this.$store.commit('device/set', { key: 'postStyle', value }); }
 | 
			
		||||
@@ -176,11 +182,6 @@ export default Vue.extend({
 | 
			
		||||
			set(value) { this.$store.commit('device/set', { key: 'mobileNotificationPosition', value }); }
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		defaultNoteVisibility: {
 | 
			
		||||
			get() { return this.$store.state.settings.defaultNoteVisibility; },
 | 
			
		||||
			set(value) { this.$store.commit('settings/set', { key: 'defaultNoteVisibility', value }); }
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		lightmode: {
 | 
			
		||||
			get() { return this.$store.state.device.lightmode; },
 | 
			
		||||
			set(value) { this.$store.commit('device/set', { key: 'lightmode', value }); }
 | 
			
		||||
@@ -200,6 +201,81 @@ export default Vue.extend({
 | 
			
		||||
			get() { return this.$store.state.device.enableSounds; },
 | 
			
		||||
			set(value) { this.$store.commit('device/set', { key: 'enableSounds', value }); }
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		fetchOnScroll: {
 | 
			
		||||
			get() { return this.$store.state.settings.fetchOnScroll; },
 | 
			
		||||
			set(value) { this.$store.dispatch('settings/set', { key: 'fetchOnScroll', value }); }
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		rememberNoteVisibility: {
 | 
			
		||||
			get() { return this.$store.state.settings.rememberNoteVisibility; },
 | 
			
		||||
			set(value) { this.$store.dispatch('settings/set', { key: 'rememberNoteVisibility', value }); }
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		disableViaMobile: {
 | 
			
		||||
			get() { return this.$store.state.settings.disableViaMobile; },
 | 
			
		||||
			set(value) { this.$store.dispatch('settings/set', { key: 'disableViaMobile', value }); }
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		loadRemoteMedia: {
 | 
			
		||||
			get() { return this.$store.state.settings.loadRemoteMedia; },
 | 
			
		||||
			set(value) { this.$store.dispatch('settings/set', { key: 'loadRemoteMedia', value }); }
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		circleIcons: {
 | 
			
		||||
			get() { return this.$store.state.settings.circleIcons; },
 | 
			
		||||
			set(value) { this.$store.dispatch('settings/set', { key: 'circleIcons', value }); }
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		contrastedAcct: {
 | 
			
		||||
			get() { return this.$store.state.settings.contrastedAcct; },
 | 
			
		||||
			set(value) { this.$store.dispatch('settings/set', { key: 'contrastedAcct', value }); }
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		iLikeSushi: {
 | 
			
		||||
			get() { return this.$store.state.settings.iLikeSushi; },
 | 
			
		||||
			set(value) { this.$store.dispatch('settings/set', { key: 'iLikeSushi', value }); }
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		games_reversi_showBoardLabels: {
 | 
			
		||||
			get() { return this.$store.state.settings.games.reversi.showBoardLabels; },
 | 
			
		||||
			set(value) { this.$store.dispatch('settings/set', { key: 'games.reversi.showBoardLabels', value }); }
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		games_reversi_useContrastStones: {
 | 
			
		||||
			get() { return this.$store.state.settings.games.reversi.useContrastStones; },
 | 
			
		||||
			set(value) { this.$store.dispatch('settings/set', { key: 'games.reversi.useContrastStones', value }); }
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		disableAnimatedMfm: {
 | 
			
		||||
			get() { return this.$store.state.settings.disableAnimatedMfm; },
 | 
			
		||||
			set(value) { this.$store.dispatch('settings/set', { key: 'disableAnimatedMfm', value }); }
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		showReplyTarget: {
 | 
			
		||||
			get() { return this.$store.state.settings.showReplyTarget; },
 | 
			
		||||
			set(value) { this.$store.dispatch('settings/set', { key: 'showReplyTarget', value }); }
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		showMyRenotes: {
 | 
			
		||||
			get() { return this.$store.state.settings.showMyRenotes; },
 | 
			
		||||
			set(value) { this.$store.dispatch('settings/set', { key: 'showMyRenotes', value }); }
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		showRenotedMyNotes: {
 | 
			
		||||
			get() { return this.$store.state.settings.showRenotedMyNotes; },
 | 
			
		||||
			set(value) { this.$store.dispatch('settings/set', { key: 'showRenotedMyNotes', value }); }
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		showLocalRenotes: {
 | 
			
		||||
			get() { return this.$store.state.settings.showLocalRenotes; },
 | 
			
		||||
			set(value) { this.$store.dispatch('settings/set', { key: 'showLocalRenotes', value }); }
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		defaultNoteVisibility: {
 | 
			
		||||
			get() { return this.$store.state.settings.defaultNoteVisibility; },
 | 
			
		||||
			set(value) { this.$store.dispatch('settings/set', { key: 'defaultNoteVisibility', value }); }
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
	mounted() {
 | 
			
		||||
@@ -211,104 +287,6 @@ export default Vue.extend({
 | 
			
		||||
			(this as any).os.signout();
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		onChangeFetchOnScroll(v) {
 | 
			
		||||
			this.$store.dispatch('settings/set', {
 | 
			
		||||
				key: 'fetchOnScroll',
 | 
			
		||||
				value: v
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		onChangeRememberNoteVisibility(v) {
 | 
			
		||||
			this.$store.dispatch('settings/set', {
 | 
			
		||||
				key: 'rememberNoteVisibility',
 | 
			
		||||
				value: v
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		onChangeDisableViaMobile(v) {
 | 
			
		||||
			this.$store.dispatch('settings/set', {
 | 
			
		||||
				key: 'disableViaMobile',
 | 
			
		||||
				value: v
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		onChangeLoadRemoteMedia(v) {
 | 
			
		||||
			this.$store.dispatch('settings/set', {
 | 
			
		||||
				key: 'loadRemoteMedia',
 | 
			
		||||
				value: v
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		onChangeCircleIcons(v) {
 | 
			
		||||
			this.$store.dispatch('settings/set', {
 | 
			
		||||
				key: 'circleIcons',
 | 
			
		||||
				value: v
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		onChangeContrastedAcct(v) {
 | 
			
		||||
			this.$store.dispatch('settings/set', {
 | 
			
		||||
				key: 'contrastedAcct',
 | 
			
		||||
				value: v
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		onChangeILikeSushi(v) {
 | 
			
		||||
			this.$store.dispatch('settings/set', {
 | 
			
		||||
				key: 'iLikeSushi',
 | 
			
		||||
				value: v
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		onChangeReversiBoardLabels(v) {
 | 
			
		||||
			this.$store.dispatch('settings/set', {
 | 
			
		||||
				key: 'games.reversi.showBoardLabels',
 | 
			
		||||
				value: v
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		onChangeUseContrastReversiStones(v) {
 | 
			
		||||
			this.$store.dispatch('settings/set', {
 | 
			
		||||
				key: 'games.reversi.useContrastStones',
 | 
			
		||||
				value: v
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		onChangeDisableAnimatedMfm(v) {
 | 
			
		||||
			this.$store.dispatch('settings/set', {
 | 
			
		||||
				key: 'disableAnimatedMfm',
 | 
			
		||||
				value: v
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		onChangeShowReplyTarget(v) {
 | 
			
		||||
			this.$store.dispatch('settings/set', {
 | 
			
		||||
				key: 'showReplyTarget',
 | 
			
		||||
				value: v
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		onChangeShowMyRenotes(v) {
 | 
			
		||||
			this.$store.dispatch('settings/set', {
 | 
			
		||||
				key: 'showMyRenotes',
 | 
			
		||||
				value: v
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		onChangeShowRenotedMyNotes(v) {
 | 
			
		||||
			this.$store.dispatch('settings/set', {
 | 
			
		||||
				key: 'showRenotedMyNotes',
 | 
			
		||||
				value: v
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		onChangeShowLocalRenotes(v) {
 | 
			
		||||
			this.$store.dispatch('settings/set', {
 | 
			
		||||
				key: 'showLocalRenotes',
 | 
			
		||||
				value: v
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		checkForUpdate() {
 | 
			
		||||
			this.checkingForUpdate = true;
 | 
			
		||||
			checkForUpdate((this as any).os, true, true).then(newer => {
 | 
			
		||||
 
 | 
			
		||||
@@ -47,6 +47,7 @@ const defaultDeviceSettings = {
 | 
			
		||||
	debug: false,
 | 
			
		||||
	lightmode: false,
 | 
			
		||||
	loadRawImages: false,
 | 
			
		||||
	alwaysShowNsfw: false,
 | 
			
		||||
	postStyle: 'standard',
 | 
			
		||||
	mobileNotificationPosition: 'bottom'
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user