Resolve #747
This commit is contained in:
		
							parent
							
								
									c1e7d56ff8
								
							
						
					
					
						commit
						daff0977cb
					
				
					 8 changed files with 83 additions and 86 deletions
				
			
		| 
						 | 
					@ -1,6 +1,10 @@
 | 
				
			||||||
ChangeLog
 | 
					ChangeLog
 | 
				
			||||||
=========
 | 
					=========
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					unreleased
 | 
				
			||||||
 | 
					----------
 | 
				
			||||||
 | 
					* モバイル版でも連携サービスを表示するように
 | 
				
			||||||
 | 
					
 | 
				
			||||||
10.87.4
 | 
					10.87.4
 | 
				
			||||||
----------
 | 
					----------
 | 
				
			||||||
* フォローリクエストを許可するときにエラーになる問題を修正
 | 
					* フォローリクエストを許可するときにエラーになる問題を修正
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,44 @@
 | 
				
			||||||
 | 
					<template>
 | 
				
			||||||
 | 
					<a class="zxrjzpcj" :href="url" :class="service" target="_blank">
 | 
				
			||||||
 | 
						<fa :icon="icon" size="lg" fixed-width /><span>{{ text }}</span>
 | 
				
			||||||
 | 
					</a>
 | 
				
			||||||
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<script lang="ts">
 | 
				
			||||||
 | 
					import Vue from 'vue';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default Vue.extend({
 | 
				
			||||||
 | 
						props: ['url', 'text', 'icon', 'service']
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<style lang="stylus" scoped>
 | 
				
			||||||
 | 
					.zxrjzpcj
 | 
				
			||||||
 | 
						padding 6px 8px 6px 6px
 | 
				
			||||||
 | 
						border-radius 32px
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						&:hover
 | 
				
			||||||
 | 
							text-decoration none
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						&.twitter
 | 
				
			||||||
 | 
							color #fff
 | 
				
			||||||
 | 
							background #1da1f3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							&:hover
 | 
				
			||||||
 | 
								background #0c87cf
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						&.github
 | 
				
			||||||
 | 
							color #fff
 | 
				
			||||||
 | 
							background #171515
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							&:hover
 | 
				
			||||||
 | 
								background #000
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						&.discord
 | 
				
			||||||
 | 
							color #fff
 | 
				
			||||||
 | 
							background #7289da
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							&:hover
 | 
				
			||||||
 | 
								background #4968ce
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</style>
 | 
				
			||||||
							
								
								
									
										26
									
								
								src/client/app/common/views/components/integrations.vue
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								src/client/app/common/views/components/integrations.vue
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,26 @@
 | 
				
			||||||
 | 
					<template>
 | 
				
			||||||
 | 
					<div class="nbogcrmo" :v-if="user.twitter || user.github || user.discord">
 | 
				
			||||||
 | 
						<x-integration v-if="user.twitter" service="twitter" :url="`https://twitter.com/${user.twitter.screenName}`" :text="user.twitter.screenName" :icon="['fab', 'twitter']"/>
 | 
				
			||||||
 | 
						<x-integration v-if="user.github" service="github" :url="`https://github.com/${user.github.login}`" :text="user.github.login" :icon="['fab', 'github']"/>
 | 
				
			||||||
 | 
						<x-integration v-if="user.discord" service="discord" :url="`https://discordapp.com/users/${user.discord.id}`" :text="`${user.discord.username}#${user.discord.discriminator}`" :icon="['fab', 'discord']"/>
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<script lang="ts">
 | 
				
			||||||
 | 
					import Vue from 'vue';
 | 
				
			||||||
 | 
					import XIntegration from './integrations.integration.vue';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default Vue.extend({
 | 
				
			||||||
 | 
						components: {
 | 
				
			||||||
 | 
							XIntegration
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
						props: ['user']
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<style lang="stylus" scoped>
 | 
				
			||||||
 | 
					.nbogcrmo
 | 
				
			||||||
 | 
						> *
 | 
				
			||||||
 | 
							margin-right 10px
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</style>
 | 
				
			||||||
| 
						 | 
					@ -23,6 +23,7 @@
 | 
				
			||||||
		<div class="description">
 | 
							<div class="description">
 | 
				
			||||||
			<mfm v-if="user.description" :text="user.description" :is-note="false" :author="user" :i="$store.state.i" :custom-emojis="user.emojis"/>
 | 
								<mfm v-if="user.description" :text="user.description" :is-note="false" :author="user" :i="$store.state.i" :custom-emojis="user.emojis"/>
 | 
				
			||||||
			<p v-else class="empty">{{ $t('no-description') }}</p>
 | 
								<p v-else class="empty">{{ $t('no-description') }}</p>
 | 
				
			||||||
 | 
								<x-integrations :user="user" style="margin-top:16px;"/>
 | 
				
			||||||
		</div>
 | 
							</div>
 | 
				
			||||||
		<div class="fields" v-if="user.fields">
 | 
							<div class="fields" v-if="user.fields">
 | 
				
			||||||
			<dl class="field" v-for="(field, i) in user.fields" :key="i">
 | 
								<dl class="field" v-for="(field, i) in user.fields" :key="i">
 | 
				
			||||||
| 
						 | 
					@ -52,9 +53,13 @@ import Vue from 'vue';
 | 
				
			||||||
import i18n from '../../../../i18n';
 | 
					import i18n from '../../../../i18n';
 | 
				
			||||||
import * as age from 's-age';
 | 
					import * as age from 's-age';
 | 
				
			||||||
import XUserMenu from '../../../../common/views/components/user-menu.vue';
 | 
					import XUserMenu from '../../../../common/views/components/user-menu.vue';
 | 
				
			||||||
 | 
					import XIntegrations from '../../../../common/views/components/integrations.vue';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default Vue.extend({
 | 
					export default Vue.extend({
 | 
				
			||||||
	i18n: i18n('desktop/views/pages/user/user.header.vue'),
 | 
						i18n: i18n('desktop/views/pages/user/user.header.vue'),
 | 
				
			||||||
 | 
						components: {
 | 
				
			||||||
 | 
							XIntegrations
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
	props: ['user'],
 | 
						props: ['user'],
 | 
				
			||||||
	computed: {
 | 
						computed: {
 | 
				
			||||||
		style(): any {
 | 
							style(): any {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,5 @@
 | 
				
			||||||
<template>
 | 
					<template>
 | 
				
			||||||
<div class="lnctpgve">
 | 
					<div class="lnctpgve">
 | 
				
			||||||
	<x-integrations :user="user" v-if="user.twitter || user.github || user.discord"/>
 | 
					 | 
				
			||||||
	<mk-note-detail v-for="n in user.pinnedNotes" :key="n.id" :note="n" :compact="true"/>
 | 
						<mk-note-detail v-for="n in user.pinnedNotes" :key="n.id" :note="n" :compact="true"/>
 | 
				
			||||||
	<!--<mk-calendar @chosen="warp" :start="new Date(user.createdAt)"/>-->
 | 
						<!--<mk-calendar @chosen="warp" :start="new Date(user.createdAt)"/>-->
 | 
				
			||||||
	<div class="activity">
 | 
						<div class="activity">
 | 
				
			||||||
| 
						 | 
					@ -17,11 +16,8 @@
 | 
				
			||||||
<script lang="ts">
 | 
					<script lang="ts">
 | 
				
			||||||
import Vue from 'vue';
 | 
					import Vue from 'vue';
 | 
				
			||||||
import i18n from '../../../../i18n';
 | 
					import i18n from '../../../../i18n';
 | 
				
			||||||
import parseAcct from '../../../../../../misc/acct/parse';
 | 
					 | 
				
			||||||
import Progress from '../../../../common/scripts/loading';
 | 
					 | 
				
			||||||
import XTimeline from './user.timeline.vue';
 | 
					import XTimeline from './user.timeline.vue';
 | 
				
			||||||
import XPhotos from './user.photos.vue';
 | 
					import XPhotos from './user.photos.vue';
 | 
				
			||||||
import XIntegrations from './user.integrations.vue';
 | 
					 | 
				
			||||||
import XActivity from '../../../../common/views/components/activity.vue';
 | 
					import XActivity from '../../../../common/views/components/activity.vue';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default Vue.extend({
 | 
					export default Vue.extend({
 | 
				
			||||||
| 
						 | 
					@ -29,7 +25,6 @@ export default Vue.extend({
 | 
				
			||||||
	components: {
 | 
						components: {
 | 
				
			||||||
		XTimeline,
 | 
							XTimeline,
 | 
				
			||||||
		XPhotos,
 | 
							XPhotos,
 | 
				
			||||||
		XIntegrations,
 | 
					 | 
				
			||||||
		XActivity
 | 
							XActivity
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
	props: {
 | 
						props: {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,14 +0,0 @@
 | 
				
			||||||
<template>
 | 
					 | 
				
			||||||
<a :href="url" :class="service" target="_blank">
 | 
					 | 
				
			||||||
	<fa :icon="icon" size="lg" fixed-width />
 | 
					 | 
				
			||||||
	<div>{{ text }}</div>
 | 
					 | 
				
			||||||
</a>
 | 
					 | 
				
			||||||
</template>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<script lang="ts">
 | 
					 | 
				
			||||||
import Vue from 'vue';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default Vue.extend({
 | 
					 | 
				
			||||||
	props: ['url', 'text', 'icon', 'service']
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
</script>
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,66 +0,0 @@
 | 
				
			||||||
<template>
 | 
					 | 
				
			||||||
<div class="usertwitxxxgithxxdiscxxxintegrat" :v-if="user.twitter || user.github || user.discord">
 | 
					 | 
				
			||||||
	<x-integration v-if="user.twitter" service="twitter" :url="`https://twitter.com/${user.twitter.screenName}`" :text="user.twitter.screenName" :icon="['fab', 'twitter']"/>
 | 
					 | 
				
			||||||
	<x-integration v-if="user.github" service="github" :url="`https://github.com/${user.github.login}`" :text="user.github.login" :icon="['fab', 'github']"/>
 | 
					 | 
				
			||||||
	<x-integration v-if="user.discord" service="discord" :url="`https://discordapp.com/users/${user.discord.id}`" :text="`${user.discord.username}#${user.discord.discriminator}`" :icon="['fab', 'discord']"/>
 | 
					 | 
				
			||||||
</div>
 | 
					 | 
				
			||||||
</template>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<script lang="ts">
 | 
					 | 
				
			||||||
import Vue from 'vue';
 | 
					 | 
				
			||||||
import XIntegration from './user.integrations.integration.vue';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default Vue.extend({
 | 
					 | 
				
			||||||
	components: {
 | 
					 | 
				
			||||||
		XIntegration
 | 
					 | 
				
			||||||
	},
 | 
					 | 
				
			||||||
	props: ['user']
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
</script>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<style lang="stylus" scoped>
 | 
					 | 
				
			||||||
.usertwitxxxgithxxdiscxxxintegrat
 | 
					 | 
				
			||||||
	display flex
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	> a
 | 
					 | 
				
			||||||
		display flex
 | 
					 | 
				
			||||||
		flex 1
 | 
					 | 
				
			||||||
		align-items center
 | 
					 | 
				
			||||||
		padding 16px
 | 
					 | 
				
			||||||
		box-shadow var(--shadow)
 | 
					 | 
				
			||||||
		border-radius var(--round)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		&:not(:last-child)
 | 
					 | 
				
			||||||
			margin-right 16px
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		&:hover
 | 
					 | 
				
			||||||
			text-decoration none
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		> div
 | 
					 | 
				
			||||||
			padding-left .2em
 | 
					 | 
				
			||||||
			line-height 1.3em
 | 
					 | 
				
			||||||
			flex 1 0
 | 
					 | 
				
			||||||
			word-wrap anywhere
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		&.twitter
 | 
					 | 
				
			||||||
			color #fff
 | 
					 | 
				
			||||||
			background #1da1f3
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			&:hover
 | 
					 | 
				
			||||||
				background #0c87cf
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		&.github
 | 
					 | 
				
			||||||
			color #fff
 | 
					 | 
				
			||||||
			background #171515
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			&:hover
 | 
					 | 
				
			||||||
				background #000
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		&.discord
 | 
					 | 
				
			||||||
			color #fff
 | 
					 | 
				
			||||||
			background #7289da
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			&:hover
 | 
					 | 
				
			||||||
				background #4968ce
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
</style>
 | 
					 | 
				
			||||||
| 
						 | 
					@ -23,6 +23,7 @@
 | 
				
			||||||
				</div>
 | 
									</div>
 | 
				
			||||||
				<div class="description">
 | 
									<div class="description">
 | 
				
			||||||
					<mfm v-if="user.description" :text="user.description" :is-note="false" :author="user" :i="$store.state.i" :custom-emojis="user.emojis"/>
 | 
										<mfm v-if="user.description" :text="user.description" :is-note="false" :author="user" :i="$store.state.i" :custom-emojis="user.emojis"/>
 | 
				
			||||||
 | 
										<x-integrations :user="user" style="margin:16px 0;"/>
 | 
				
			||||||
				</div>
 | 
									</div>
 | 
				
			||||||
				<div class="fields" v-if="user.fields">
 | 
									<div class="fields" v-if="user.fields">
 | 
				
			||||||
					<dl class="field" v-for="(field, i) in user.fields" :key="i">
 | 
										<dl class="field" v-for="(field, i) in user.fields" :key="i">
 | 
				
			||||||
| 
						 | 
					@ -86,11 +87,13 @@ import Progress from '../../../../common/scripts/loading';
 | 
				
			||||||
import XUserMenu from '../../../../common/views/components/user-menu.vue';
 | 
					import XUserMenu from '../../../../common/views/components/user-menu.vue';
 | 
				
			||||||
import XHome from './home.vue';
 | 
					import XHome from './home.vue';
 | 
				
			||||||
import { getStaticImageUrl } from '../../../../common/scripts/get-static-image-url';
 | 
					import { getStaticImageUrl } from '../../../../common/scripts/get-static-image-url';
 | 
				
			||||||
 | 
					import XIntegrations from '../../../../common/views/components/integrations.vue';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default Vue.extend({
 | 
					export default Vue.extend({
 | 
				
			||||||
	i18n: i18n('mobile/views/pages/user.vue'),
 | 
						i18n: i18n('mobile/views/pages/user.vue'),
 | 
				
			||||||
	components: {
 | 
						components: {
 | 
				
			||||||
		XHome
 | 
							XHome,
 | 
				
			||||||
 | 
							XIntegrations
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
	data() {
 | 
						data() {
 | 
				
			||||||
		return {
 | 
							return {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue