Compare commits
	
		
			8 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					69d72819c6 | ||
| 
						 | 
					54dcc10250 | ||
| 
						 | 
					1edfce8f73 | ||
| 
						 | 
					675e573a8c | ||
| 
						 | 
					1080fa63a9 | ||
| 
						 | 
					8047086988 | ||
| 
						 | 
					449b9f7fa0 | ||
| 
						 | 
					b7a15bf6ca | 
							
								
								
									
										17362
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										17362
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -1,8 +1,8 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
	"name": "misskey",
 | 
						"name": "misskey",
 | 
				
			||||||
	"author": "syuilo <i@syuilo.com>",
 | 
						"author": "syuilo <i@syuilo.com>",
 | 
				
			||||||
	"version": "10.38.1",
 | 
						"version": "10.38.3",
 | 
				
			||||||
	"clientVersion": "1.0.11482",
 | 
						"clientVersion": "1.0.11490",
 | 
				
			||||||
	"codename": "nighthike",
 | 
						"codename": "nighthike",
 | 
				
			||||||
	"main": "./built/index.js",
 | 
						"main": "./built/index.js",
 | 
				
			||||||
	"private": true,
 | 
						"private": true,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,5 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
<div>
 | 
					<div class="cdeuzmsthagexbkpofbmatmugjuvogfb">
 | 
				
			||||||
	<ui-card>
 | 
						<ui-card>
 | 
				
			||||||
		<div slot="title">%fa:broadcast-tower% %i18n:@announcements%</div>
 | 
							<div slot="title">%fa:broadcast-tower% %i18n:@announcements%</div>
 | 
				
			||||||
		<section v-for="(announcement, i) in announcements" class="fit-top">
 | 
							<section v-for="(announcement, i) in announcements" class="fit-top">
 | 
				
			||||||
@@ -9,10 +9,10 @@
 | 
				
			|||||||
			<ui-textarea v-model="announcement.text">
 | 
								<ui-textarea v-model="announcement.text">
 | 
				
			||||||
				<span>%i18n:@text%</span>
 | 
									<span>%i18n:@text%</span>
 | 
				
			||||||
			</ui-textarea>
 | 
								</ui-textarea>
 | 
				
			||||||
			<ui-button-group>
 | 
								<ui-horizon-group>
 | 
				
			||||||
				<ui-button inline @click="save">%fa:save R% %i18n:@save%</ui-button>
 | 
									<ui-button @click="save">%fa:save R% %i18n:@save%</ui-button>
 | 
				
			||||||
				<ui-button inline @click="remove(i)">%fa:trash-alt R% %i18n:@remove%</ui-button>
 | 
									<ui-button @click="remove(i)">%fa:trash-alt R% %i18n:@remove%</ui-button>
 | 
				
			||||||
			</ui-button-group>
 | 
								</ui-horizon-group>
 | 
				
			||||||
		</section>
 | 
							</section>
 | 
				
			||||||
		<section>
 | 
							<section>
 | 
				
			||||||
			<ui-button @click="add">%fa:plus% %i18n:@add%</ui-button>
 | 
								<ui-button @click="add">%fa:plus% %i18n:@add%</ui-button>
 | 
				
			||||||
@@ -62,3 +62,10 @@ export default Vue.extend({
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
</script>
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<style lang="stylus" scoped>
 | 
				
			||||||
 | 
					.cdeuzmsthagexbkpofbmatmugjuvogfb
 | 
				
			||||||
 | 
						@media (min-width 500px)
 | 
				
			||||||
 | 
							padding 16px
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</style>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -67,7 +67,7 @@ export default Vue.extend({
 | 
				
			|||||||
	height 250px
 | 
						height 250px
 | 
				
			||||||
	overflow auto
 | 
						overflow auto
 | 
				
			||||||
	box-shadow 0 2px 4px rgba(0, 0, 0, 0.1)
 | 
						box-shadow 0 2px 4px rgba(0, 0, 0, 0.1)
 | 
				
			||||||
	background var(--face)
 | 
						background var(--adminDashboardCardBg)
 | 
				
			||||||
	border-radius 8px
 | 
						border-radius 8px
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	> table
 | 
						> table
 | 
				
			||||||
@@ -76,10 +76,11 @@ export default Vue.extend({
 | 
				
			|||||||
		overflow auto
 | 
							overflow auto
 | 
				
			||||||
		border-spacing 0
 | 
							border-spacing 0
 | 
				
			||||||
		border-collapse collapse
 | 
							border-collapse collapse
 | 
				
			||||||
		color #555
 | 
							color var(--adminDashboardCardFg)
 | 
				
			||||||
 | 
							font-size 15px
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		thead
 | 
							thead
 | 
				
			||||||
			border-bottom solid 2px #eee
 | 
								border-bottom solid 2px var(--adminDashboardCardDivider)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			tr
 | 
								tr
 | 
				
			||||||
				th
 | 
									th
 | 
				
			||||||
@@ -89,7 +90,7 @@ export default Vue.extend({
 | 
				
			|||||||
		tbody
 | 
							tbody
 | 
				
			||||||
			tr
 | 
								tr
 | 
				
			||||||
				&:nth-child(odd)
 | 
									&:nth-child(odd)
 | 
				
			||||||
					background #fbfbfb
 | 
										background rgba(0, 0, 0, 0.025)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		th, td
 | 
							th, td
 | 
				
			||||||
			padding 8px 16px
 | 
								padding 8px 16px
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -39,6 +39,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
<script lang="ts">
 | 
					<script lang="ts">
 | 
				
			||||||
import Vue from 'vue';
 | 
					import Vue from 'vue';
 | 
				
			||||||
 | 
					import * as tinycolor from 'tinycolor2';
 | 
				
			||||||
import * as ApexCharts from 'apexcharts';
 | 
					import * as ApexCharts from 'apexcharts';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const limit = 90;
 | 
					const limit = 90;
 | 
				
			||||||
@@ -147,7 +148,7 @@ export default Vue.extend({
 | 
				
			|||||||
				this.chartInstance.destroy();
 | 
									this.chartInstance.destroy();
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			this.chartInstance = new ApexCharts(this.$refs.chart, Object.assign({
 | 
								this.chartInstance = new ApexCharts(this.$refs.chart, {
 | 
				
			||||||
				chart: {
 | 
									chart: {
 | 
				
			||||||
					type: 'area',
 | 
										type: 'area',
 | 
				
			||||||
					height: 300,
 | 
										height: 300,
 | 
				
			||||||
@@ -168,17 +169,41 @@ export default Vue.extend({
 | 
				
			|||||||
				},
 | 
									},
 | 
				
			||||||
				grid: {
 | 
									grid: {
 | 
				
			||||||
					clipMarkers: false,
 | 
										clipMarkers: false,
 | 
				
			||||||
 | 
										borderColor: 'rgba(0, 0, 0, 0.1)'
 | 
				
			||||||
				},
 | 
									},
 | 
				
			||||||
				stroke: {
 | 
									stroke: {
 | 
				
			||||||
					curve: 'straight',
 | 
										curve: 'straight',
 | 
				
			||||||
					width: 2
 | 
										width: 2
 | 
				
			||||||
				},
 | 
									},
 | 
				
			||||||
 | 
									legend: {
 | 
				
			||||||
 | 
										labels: {
 | 
				
			||||||
 | 
											color: tinycolor(getComputedStyle(document.documentElement).getPropertyValue('--text')).toRgbString()
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
				xaxis: {
 | 
									xaxis: {
 | 
				
			||||||
					type: 'datetime'
 | 
										type: 'datetime',
 | 
				
			||||||
 | 
										labels: {
 | 
				
			||||||
 | 
											style: {
 | 
				
			||||||
 | 
												colors: tinycolor(getComputedStyle(document.documentElement).getPropertyValue('--text')).toRgbString()
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										axisBorder: {
 | 
				
			||||||
 | 
											color: 'rgba(0, 0, 0, 0.1)'
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										axisTicks: {
 | 
				
			||||||
 | 
											color: 'rgba(0, 0, 0, 0.1)'
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
				},
 | 
									},
 | 
				
			||||||
				yaxis: {
 | 
									yaxis: {
 | 
				
			||||||
				}
 | 
										labels: {
 | 
				
			||||||
			}, this.data));
 | 
											formatter: this.data.bytes ? v => Vue.filter('bytes')(v, 0) : v => Vue.filter('number')(v),
 | 
				
			||||||
 | 
											style: {
 | 
				
			||||||
 | 
												color: tinycolor(getComputedStyle(document.documentElement).getPropertyValue('--text')).toRgbString()
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									series: this.data.series
 | 
				
			||||||
 | 
								});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			this.chartInstance.render();
 | 
								this.chartInstance.render();
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
@@ -286,6 +311,7 @@ export default Vue.extend({
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		driveChart(): any {
 | 
							driveChart(): any {
 | 
				
			||||||
			return {
 | 
								return {
 | 
				
			||||||
 | 
									bytes: true,
 | 
				
			||||||
				series: [{
 | 
									series: [{
 | 
				
			||||||
					name: 'All',
 | 
										name: 'All',
 | 
				
			||||||
					data: this.format(
 | 
										data: this.format(
 | 
				
			||||||
@@ -314,6 +340,7 @@ export default Vue.extend({
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		driveTotalChart(): any {
 | 
							driveTotalChart(): any {
 | 
				
			||||||
			return {
 | 
								return {
 | 
				
			||||||
 | 
									bytes: true,
 | 
				
			||||||
				series: [{
 | 
									series: [{
 | 
				
			||||||
					name: 'Combined',
 | 
										name: 'Combined',
 | 
				
			||||||
					data: this.format(sum(this.stats.drive.local.totalSize, this.stats.drive.remote.totalSize))
 | 
										data: this.format(sum(this.stats.drive.local.totalSize, this.stats.drive.remote.totalSize))
 | 
				
			||||||
@@ -396,6 +423,7 @@ export default Vue.extend({
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		networkUsageChart(): any {
 | 
							networkUsageChart(): any {
 | 
				
			||||||
			return {
 | 
								return {
 | 
				
			||||||
 | 
									bytes: true,
 | 
				
			||||||
				series: [{
 | 
									series: [{
 | 
				
			||||||
					name: 'Incoming',
 | 
										name: 'Incoming',
 | 
				
			||||||
					data: this.format(this.stats.network.incomingBytes)
 | 
										data: this.format(this.stats.network.incomingBytes)
 | 
				
			||||||
@@ -424,8 +452,8 @@ export default Vue.extend({
 | 
				
			|||||||
		margin 0 8px
 | 
							margin 0 8px
 | 
				
			||||||
		padding 0 0 8px 0
 | 
							padding 0 0 8px 0
 | 
				
			||||||
		font-size 1em
 | 
							font-size 1em
 | 
				
			||||||
		color #555
 | 
							color var(--adminDashboardCardFg)
 | 
				
			||||||
		border-bottom solid 1px #eee
 | 
							border-bottom solid 1px var(--adminDashboardCardDivider)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		> b
 | 
							> b
 | 
				
			||||||
			margin-right 8px
 | 
								margin-right 8px
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -79,6 +79,7 @@ export default Vue.extend({
 | 
				
			|||||||
			},
 | 
								},
 | 
				
			||||||
			grid: {
 | 
								grid: {
 | 
				
			||||||
				clipMarkers: false,
 | 
									clipMarkers: false,
 | 
				
			||||||
 | 
									borderColor: 'rgba(0, 0, 0, 0.1)'
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
			stroke: {
 | 
								stroke: {
 | 
				
			||||||
				curve: 'straight',
 | 
									curve: 'straight',
 | 
				
			||||||
@@ -153,7 +154,7 @@ export default Vue.extend({
 | 
				
			|||||||
			display flex
 | 
								display flex
 | 
				
			||||||
			padding 0 8px
 | 
								padding 0 8px
 | 
				
			||||||
			margin-bottom -16px
 | 
								margin-bottom -16px
 | 
				
			||||||
			color #555
 | 
								color var(--adminDashboardCardFg)
 | 
				
			||||||
			font-size 14px
 | 
								font-size 14px
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			> span
 | 
								> span
 | 
				
			||||||
@@ -167,4 +168,13 @@ export default Vue.extend({
 | 
				
			|||||||
		> div
 | 
							> div
 | 
				
			||||||
			margin-bottom -10px
 | 
								margin-bottom -10px
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@media (max-width 1000px)
 | 
				
			||||||
 | 
							display block
 | 
				
			||||||
 | 
							margin-bottom 26px
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							> div
 | 
				
			||||||
 | 
								&:first-child
 | 
				
			||||||
 | 
									margin-right 0
 | 
				
			||||||
 | 
									margin-bottom 26px
 | 
				
			||||||
 | 
					
 | 
				
			||||||
</style>
 | 
					</style>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -124,14 +124,22 @@ export default Vue.extend({
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
<style lang="stylus" scoped>
 | 
					<style lang="stylus" scoped>
 | 
				
			||||||
.obdskegsannmntldydackcpzezagxqfy
 | 
					.obdskegsannmntldydackcpzezagxqfy
 | 
				
			||||||
 | 
						padding 16px
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@media (min-width 500px)
 | 
				
			||||||
 | 
							padding 32px
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	> header
 | 
						> header
 | 
				
			||||||
		display flex
 | 
							display flex
 | 
				
			||||||
		margin-bottom 16px
 | 
							margin-bottom 16px
 | 
				
			||||||
		padding-bottom 16px
 | 
							padding-bottom 16px
 | 
				
			||||||
		border-bottom solid 1px #ccc
 | 
							border-bottom solid 1px var(--adminDashboardHeaderBorder)
 | 
				
			||||||
		color #777
 | 
							color var(--adminDashboardHeaderFg)
 | 
				
			||||||
		font-size 14px
 | 
							font-size 14px
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							@media (max-width 1000px)
 | 
				
			||||||
 | 
								display none
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		> p
 | 
							> p
 | 
				
			||||||
			display inline
 | 
								display inline
 | 
				
			||||||
			margin 0 32px 0 0
 | 
								margin 0 32px 0 0
 | 
				
			||||||
@@ -152,11 +160,10 @@ export default Vue.extend({
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		> div
 | 
							> div
 | 
				
			||||||
			flex 1
 | 
								flex 1
 | 
				
			||||||
			max-width 300px
 | 
					 | 
				
			||||||
			margin-right 16px
 | 
								margin-right 16px
 | 
				
			||||||
			color var(--text)
 | 
								color var(--adminDashboardCardFg)
 | 
				
			||||||
			box-shadow 0 2px 4px rgba(0, 0, 0, 0.1)
 | 
								box-shadow 0 2px 4px rgba(0, 0, 0, 0.1)
 | 
				
			||||||
			background var(--face)
 | 
								background var(--adminDashboardCardBg)
 | 
				
			||||||
			border-radius 8px
 | 
								border-radius 8px
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			&:last-child
 | 
								&:last-child
 | 
				
			||||||
@@ -192,7 +199,7 @@ export default Vue.extend({
 | 
				
			|||||||
			> div:last-child
 | 
								> div:last-child
 | 
				
			||||||
				display flex
 | 
									display flex
 | 
				
			||||||
				padding 6px 16px
 | 
									padding 6px 16px
 | 
				
			||||||
				border-top solid 1px #eee
 | 
									border-top solid 1px var(--adminDashboardCardDivider)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				> span
 | 
									> span
 | 
				
			||||||
					font-size 70%
 | 
										font-size 70%
 | 
				
			||||||
@@ -202,6 +209,21 @@ export default Vue.extend({
 | 
				
			|||||||
						margin-left auto
 | 
											margin-left auto
 | 
				
			||||||
						cursor pointer
 | 
											cursor pointer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							@media (max-width 900px)
 | 
				
			||||||
 | 
								display grid
 | 
				
			||||||
 | 
								grid-template-columns 1fr 1fr
 | 
				
			||||||
 | 
								grid-template-rows 1fr 1fr
 | 
				
			||||||
 | 
								gap 16px
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								> div
 | 
				
			||||||
 | 
									margin-right 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							@media (max-width 500px)
 | 
				
			||||||
 | 
								display block
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								> div:not(:last-child)
 | 
				
			||||||
 | 
									margin-bottom 16px
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	> .charts
 | 
						> .charts
 | 
				
			||||||
		margin-bottom 16px
 | 
							margin-bottom 16px
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,16 +1,18 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
<div>
 | 
					<div class="tumhkfkmgtvzljezfvmgkeurkfncshbe">
 | 
				
			||||||
	<ui-card>
 | 
						<ui-card>
 | 
				
			||||||
		<div slot="title">%fa:plus% %i18n:@add-emoji.title%</div>
 | 
							<div slot="title">%fa:plus% %i18n:@add-emoji.title%</div>
 | 
				
			||||||
		<section class="fit-top">
 | 
							<section class="fit-top">
 | 
				
			||||||
			<ui-input v-model="name">
 | 
								<ui-horizon-group inputs>
 | 
				
			||||||
				<span>%i18n:@add-emoji.name%</span>
 | 
									<ui-input v-model="name">
 | 
				
			||||||
				<span slot="text">%i18n:@add-emoji.name-desc%</span>
 | 
										<span>%i18n:@add-emoji.name%</span>
 | 
				
			||||||
			</ui-input>
 | 
										<span slot="text">%i18n:@add-emoji.name-desc%</span>
 | 
				
			||||||
			<ui-input v-model="aliases">
 | 
									</ui-input>
 | 
				
			||||||
				<span>%i18n:@add-emoji.aliases%</span>
 | 
									<ui-input v-model="aliases">
 | 
				
			||||||
				<span slot="text">%i18n:@add-emoji.aliases-desc%</span>
 | 
										<span>%i18n:@add-emoji.aliases%</span>
 | 
				
			||||||
			</ui-input>
 | 
										<span slot="text">%i18n:@add-emoji.aliases-desc%</span>
 | 
				
			||||||
 | 
									</ui-input>
 | 
				
			||||||
 | 
								</ui-horizon-group>
 | 
				
			||||||
			<ui-input v-model="url">
 | 
								<ui-input v-model="url">
 | 
				
			||||||
				<span>%i18n:@add-emoji.url%</span>
 | 
									<span>%i18n:@add-emoji.url%</span>
 | 
				
			||||||
			</ui-input>
 | 
								</ui-input>
 | 
				
			||||||
@@ -22,21 +24,23 @@
 | 
				
			|||||||
		<div slot="title">%fa:grin R% %i18n:@emojis.title%</div>
 | 
							<div slot="title">%fa:grin R% %i18n:@emojis.title%</div>
 | 
				
			||||||
		<section v-for="emoji in emojis">
 | 
							<section v-for="emoji in emojis">
 | 
				
			||||||
			<img :src="emoji.url" :alt="emoji.name" style="width: 64px;"/>
 | 
								<img :src="emoji.url" :alt="emoji.name" style="width: 64px;"/>
 | 
				
			||||||
			<ui-input v-model="emoji.name">
 | 
								<ui-horizon-group inputs>
 | 
				
			||||||
				<span>%i18n:@add-emoji.name%</span>
 | 
									<ui-input v-model="emoji.name">
 | 
				
			||||||
				<span slot="text">%i18n:@add-emoji.name-desc%</span>
 | 
										<span>%i18n:@add-emoji.name%</span>
 | 
				
			||||||
			</ui-input>
 | 
										<span slot="text">%i18n:@add-emoji.name-desc%</span>
 | 
				
			||||||
			<ui-input v-model="emoji.aliases">
 | 
									</ui-input>
 | 
				
			||||||
				<span>%i18n:@add-emoji.aliases%</span>
 | 
									<ui-input v-model="emoji.aliases">
 | 
				
			||||||
				<span slot="text">%i18n:@add-emoji.aliases-desc%</span>
 | 
										<span>%i18n:@add-emoji.aliases%</span>
 | 
				
			||||||
			</ui-input>
 | 
										<span slot="text">%i18n:@add-emoji.aliases-desc%</span>
 | 
				
			||||||
 | 
									</ui-input>
 | 
				
			||||||
 | 
								</ui-horizon-group>
 | 
				
			||||||
			<ui-input v-model="emoji.url">
 | 
								<ui-input v-model="emoji.url">
 | 
				
			||||||
				<span>%i18n:@add-emoji.url%</span>
 | 
									<span>%i18n:@add-emoji.url%</span>
 | 
				
			||||||
			</ui-input>
 | 
								</ui-input>
 | 
				
			||||||
			<ui-button-group>
 | 
								<ui-horizon-group>
 | 
				
			||||||
				<ui-button inline @click="updateEmoji(emoji)">%fa:save R% %i18n:@emojis.update%</ui-button>
 | 
									<ui-button @click="updateEmoji(emoji)">%fa:save R% %i18n:@emojis.update%</ui-button>
 | 
				
			||||||
				<ui-button inline @click="removeEmoji(emoji)">%fa:trash-alt R% %i18n:@emojis.remove%</ui-button>
 | 
									<ui-button @click="removeEmoji(emoji)">%fa:trash-alt R% %i18n:@emojis.remove%</ui-button>
 | 
				
			||||||
			</ui-button-group>
 | 
								</ui-horizon-group>
 | 
				
			||||||
		</section>
 | 
							</section>
 | 
				
			||||||
	</ui-card>
 | 
						</ui-card>
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
@@ -106,3 +110,10 @@ export default Vue.extend({
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
</script>
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<style lang="stylus" scoped>
 | 
				
			||||||
 | 
					.tumhkfkmgtvzljezfvmgkeurkfncshbe
 | 
				
			||||||
 | 
						@media (min-width 500px)
 | 
				
			||||||
 | 
							padding 16px
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</style>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,15 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
<div class="mk-admin">
 | 
					<div class="mk-admin" :class="{ isMobile }">
 | 
				
			||||||
	<nav>
 | 
						<header v-show="isMobile">
 | 
				
			||||||
 | 
							<button class="nav" @click="navOpend = true">%fa:bars%</button>
 | 
				
			||||||
 | 
							<span>MisskeyMyAdmin</span>
 | 
				
			||||||
 | 
						</header>
 | 
				
			||||||
 | 
						<div class="nav-backdrop"
 | 
				
			||||||
 | 
							v-if="navOpend && isMobile"
 | 
				
			||||||
 | 
							@click="navOpend = false"
 | 
				
			||||||
 | 
							@touchstart="navOpend = false"
 | 
				
			||||||
 | 
						></div>
 | 
				
			||||||
 | 
						<nav v-show="navOpend">
 | 
				
			||||||
		<div class="mi">
 | 
							<div class="mi">
 | 
				
			||||||
			<img svg-inline src="../assets/header-icon.svg"/>
 | 
								<img svg-inline src="../assets/header-icon.svg"/>
 | 
				
			||||||
		</div>
 | 
							</div>
 | 
				
			||||||
@@ -49,6 +58,10 @@ import XAnnouncements from "./announcements.vue";
 | 
				
			|||||||
import XHashtags from "./hashtags.vue";
 | 
					import XHashtags from "./hashtags.vue";
 | 
				
			||||||
import XUsers from "./users.vue";
 | 
					import XUsers from "./users.vue";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Detect the user agent
 | 
				
			||||||
 | 
					const ua = navigator.userAgent.toLowerCase();
 | 
				
			||||||
 | 
					const isMobile = /mobile|iphone|ipad|android/.test(ua);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default Vue.extend({
 | 
					export default Vue.extend({
 | 
				
			||||||
	components: {
 | 
						components: {
 | 
				
			||||||
		XDashboard,
 | 
							XDashboard,
 | 
				
			||||||
@@ -58,10 +71,15 @@ export default Vue.extend({
 | 
				
			|||||||
		XHashtags,
 | 
							XHashtags,
 | 
				
			||||||
		XUsers
 | 
							XUsers
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
 | 
						provide: {
 | 
				
			||||||
 | 
							isMobile
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
	data() {
 | 
						data() {
 | 
				
			||||||
		return {
 | 
							return {
 | 
				
			||||||
			page: 'dashboard',
 | 
								page: 'dashboard',
 | 
				
			||||||
			version
 | 
								version,
 | 
				
			||||||
 | 
								isMobile,
 | 
				
			||||||
 | 
								navOpend: !isMobile
 | 
				
			||||||
		};
 | 
							};
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
	methods: {
 | 
						methods: {
 | 
				
			||||||
@@ -74,12 +92,46 @@ export default Vue.extend({
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
<style lang="stylus">
 | 
					<style lang="stylus">
 | 
				
			||||||
.mk-admin
 | 
					.mk-admin
 | 
				
			||||||
 | 
						$headerHeight = 48px
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	display flex
 | 
						display flex
 | 
				
			||||||
	height 100%
 | 
						height 100%
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						> header
 | 
				
			||||||
 | 
							position fixed
 | 
				
			||||||
 | 
							top 0
 | 
				
			||||||
 | 
							z-index 10000
 | 
				
			||||||
 | 
							width 100%
 | 
				
			||||||
 | 
							color var(--mobileHeaderFg)
 | 
				
			||||||
 | 
							background-color var(--mobileHeaderBg)
 | 
				
			||||||
 | 
							box-shadow 0 1px 0 rgba(#000, 0.075)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							&, *
 | 
				
			||||||
 | 
								user-select none
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							> span
 | 
				
			||||||
 | 
								display block
 | 
				
			||||||
 | 
								line-height $headerHeight
 | 
				
			||||||
 | 
								text-align center
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							> .nav
 | 
				
			||||||
 | 
								display block
 | 
				
			||||||
 | 
								position absolute
 | 
				
			||||||
 | 
								top 0
 | 
				
			||||||
 | 
								left 0
 | 
				
			||||||
 | 
								z-index 10001
 | 
				
			||||||
 | 
								padding 0
 | 
				
			||||||
 | 
								width $headerHeight
 | 
				
			||||||
 | 
								font-size 1.4em
 | 
				
			||||||
 | 
								line-height $headerHeight
 | 
				
			||||||
 | 
								border-right solid 1px rgba(#000, 0.1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								> [data-fa]
 | 
				
			||||||
 | 
									transition all 0.2s ease
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	> nav
 | 
						> nav
 | 
				
			||||||
		position fixed
 | 
							position fixed
 | 
				
			||||||
		z-index 10000
 | 
							z-index 20001
 | 
				
			||||||
		top 0
 | 
							top 0
 | 
				
			||||||
		left 0
 | 
							left 0
 | 
				
			||||||
		width 250px
 | 
							width 250px
 | 
				
			||||||
@@ -187,9 +239,22 @@ export default Vue.extend({
 | 
				
			|||||||
						border-bottom solid 16px transparent
 | 
											border-bottom solid 16px transparent
 | 
				
			||||||
						border-left solid 16px transparent
 | 
											border-left solid 16px transparent
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						> .nav-backdrop
 | 
				
			||||||
 | 
							position fixed
 | 
				
			||||||
 | 
							top 0
 | 
				
			||||||
 | 
							left 0
 | 
				
			||||||
 | 
							z-index 20000
 | 
				
			||||||
 | 
							width 100%
 | 
				
			||||||
 | 
							height 100%
 | 
				
			||||||
 | 
							background var(--mobileNavBackdrop)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	> main
 | 
						> main
 | 
				
			||||||
		width 100%
 | 
							width 100%
 | 
				
			||||||
		padding 32px 32px 32px calc(32px + 250px)
 | 
							padding 0 0 0 250px
 | 
				
			||||||
		max-width 1300px
 | 
							max-width 1300px
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						&.isMobile
 | 
				
			||||||
 | 
							> main
 | 
				
			||||||
 | 
								padding $headerHeight 0 0 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
</style>
 | 
					</style>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,5 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
<div>
 | 
					<div class="axbwjelsbymowqjyywpirzhdlszoncqs">
 | 
				
			||||||
	<ui-card>
 | 
						<ui-card>
 | 
				
			||||||
		<div slot="title">%i18n:@banner-url%</div>
 | 
							<div slot="title">%i18n:@banner-url%</div>
 | 
				
			||||||
		<section class="fit-top">
 | 
							<section class="fit-top">
 | 
				
			||||||
@@ -60,3 +60,10 @@ export default Vue.extend({
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
</script>
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<style lang="stylus" scoped>
 | 
				
			||||||
 | 
					.axbwjelsbymowqjyywpirzhdlszoncqs
 | 
				
			||||||
 | 
						@media (min-width 500px)
 | 
				
			||||||
 | 
							padding 16px
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</style>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,5 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
<div>
 | 
					<div class="ucnffhbtogqgscfmqcymwmmupoknpfsw">
 | 
				
			||||||
	<ui-card>
 | 
						<ui-card>
 | 
				
			||||||
		<div slot="title">%i18n:@verify-user%</div>
 | 
							<div slot="title">%i18n:@verify-user%</div>
 | 
				
			||||||
		<section class="fit-top">
 | 
							<section class="fit-top">
 | 
				
			||||||
@@ -127,3 +127,10 @@ export default Vue.extend({
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
</script>
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<style lang="stylus" scoped>
 | 
				
			||||||
 | 
					.ucnffhbtogqgscfmqcymwmmupoknpfsw
 | 
				
			||||||
 | 
						@media (min-width 500px)
 | 
				
			||||||
 | 
							padding 16px
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</style>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -42,7 +42,7 @@ import Reversi from './games/reversi/reversi.vue';
 | 
				
			|||||||
import welcomeTimeline from './welcome-timeline.vue';
 | 
					import welcomeTimeline from './welcome-timeline.vue';
 | 
				
			||||||
import uiInput from './ui/input.vue';
 | 
					import uiInput from './ui/input.vue';
 | 
				
			||||||
import uiButton from './ui/button.vue';
 | 
					import uiButton from './ui/button.vue';
 | 
				
			||||||
import uiButtonGroup from './ui/button-group.vue';
 | 
					import uiHorizonGroup from './ui/horizon-group.vue';
 | 
				
			||||||
import uiCard from './ui/card.vue';
 | 
					import uiCard from './ui/card.vue';
 | 
				
			||||||
import uiForm from './ui/form.vue';
 | 
					import uiForm from './ui/form.vue';
 | 
				
			||||||
import uiTextarea from './ui/textarea.vue';
 | 
					import uiTextarea from './ui/textarea.vue';
 | 
				
			||||||
@@ -95,7 +95,7 @@ Vue.component('mk-reversi', Reversi);
 | 
				
			|||||||
Vue.component('mk-welcome-timeline', welcomeTimeline);
 | 
					Vue.component('mk-welcome-timeline', welcomeTimeline);
 | 
				
			||||||
Vue.component('ui-input', uiInput);
 | 
					Vue.component('ui-input', uiInput);
 | 
				
			||||||
Vue.component('ui-button', uiButton);
 | 
					Vue.component('ui-button', uiButton);
 | 
				
			||||||
Vue.component('ui-button-group', uiButtonGroup);
 | 
					Vue.component('ui-horizon-group', uiHorizonGroup);
 | 
				
			||||||
Vue.component('ui-card', uiCard);
 | 
					Vue.component('ui-card', uiCard);
 | 
				
			||||||
Vue.component('ui-form', uiForm);
 | 
					Vue.component('ui-form', uiForm);
 | 
				
			||||||
Vue.component('ui-textarea', uiTextarea);
 | 
					Vue.component('ui-textarea', uiTextarea);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,21 +0,0 @@
 | 
				
			|||||||
<template>
 | 
					 | 
				
			||||||
<div class="pfzekjfwkwvadvlujpdnnxfggqgqjoze">
 | 
					 | 
				
			||||||
	<slot></slot>
 | 
					 | 
				
			||||||
</div>
 | 
					 | 
				
			||||||
</template>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<script lang="ts">
 | 
					 | 
				
			||||||
import Vue from 'vue';
 | 
					 | 
				
			||||||
export default Vue.extend({});
 | 
					 | 
				
			||||||
</script>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<style lang="stylus" scoped>
 | 
					 | 
				
			||||||
.pfzekjfwkwvadvlujpdnnxfggqgqjoze
 | 
					 | 
				
			||||||
	display flex
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	> *
 | 
					 | 
				
			||||||
		flex 1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		&:not(:last-child)
 | 
					 | 
				
			||||||
			margin-right 16px
 | 
					 | 
				
			||||||
</style>
 | 
					 | 
				
			||||||
@@ -1,5 +1,10 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
<component class="dmtdnykelhudezerjlfpbhgovrgnqqgr" :is="link ? 'a' : 'button'" :class="[styl, { inline, primary }]" :type="type" @click="$emit('click')">
 | 
					<component class="dmtdnykelhudezerjlfpbhgovrgnqqgr"
 | 
				
			||||||
 | 
						:is="link ? 'a' : 'button'"
 | 
				
			||||||
 | 
						:class="[styl, { inline, primary }]"
 | 
				
			||||||
 | 
						:type="type"
 | 
				
			||||||
 | 
						@click="$emit('click')"
 | 
				
			||||||
 | 
					>
 | 
				
			||||||
	<slot></slot>
 | 
						<slot></slot>
 | 
				
			||||||
</component>
 | 
					</component>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
@@ -7,6 +12,7 @@
 | 
				
			|||||||
<script lang="ts">
 | 
					<script lang="ts">
 | 
				
			||||||
import Vue from 'vue';
 | 
					import Vue from 'vue';
 | 
				
			||||||
export default Vue.extend({
 | 
					export default Vue.extend({
 | 
				
			||||||
 | 
						inject: ['horizonGrouped'],
 | 
				
			||||||
	props: {
 | 
						props: {
 | 
				
			||||||
		type: {
 | 
							type: {
 | 
				
			||||||
			type: String,
 | 
								type: String,
 | 
				
			||||||
@@ -20,7 +26,9 @@ export default Vue.extend({
 | 
				
			|||||||
		inline: {
 | 
							inline: {
 | 
				
			||||||
			type: Boolean,
 | 
								type: Boolean,
 | 
				
			||||||
			required: false,
 | 
								required: false,
 | 
				
			||||||
			default: false
 | 
								default(): boolean {
 | 
				
			||||||
 | 
									return this.horizonGrouped;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		link: {
 | 
							link: {
 | 
				
			||||||
			type: Boolean,
 | 
								type: Boolean,
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										35
									
								
								src/client/app/common/views/components/ui/horizon-group.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								src/client/app/common/views/components/ui/horizon-group.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,35 @@
 | 
				
			|||||||
 | 
					<template>
 | 
				
			||||||
 | 
					<div class="pfzekjfwkwvadvlujpdnnxfggqgqjoze" :class="{ inputs }">
 | 
				
			||||||
 | 
						<slot></slot>
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<script lang="ts">
 | 
				
			||||||
 | 
					import Vue from 'vue';
 | 
				
			||||||
 | 
					export default Vue.extend({
 | 
				
			||||||
 | 
						provide: {
 | 
				
			||||||
 | 
							horizonGrouped: true
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
						props: {
 | 
				
			||||||
 | 
							inputs: {
 | 
				
			||||||
 | 
								type: Boolean,
 | 
				
			||||||
 | 
								required: false,
 | 
				
			||||||
 | 
								default: false
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<style lang="stylus" scoped>
 | 
				
			||||||
 | 
					.pfzekjfwkwvadvlujpdnnxfggqgqjoze
 | 
				
			||||||
 | 
						display flex
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						&.inputs
 | 
				
			||||||
 | 
							margin 32px 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						> *
 | 
				
			||||||
 | 
							flex 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							&:not(:last-child)
 | 
				
			||||||
 | 
								margin-right 16px
 | 
				
			||||||
 | 
					</style>
 | 
				
			||||||
@@ -1,5 +1,5 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
<div class="ui-input" :class="[{ focused, filled }, styl]">
 | 
					<div class="ui-input" :class="[{ focused, filled, inline }, styl]">
 | 
				
			||||||
	<div class="icon" ref="icon"><slot name="icon"></slot></div>
 | 
						<div class="icon" ref="icon"><slot name="icon"></slot></div>
 | 
				
			||||||
	<div class="input">
 | 
						<div class="input">
 | 
				
			||||||
		<div class="password-meter" v-if="withPasswordMeter" v-show="passwordStrength != ''" :data-strength="passwordStrength">
 | 
							<div class="password-meter" v-if="withPasswordMeter" v-show="passwordStrength != ''" :data-strength="passwordStrength">
 | 
				
			||||||
@@ -41,6 +41,7 @@ import Vue from 'vue';
 | 
				
			|||||||
const getPasswordStrength = require('syuilo-password-strength');
 | 
					const getPasswordStrength = require('syuilo-password-strength');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default Vue.extend({
 | 
					export default Vue.extend({
 | 
				
			||||||
 | 
						inject: ['horizonGrouped'],
 | 
				
			||||||
	props: {
 | 
						props: {
 | 
				
			||||||
		value: {
 | 
							value: {
 | 
				
			||||||
			required: false
 | 
								required: false
 | 
				
			||||||
@@ -72,6 +73,13 @@ export default Vue.extend({
 | 
				
			|||||||
			required: false,
 | 
								required: false,
 | 
				
			||||||
			default: false
 | 
								default: false
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
 | 
							inline: {
 | 
				
			||||||
 | 
								type: Boolean,
 | 
				
			||||||
 | 
								required: false,
 | 
				
			||||||
 | 
								default(): boolean {
 | 
				
			||||||
 | 
									return this.horizonGrouped;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
		styl: {
 | 
							styl: {
 | 
				
			||||||
			type: String,
 | 
								type: String,
 | 
				
			||||||
			required: false,
 | 
								required: false,
 | 
				
			||||||
@@ -337,4 +345,8 @@ root(fill)
 | 
				
			|||||||
	&:not(.fill)
 | 
						&:not(.fill)
 | 
				
			||||||
		root(false)
 | 
							root(false)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						&.inline
 | 
				
			||||||
 | 
							display inline-block
 | 
				
			||||||
 | 
							margin 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
</style>
 | 
					</style>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -215,5 +215,11 @@
 | 
				
			|||||||
		reversiGameEmptyCell: ':lighten<2<$secondary',
 | 
							reversiGameEmptyCell: ':lighten<2<$secondary',
 | 
				
			||||||
		reversiGameEmptyCellMyTurn: ':lighten<5<$secondary',
 | 
							reversiGameEmptyCellMyTurn: ':lighten<5<$secondary',
 | 
				
			||||||
		reversiGameEmptyCellCanPut: ':lighten<4<$secondary',
 | 
							reversiGameEmptyCellCanPut: ':lighten<4<$secondary',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							adminDashboardHeaderFg: ':alpha<0.9<$text',
 | 
				
			||||||
 | 
							adminDashboardHeaderBorder: 'rgba(0, 0, 0, 0.3)',
 | 
				
			||||||
 | 
							adminDashboardCardBg: '$secondary',
 | 
				
			||||||
 | 
							adminDashboardCardFg: '$text',
 | 
				
			||||||
 | 
							adminDashboardCardDivider: 'rgba(0, 0, 0, 0.3)',
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -215,5 +215,11 @@
 | 
				
			|||||||
		reversiGameEmptyCell: 'rgba(0, 0, 0, 0.06)',
 | 
							reversiGameEmptyCell: 'rgba(0, 0, 0, 0.06)',
 | 
				
			||||||
		reversiGameEmptyCellMyTurn: 'rgba(0, 0, 0, 0.12)',
 | 
							reversiGameEmptyCellMyTurn: 'rgba(0, 0, 0, 0.12)',
 | 
				
			||||||
		reversiGameEmptyCellCanPut: 'rgba(0, 0, 0, 0.9)',
 | 
							reversiGameEmptyCellCanPut: 'rgba(0, 0, 0, 0.9)',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							adminDashboardHeaderFg: ':alpha<0.9<$text',
 | 
				
			||||||
 | 
							adminDashboardHeaderBorder: 'rgba(0, 0, 0, 0.1)',
 | 
				
			||||||
 | 
							adminDashboardCardBg: '$secondary',
 | 
				
			||||||
 | 
							adminDashboardCardFg: '$text',
 | 
				
			||||||
 | 
							adminDashboardCardDivider: 'rgba(0, 0, 0, 0.082)',
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,7 +4,7 @@ import parse from '../../../mfm/parse';
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
export default function(note: INote) {
 | 
					export default function(note: INote) {
 | 
				
			||||||
	let html = toHtml(parse(note.text), note.mentionedRemoteUsers);
 | 
						let html = toHtml(parse(note.text), note.mentionedRemoteUsers);
 | 
				
			||||||
	if (html == null) html = '';
 | 
						if (html == null) html = '<p>.</p>';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return html;
 | 
						return html;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,6 +28,7 @@ export const meta = {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
export default define(meta, (ps) => new Promise(async (res, rej) => {
 | 
					export default define(meta, (ps) => new Promise(async (res, rej) => {
 | 
				
			||||||
	await Emoji.insert({
 | 
						await Emoji.insert({
 | 
				
			||||||
 | 
							updatedAt: new Date(),
 | 
				
			||||||
		name: ps.name,
 | 
							name: ps.name,
 | 
				
			||||||
		host: null,
 | 
							host: null,
 | 
				
			||||||
		aliases: ps.aliases,
 | 
							aliases: ps.aliases,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -39,6 +39,7 @@ export default define(meta, (ps) => new Promise(async (res, rej) => {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	await Emoji.update({ _id: emoji._id }, {
 | 
						await Emoji.update({ _id: emoji._id }, {
 | 
				
			||||||
		$set: {
 | 
							$set: {
 | 
				
			||||||
 | 
								updatedAt: new Date(),
 | 
				
			||||||
			name: ps.name,
 | 
								name: ps.name,
 | 
				
			||||||
			aliases: ps.aliases,
 | 
								aliases: ps.aliases,
 | 
				
			||||||
			url: ps.url
 | 
								url: ps.url
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user