Merge remote-tracking branch 'origin/develop' into optimize
This commit is contained in:
commit
3bf558089f
11 changed files with 39 additions and 5 deletions
1
changelog.d/profilebg.add
Normal file
1
changelog.d/profilebg.add
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
displaying other user's backgrounds (if supported by BE)
|
||||||
12
src/App.js
12
src/App.js
|
|
@ -158,13 +158,23 @@ export default {
|
||||||
userBackground() {
|
userBackground() {
|
||||||
return this.currentUser.background_image
|
return this.currentUser.background_image
|
||||||
},
|
},
|
||||||
|
foreignProfileBackground() {
|
||||||
|
return (
|
||||||
|
useMergedConfigStore().mergedConfig.allowForeignUserBackground &&
|
||||||
|
useInterfaceStore().foreignProfileBackground
|
||||||
|
)
|
||||||
|
},
|
||||||
instanceBackground() {
|
instanceBackground() {
|
||||||
return useMergedConfigStore().mergedConfig.hideInstanceWallpaper
|
return useMergedConfigStore().mergedConfig.hideInstanceWallpaper
|
||||||
? null
|
? null
|
||||||
: this.instanceBackgroundUrl
|
: this.instanceBackgroundUrl
|
||||||
},
|
},
|
||||||
background() {
|
background() {
|
||||||
return this.userBackground || this.instanceBackground
|
return (
|
||||||
|
this.foreignProfileBackground ||
|
||||||
|
this.userBackground ||
|
||||||
|
this.instanceBackground
|
||||||
|
)
|
||||||
},
|
},
|
||||||
bgStyle() {
|
bgStyle() {
|
||||||
if (this.background) {
|
if (this.background) {
|
||||||
|
|
|
||||||
|
|
@ -200,6 +200,7 @@ nav {
|
||||||
background-color: var(--wallpaper);
|
background-color: var(--wallpaper);
|
||||||
background-image: var(--body-background-image);
|
background-image: var(--body-background-image);
|
||||||
background-position: 50%;
|
background-position: 50%;
|
||||||
|
transition: background-image 1s;
|
||||||
}
|
}
|
||||||
|
|
||||||
.underlay {
|
.underlay {
|
||||||
|
|
|
||||||
|
|
@ -263,6 +263,11 @@
|
||||||
{{ $t('settings.hide_wallpaper') }}
|
{{ $t('settings.hide_wallpaper') }}
|
||||||
</BooleanSetting>
|
</BooleanSetting>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<BooleanSetting path="allowForeignUserBackground">
|
||||||
|
{{ $t('settings.foreign_user_background') }}
|
||||||
|
</BooleanSetting>
|
||||||
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<BooleanSetting path="compactProfiles">
|
<BooleanSetting path="compactProfiles">
|
||||||
{{ $t('settings.compact_profiles') }}
|
{{ $t('settings.compact_profiles') }}
|
||||||
|
|
|
||||||
|
|
@ -262,7 +262,7 @@ const Status = {
|
||||||
},
|
},
|
||||||
muteFilterHits() {
|
muteFilterHits() {
|
||||||
return muteFilterHits(
|
return muteFilterHits(
|
||||||
Object.values(useSyncConfigStore().prefsStorage.simple.muteFilters),
|
Object.values(useSyncConfigStore().prefsStorage.simple.muteFilters || {}),
|
||||||
this.status,
|
this.status,
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ import withLoadMore from '../../hocs/with_load_more/with_load_more'
|
||||||
|
|
||||||
import { useInstanceStore } from 'src/stores/instance.js'
|
import { useInstanceStore } from 'src/stores/instance.js'
|
||||||
import { useInstanceCapabilitiesStore } from 'src/stores/instance_capabilities.js'
|
import { useInstanceCapabilitiesStore } from 'src/stores/instance_capabilities.js'
|
||||||
|
import { useInterfaceStore } from 'src/stores/interface.js'
|
||||||
import { useMergedConfigStore } from 'src/stores/merged_config.js'
|
import { useMergedConfigStore } from 'src/stores/merged_config.js'
|
||||||
|
|
||||||
import { library } from '@fortawesome/fontawesome-svg-core'
|
import { library } from '@fortawesome/fontawesome-svg-core'
|
||||||
|
|
@ -55,9 +56,14 @@ const UserProfile = {
|
||||||
const routeParams = this.$route.params
|
const routeParams = this.$route.params
|
||||||
this.load({ name: routeParams.name, id: routeParams.id })
|
this.load({ name: routeParams.name, id: routeParams.id })
|
||||||
this.tab = get(this.$route, 'query.tab', defaultTabKey)
|
this.tab = get(this.$route, 'query.tab', defaultTabKey)
|
||||||
|
useInterfaceStore().setForeignProfileBackground(this.user?.background_image)
|
||||||
|
},
|
||||||
|
updated() {
|
||||||
|
useInterfaceStore().setForeignProfileBackground(this.user?.background_image)
|
||||||
},
|
},
|
||||||
unmounted() {
|
unmounted() {
|
||||||
this.stopFetching()
|
this.stopFetching()
|
||||||
|
useInterfaceStore().setForeignProfileBackground(null)
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
timeline() {
|
timeline() {
|
||||||
|
|
|
||||||
|
|
@ -636,6 +636,7 @@
|
||||||
"navbar_column_stretch": "Stretch navbar to columns width",
|
"navbar_column_stretch": "Stretch navbar to columns width",
|
||||||
"always_show_post_button": "Always show floating New Post button",
|
"always_show_post_button": "Always show floating New Post button",
|
||||||
"hide_wallpaper": "Hide instance wallpaper",
|
"hide_wallpaper": "Hide instance wallpaper",
|
||||||
|
"foreign_user_background": "Allow other user's profiles to override wallpaper",
|
||||||
"preload_images": "Preload images",
|
"preload_images": "Preload images",
|
||||||
"use_one_click_nsfw": "Open NSFW attachments with just one click",
|
"use_one_click_nsfw": "Open NSFW attachments with just one click",
|
||||||
"hide_post_stats": "Hide post statistics (e.g. the number of favorites)",
|
"hide_post_stats": "Hide post statistics (e.g. the number of favorites)",
|
||||||
|
|
|
||||||
|
|
@ -140,6 +140,10 @@ export const INSTANCE_DEFAULT_CONFIG_DEFINITIONS = {
|
||||||
description: 'Hide Instance-specific panel',
|
description: 'Hide Instance-specific panel',
|
||||||
default: false,
|
default: false,
|
||||||
},
|
},
|
||||||
|
allowForeignUserBackground: {
|
||||||
|
description: "Allow other user's profiles to override wallpaper",
|
||||||
|
default: true,
|
||||||
|
},
|
||||||
hideInstanceWallpaper: {
|
hideInstanceWallpaper: {
|
||||||
description: 'Hide Instance default background',
|
description: 'Hide Instance default background',
|
||||||
default: false,
|
default: false,
|
||||||
|
|
@ -631,7 +635,7 @@ export const LOCAL_DEFAULT_CONFIG_DEFINITIONS = {
|
||||||
},
|
},
|
||||||
imageCompression: {
|
imageCompression: {
|
||||||
description: 'Image compression (WebP/JPEG)',
|
description: 'Image compression (WebP/JPEG)',
|
||||||
default: false,
|
default: true,
|
||||||
},
|
},
|
||||||
alwaysUseJpeg: {
|
alwaysUseJpeg: {
|
||||||
description: 'Compress images using JPEG only',
|
description: 'Compress images using JPEG only',
|
||||||
|
|
|
||||||
|
|
@ -302,7 +302,8 @@ export const parseAttachment = (data) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data.type !== 'unknown') {
|
if (data.type !== 'unknown') {
|
||||||
output.type = data.type
|
// treat gifv like it is "video"
|
||||||
|
output.type = data.type === 'gifv' ? 'video' : data.type
|
||||||
} else {
|
} else {
|
||||||
output.type = fileType(output.mimetype)
|
output.type = fileType(output.mimetype)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -60,6 +60,7 @@ export const useInterfaceStore = defineStore('interface', {
|
||||||
globalNotices: [],
|
globalNotices: [],
|
||||||
layoutHeight: 0,
|
layoutHeight: 0,
|
||||||
lastTimeline: null,
|
lastTimeline: null,
|
||||||
|
foreignProfileBackground: null,
|
||||||
}),
|
}),
|
||||||
actions: {
|
actions: {
|
||||||
setTemporaryChanges({ confirm, revert }) {
|
setTemporaryChanges({ confirm, revert }) {
|
||||||
|
|
@ -96,6 +97,9 @@ export const useInterfaceStore = defineStore('interface', {
|
||||||
console.error(`${error}`)
|
console.error(`${error}`)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
setForeignProfileBackground(url) {
|
||||||
|
this.foreignProfileBackground = url
|
||||||
|
},
|
||||||
settingsSaved({ success, error }) {
|
settingsSaved({ success, error }) {
|
||||||
if (success) {
|
if (success) {
|
||||||
if (this.noticeClearTimeout) {
|
if (this.noticeClearTimeout) {
|
||||||
|
|
|
||||||
|
|
@ -796,11 +796,12 @@ export const useSyncConfigStore = defineStore('sync_config', {
|
||||||
afterLoad(state) {
|
afterLoad(state) {
|
||||||
console.debug('Validating persisted state of SyncConfig')
|
console.debug('Validating persisted state of SyncConfig')
|
||||||
const newState = { ...state }
|
const newState = { ...state }
|
||||||
|
newState.prefsStorage = newState.prefsStorage || {}
|
||||||
const newEntries = Object.entries(ROOT_CONFIG).map(([path, value]) => {
|
const newEntries = Object.entries(ROOT_CONFIG).map(([path, value]) => {
|
||||||
const definition = ROOT_CONFIG_DEFINITIONS[path]
|
const definition = ROOT_CONFIG_DEFINITIONS[path]
|
||||||
const finalValue = validateSetting({
|
const finalValue = validateSetting({
|
||||||
path,
|
path,
|
||||||
value: newState.prefsStorage.simple[path],
|
value: newState.prefsStorage.simple?.[path],
|
||||||
definition,
|
definition,
|
||||||
throwError: false,
|
throwError: false,
|
||||||
validateObjects: false,
|
validateObjects: false,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue