Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(settings): drop local setting for background blur filter, use provided by server #12633

Merged
merged 1 commit into from
Jul 11, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions lib/TInitialState.php
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,9 @@ protected function publishInitialStateForUser(IUser $user, IRootFolder $rootFold
$this->serverConfig->getUserValue($user->getUID(), 'spreed', 'play_sounds', 'yes') === 'yes'
);

$this->initialState->provideInitialState(
'force_enable_blur_filter',
$this->serverConfig->getUserValue($user->getUID(), 'theming', 'force_enable_blur_filter', ''));

$this->initialState->provideInitialState(
'user_group_ids',
Expand Down
16 changes: 2 additions & 14 deletions src/components/CallView/CallView.vue
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
-->

<template>
<div id="call-container" :class="{ 'blurred': isBackgroundBlurred }">
<div id="call-container">
<ViewerOverlayCallView v-if="isViewerOverlay"
:token="token"
:model="promotedParticipantModel"
Expand Down Expand Up @@ -134,7 +134,6 @@ import VideoVue from './shared/VideoVue.vue'
import ViewerOverlayCallView from './shared/ViewerOverlayCallView.vue'

import { SIMULCAST } from '../../constants.js'
import BrowserStorage from '../../services/BrowserStorage.js'
import { fetchPeers } from '../../services/callsService.js'
import { getTalkConfig } from '../../services/CapabilitiesManager.ts'
import { EventBus } from '../../services/EventBus.js'
Expand Down Expand Up @@ -191,7 +190,6 @@ export default {
localSharedData: {
screenVisible: true,
},
isBackgroundBlurred: true,
showPresenterOverlay: true,
debounceFetchPeers: () => {},
}
Expand Down Expand Up @@ -417,7 +415,6 @@ export default {
// Ensure that data is properly initialized before mounting the
// subviews.
this.updateDataFromCallParticipantModels(this.callParticipantModels)
this.isBackgroundBlurred = BrowserStorage.getItem('background-blurred') !== 'false'
Antreesy marked this conversation as resolved.
Show resolved Hide resolved
},

mounted() {
Expand All @@ -427,7 +424,6 @@ export default {
callParticipantCollection.on('remove', this._lowerHandWhenParticipantLeaves)

subscribe('switch-screen-to-id', this._switchScreenToId)
subscribe('set-background-blurred', this.setBackgroundBlurred)
},

beforeDestroy() {
Expand All @@ -438,7 +434,6 @@ export default {
callParticipantCollection.off('remove', this._lowerHandWhenParticipantLeaves)

unsubscribe('switch-screen-to-id', this._switchScreenToId)
unsubscribe('set-background-blurred', this.setBackgroundBlurred)
},

methods: {
Expand Down Expand Up @@ -702,10 +697,6 @@ export default {
}
},

setBackgroundBlurred(value) {
this.isBackgroundBlurred = value
},

isModelWithVideo(callParticipantModel) {
return callParticipantModel.attributes.videoAvailable
&& this.sharedDatas[callParticipantModel.attributes.peerId].remoteVideoBlocker.isVideoEnabled()
Expand Down Expand Up @@ -738,10 +729,7 @@ export default {
width: 100%;
height: 100%;
background-color: $color-call-background;

&.blurred {
backdrop-filter: blur(25px);
}
backdrop-filter: var(--filter-background-blur);
}

#videos {
Expand Down
41 changes: 25 additions & 16 deletions src/components/SettingsDialog/SettingsDialog.vue
Original file line number Diff line number Diff line change
Expand Up @@ -86,12 +86,19 @@
:name="t('spreed', 'Performance')"
class="app-settings-section">
<NcCheckboxRadioSwitch id="blur-call-background"
:checked="isBackgroundBlurred"
type="switch"
:checked="isBackgroundBlurred === 'yes'"
:indeterminate="isBackgroundBlurred === ''"
type="checkbox"
class="checkbox"
@update:checked="toggleBackgroundBlurred">
disabled>
{{ t('spreed', 'Blur background image in the call (may increase GPU load)') }}
</NcCheckboxRadioSwitch>
<a :href="themingUrl"
target="_blank"
rel="noreferrer nofollow"
class="external">
{{ t('spreed', 'Background blur for Nextcloud instance can be adjusted in the theming settings.') }} ↗
</a>
</NcAppSettingsSection>
<NcAppSettingsSection v-if="!disableKeyboardShortcuts"
id="shortcuts"
Expand Down Expand Up @@ -163,11 +170,13 @@
</template>

<script>
import axios from '@nextcloud/axios'
import { showError, showSuccess } from '@nextcloud/dialogs'
import { FilePickerVue } from '@nextcloud/dialogs/filepicker.js'
import { emit, subscribe, unsubscribe } from '@nextcloud/event-bus'
import { subscribe, unsubscribe } from '@nextcloud/event-bus'
import { loadState } from '@nextcloud/initial-state'
import { t } from '@nextcloud/l10n'
import { generateUrl } from '@nextcloud/router'
import { generateOcsUrl, generateUrl } from '@nextcloud/router'

import NcAppSettingsDialog from '@nextcloud/vue/dist/Components/NcAppSettingsDialog.js'
import NcAppSettingsSection from '@nextcloud/vue/dist/Components/NcAppSettingsSection.js'
Expand All @@ -181,6 +190,7 @@ import BrowserStorage from '../../services/BrowserStorage.js'
import { getTalkConfig } from '../../services/CapabilitiesManager.ts'
import { useSettingsStore } from '../../stores/settings.js'

const isBackgroundBlurred = loadState('spreed', 'force_enable_blur_filter', '')
const supportTypingStatus = getTalkConfig('local', 'chat', 'typing-privacy') !== undefined

export default {
Expand All @@ -201,6 +211,7 @@ export default {
return {
settingsStore,
supportTypingStatus,
isBackgroundBlurred,
}
},

Expand All @@ -211,7 +222,6 @@ export default {
attachmentFolderLoading: true,
privacyLoading: false,
playSoundsLoading: false,
isBackgroundBlurred: true,
}
},

Expand Down Expand Up @@ -248,6 +258,10 @@ export default {
return generateUrl('/settings/user/notifications')
},

themingUrl() {
return generateUrl('/settings/user/theming')
},

disableKeyboardShortcuts() {
return OCP.Accessibility.disableKeyboardShortcuts()
},
Expand All @@ -263,11 +277,12 @@ export default {

created() {
const blurred = BrowserStorage.getItem('background-blurred')
if (blurred === null) {
BrowserStorage.setItem('background-blurred', 'true')
if (blurred === 'false' && isBackgroundBlurred === '') {
DorraJaouad marked this conversation as resolved.
Show resolved Hide resolved
console.debug('Blur was disabled intentionally, propagating last choice to server')
axios.post(generateOcsUrl('apps/provisioning_api/api/v1/config/users/theming/force_enable_blur_filter'),
{ configValue: 'no' })
}

this.isBackgroundBlurred = blurred !== 'false'
BrowserStorage.removeItem('background-blurred')
},

mounted() {
Expand Down Expand Up @@ -323,12 +338,6 @@ export default {
this.privacyLoading = false
},

toggleBackgroundBlurred(value) {
this.isBackgroundBlurred = value
BrowserStorage.setItem('background-blurred', value)
emit('set-background-blurred', value)
},

async togglePlaySounds() {
this.playSoundsLoading = true
try {
Expand Down
Loading