Compare commits

...

6 commits

14 changed files with 107 additions and 2 deletions

View file

@ -285,6 +285,7 @@ const getNodeInfo = async ({ store }) => {
}) })
store.dispatch('setInstanceOption', { name: 'federationPolicy', value: federation }) store.dispatch('setInstanceOption', { name: 'federationPolicy', value: federation })
store.dispatch('setInstanceOption', { name: 'localBubbleInstances', value: metadata.localBubbleInstances })
store.dispatch('setInstanceOption', { store.dispatch('setInstanceOption', {
name: 'federating', name: 'federating',
value: typeof federation.enabled === 'undefined' value: typeof federation.enabled === 'undefined'

View file

@ -3,6 +3,7 @@ import FeaturesPanel from '../features_panel/features_panel.vue'
import TermsOfServicePanel from '../terms_of_service_panel/terms_of_service_panel.vue' import TermsOfServicePanel from '../terms_of_service_panel/terms_of_service_panel.vue'
import StaffPanel from '../staff_panel/staff_panel.vue' import StaffPanel from '../staff_panel/staff_panel.vue'
import MRFTransparencyPanel from '../mrf_transparency_panel/mrf_transparency_panel.vue' import MRFTransparencyPanel from '../mrf_transparency_panel/mrf_transparency_panel.vue'
import LocalBubblePanel from '../local_bubble_panel/local_bubble_panel.vue'
const About = { const About = {
components: { components: {
@ -10,7 +11,8 @@ const About = {
FeaturesPanel, FeaturesPanel,
TermsOfServicePanel, TermsOfServicePanel,
StaffPanel, StaffPanel,
MRFTransparencyPanel MRFTransparencyPanel,
LocalBubblePanel
}, },
computed: { computed: {
showFeaturesPanel () { return this.$store.state.instance.showFeaturesPanel }, showFeaturesPanel () { return this.$store.state.instance.showFeaturesPanel },

View file

@ -3,6 +3,7 @@
<instance-specific-panel v-if="showInstanceSpecificPanel" /> <instance-specific-panel v-if="showInstanceSpecificPanel" />
<staff-panel /> <staff-panel />
<terms-of-service-panel /> <terms-of-service-panel />
<LocalBubblePanel />
<MRFTransparencyPanel /> <MRFTransparencyPanel />
<features-panel v-if="showFeaturesPanel" /> <features-panel v-if="showFeaturesPanel" />
</div> </div>

View file

@ -0,0 +1,12 @@
import { mapState } from 'vuex'
import { get } from 'lodash'
const LocalBubblePanel = {
computed: {
...mapState({
bubbleInstances: state => get(state, 'instance.localBubbleInstances')
})
}
}
export default LocalBubblePanel

View file

@ -0,0 +1,21 @@
.mrf-section {
margin: 1em;
table {
width:100%;
text-align: left;
padding-left:10px;
padding-bottom:20px;
th, td {
width: 180px;
max-width: 360px;
overflow: hidden;
vertical-align: text-top;
}
th+th, td+td {
width: auto;
}
}
}

View file

@ -0,0 +1,31 @@
<template>
<div
v-if="bubbleInstances"
class="bubble-panel"
>
<div class="panel panel-default base01-background">
<div class="panel-heading timeline-heading base02-background">
<div class="title">
{{ $t("about.bubble_instances") }}
</div>
</div>
<div class="panel-body">
<p>{{ $t("about.bubble_instances_description")}}:</p>
<ul>
<li
v-for="instance in bubbleInstances"
:key="instance"
v-text="instance"
/>
</ul>
</div>
</div>
</div>
</template>
<script src="./local_bubble_panel.js"></script>
<style lang="scss">
@import '../../_variables.scss';
@import './local_bubble_panel.scss';
</style>

View file

@ -103,6 +103,18 @@
<BooleanSetting path="renderMisskeyMarkdown"> <BooleanSetting path="renderMisskeyMarkdown">
{{ $t('settings.render_mfm') }} {{ $t('settings.render_mfm') }}
</BooleanSetting> </BooleanSetting>
<ul
class="setting-list suboptions"
>
<li>
<BooleanSetting
path="renderMfmOnHover"
:disabled="!renderMisskeyMarkdown"
>
{{ $t('settings.render_mfm_on_hover') }}
</BooleanSetting>
</li>
</ul>
</li> </li>
<li> <li>
<BooleanSetting <BooleanSetting

View file

@ -204,3 +204,4 @@
} }
} }
} }

View file

@ -100,6 +100,9 @@ const StatusContent = {
maxThumbnails () { maxThumbnails () {
return this.mergedConfig.maxThumbnails return this.mergedConfig.maxThumbnails
}, },
renderMfmOnHover () {
return this.mergedConfig.renderMfmOnHover
},
...mapGetters(['mergedConfig']), ...mapGetters(['mergedConfig']),
...mapState({ ...mapState({
currentUser: state => state.users.currentUser currentUser: state => state.users.currentUser

View file

@ -1,7 +1,7 @@
<template> <template>
<div <div
class="StatusContent" class="StatusContent"
:class="{ '-compact': compact }" :class="{ '-compact': compact, 'mfm-hover': renderMfmOnHover }"
> >
<slot name="header" /> <slot name="header" />
<StatusBody <StatusBody
@ -75,5 +75,17 @@
height: 50px; height: 50px;
} }
} }
&.mfm-hover:not(:hover) {
.mfm {
animation: none;
}
}
} }
.quote-inline,
.quote + .link-preview {
display: none;
}
</style> </style>

View file

@ -51,6 +51,10 @@
width: 100%; width: 100%;
height: 100%; height: 100%;
object-fit: contain; object-fit: contain;
&::before {
line-height: 20px;
}
} }
&.animated { &.animated {

View file

@ -1,5 +1,7 @@
{ {
"about": { "about": {
"bubble_instances": "Local Bubble Instances",
"bubble_instances_description": "Instances chosen by the admins to represent the local area of this instance",
"mrf": { "mrf": {
"federation": "Federation", "federation": "Federation",
"keyword": { "keyword": {
@ -577,6 +579,7 @@
"remove_alias": "Remove this alias", "remove_alias": "Remove this alias",
"remove_backup": "Remove", "remove_backup": "Remove",
"render_mfm": "Render Misskey Markdown", "render_mfm": "Render Misskey Markdown",
"render_mfm_on_hover": "Pause MFM animations until post hover",
"replies_in_timeline": "Replies in timeline", "replies_in_timeline": "Replies in timeline",
"reply_visibility_all": "Show all replies", "reply_visibility_all": "Show all replies",
"reply_visibility_following": "Only show replies directed at me or users I'm following", "reply_visibility_following": "Only show replies directed at me or users I'm following",

View file

@ -96,6 +96,7 @@ export const defaultState = {
sensitiveByDefault: undefined, // instance default sensitiveByDefault: undefined, // instance default
sensitiveIfSubject: undefined, sensitiveIfSubject: undefined,
renderMisskeyMarkdown: undefined, renderMisskeyMarkdown: undefined,
renderMfmOnHover: undefined, // instance default
conversationDisplay: undefined, // instance default conversationDisplay: undefined, // instance default
conversationTreeAdvanced: undefined, // instance default conversationTreeAdvanced: undefined, // instance default
conversationOtherRepliesButton: undefined, // instance default conversationOtherRepliesButton: undefined, // instance default

View file

@ -57,6 +57,7 @@ const defaultState = {
sensitiveByDefault: false, sensitiveByDefault: false,
sensitiveIfSubject: true, sensitiveIfSubject: true,
renderMisskeyMarkdown: false, renderMisskeyMarkdown: false,
renderMfmOnHover: false,
conversationDisplay: 'linear', conversationDisplay: 'linear',
conversationTreeAdvanced: false, conversationTreeAdvanced: false,
conversationOtherRepliesButton: 'below', conversationOtherRepliesButton: 'below',