Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
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
1 change: 1 addition & 0 deletions lib/Settings/Admin/AdminSettings.php
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,7 @@ public function getForm(): TemplateResponse {
}

protected function initGeneralSettings(): void {
$this->initialState->provideInitialState('ask_guest_username', (int) $this->serverConfig->getAppValue('spreed', 'ask_guest_username', '0'));
$this->initialState->provideInitialState('default_group_notification', (int) $this->serverConfig->getAppValue('spreed', 'default_group_notification', Participant::NOTIFY_MENTION));
$this->initialState->provideInitialState('conversations_files', (int) $this->serverConfig->getAppValue('spreed', 'conversations_files', '1'));
$this->initialState->provideInitialState('conversations_files_public_shares', (int) $this->serverConfig->getAppValue('spreed', 'conversations_files_public_shares', '1'));
Expand Down
5 changes: 5 additions & 0 deletions lib/TInitialState.php
Original file line number Diff line number Diff line change
Expand Up @@ -177,5 +177,10 @@ protected function publishInitialStateForGuest(): void {
'play_sounds',
false
);

$this->initialState->provideInitialState(
'ask_guest_username',
(int) $this->serverConfig->getAppValue('spreed', 'ask_guest_username', '0')
);
}
}
23 changes: 23 additions & 0 deletions src/components/AdminSettings/GeneralSettings.vue
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,17 @@
<div id="general_settings" class="videocalls section">
<h2>{{ t('spreed', 'General settings') }}</h2>

<p>
<input id="ask_guest_username"
v-model="askGuestUsername"
type="checkbox"
name="ask_guest_username"
class="checkbox"
:disabled="loading || loadingAskGuestUsername"
@change="saveAskGuestUsername">
<label for="ask_guest_username">{{ t('spreed', 'Ask guest for a displayname') }} <span class="icon-info" :title="t('spreed', 'If guest have no display name, nextcloud will ask it on guest joining to conversation')" /></label>
</p>

<h3>{{ t('spreed', 'Default notification settings') }}</h3>

<p>
Expand Down Expand Up @@ -83,9 +94,11 @@ export default {
data() {
return {
loading: true,
loadingAskGuestUsername: false,
loadingConversationsFiles: false,
loadingDefaultGroupNotification: false,

askGuestUsername: false,
defaultGroupNotificationOptions,
defaultGroupNotification: defaultGroupNotificationOptions[1],

Expand All @@ -96,13 +109,23 @@ export default {

mounted() {
this.loading = true
this.askGuestUsername = parseInt(loadState('spreed', 'ask_guest_username')) === 1
this.conversationsFiles = parseInt(loadState('spreed', 'conversations_files')) === 1
this.defaultGroupNotification = defaultGroupNotificationOptions[parseInt(loadState('spreed', 'default_group_notification')) - 1]
this.conversationsFilesPublicShares = parseInt(loadState('spreed', 'conversations_files_public_shares')) === 1
this.loading = false
},

methods: {
saveAskGuestUsername() {
this.loadingAskGuestUsername = true

OCP.AppConfig.setValue('spreed', 'ask_guest_username', this.askGuestUsername ? '1' : '0', {
success: function() {
this.loadingAskGuestUsername = false
}.bind(this),
})
},
saveDefaultGroupNotification() {
this.loadingDefaultGroupNotification = true

Expand Down
105 changes: 75 additions & 30 deletions src/components/SetGuestUsername.vue
Original file line number Diff line number Diff line change
Expand Up @@ -21,48 +21,79 @@

<template>
<!-- Guest username setting form -->
<form
class="username-form"
@submit.prevent="handleChooseUserName">
<h3>
{{ t('spreed', 'Display name: ') }} <strong>{{ actorDisplayName ? actorDisplayName : t('spreed', 'Guest') }}</strong>
<button
class="icon-rename"
@click.prevent="handleEditUsername">
{{ t('spreed', 'Edit') }}
</button>
</h3>
<div
v-if="isEditingUsername"
class="username-form__wrapper">
<input
ref="usernameInput"
v-model="guestUserName"
:placeholder="t('spreed', 'Guest')"
class="username-form__input"
type="text"
@keydown.enter="handleChooseUserName"
@keydown.esc="isEditingUsername = !isEditingUsername">
<button
class="username-form__button"
type="submit">
<div class="icon-confirm" />
</button>
</div>
</form>
<div>
<form
class="username-form"
@submit.prevent="handleChooseUserName">
<h3>
{{ t('spreed', 'Display name: ') }} <strong>{{ actorDisplayName ? actorDisplayName : t('spreed', 'Guest') }}</strong>
<button
class="icon-rename"
@click.prevent="handleEditUsername">
{{ t('spreed', 'Edit') }}
</button>
</h3>
<div
v-if="isEditingUsername"
class="username-form__wrapper">
<input
ref="usernameInput"
v-model="guestUserName"
:placeholder="t('spreed', 'Guest')"
class="username-form__input"
type="text"
@keydown.enter="handleChooseUserName"
@keydown.esc="isEditingUsername = !isEditingUsername">
<button
class="username-form__button"
type="submit">
<div class="icon-confirm" />
</button>
</div>
</form>
<Modal v-if="modal" :canClose="false">
<form
class="username-form"
@submit.prevent="handleChooseUserName2">
<div
class="username-form__wrapper"
style="display: block">
<h3>
{{ t('spreed', 'Display name: ') }}
</h3>
<input
ref="usernameInput"
v-model="guestUserName"
:placeholder="t('spreed', 'Guest')"
class="username-form__input"
type="text"
@keydown.enter="handleChooseUserName2">
<button
class="username-form__button"
type="submit">
<div class="icon-confirm" />
</button>
</div>
</form>
</Modal>
</div>
</template>

<script>
import { setGuestUserName } from '../services/participantsService'
import Modal from '@nextcloud/vue/dist/Components/Modal'

export default {
name: 'SetGuestUsername',

components: {
Modal,
},
data() {
return {
guestUserName: '',
isEditingUsername: false,
delayHandleUserNameFromBrowserStorage: false,
modal: (this.$store.getters.getAskGuestUsername() === 1) && !localStorage.getItem('nick'),
}
},

Expand Down Expand Up @@ -140,6 +171,14 @@ export default {
})
}
},

handleChooseUserName2() {
if ((this.guestUserName === '') || !this.guestUserName) {
return false
}
this.handleChooseUserName()
this.modal = false
},
},

}
Expand Down Expand Up @@ -170,4 +209,10 @@ export default {
}
}

.modal__content {
width: 50vw;
margin: 10vw 0;
text-align: center;
}

</style>
6 changes: 6 additions & 0 deletions src/store/guestNameStore.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,12 @@
*
*/
import Vue from 'vue'
import fromStateOr from './helper'

const state = {
guestNames: {
},
askGuestUsername: fromStateOr('spreed', 'ask_guest_username', 0),
}

const getters = {
Expand All @@ -38,6 +40,10 @@ const getters = {
}
return t('spreed', 'Guest')
},

getAskGuestUsername: (state) => () => {
return state.askGuestUsername
},
}

const mutations = {
Expand Down