Merge remote-tracking branch 'origin/develop' into optimize

This commit is contained in:
Henry Jameson 2026-06-08 00:03:17 +03:00
commit 3bf558089f
11 changed files with 39 additions and 5 deletions

View file

@ -0,0 +1 @@
displaying other user's backgrounds (if supported by BE)

View file

@ -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) {

View file

@ -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 {

View file

@ -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') }}

View file

@ -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,
) )
}, },

View file

@ -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() {

View file

@ -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)",

View file

@ -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',

View file

@ -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)
} }

View file

@ -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) {

View file

@ -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,