Compare commits

...

3 Commits

Author SHA1 Message Date
kolaente 95a6fe7cfc
Remove the .only modifier 2021-04-07 21:21:58 +02:00
kolaente 613f990ceb
Fix updating the user name in settings 2021-04-07 21:08:09 +02:00
kolaente 6d83bf6f58
Add settings for user search 2021-04-07 18:30:26 +02:00
5 changed files with 33 additions and 10 deletions

View File

@ -410,7 +410,7 @@ describe('Lists', () => {
.should('contain', `/tasks/${tasks[0].id}`)
})
it.only('Should remove a task from the kanban board when moving it to another list', () => {
it('Should remove a task from the kanban board when moving it to another list', () => {
const lists = ListFactory.create(2)
BucketFactory.create(2, {
list_id: '{increment}',

View File

@ -1,8 +1,14 @@
import AbstractModel from './abstractModel'
import UserSettingsModel from '@/models/userSettings'
export default class UserModel extends AbstractModel {
constructor(data) {
super(data)
if (this.settings !== null) {
this.settings = new UserSettingsModel(this.settings)
}
this.created = new Date(this.created)
this.updated = new Date(this.updated)
}
@ -15,6 +21,7 @@ export default class UserModel extends AbstractModel {
name: '',
created: null,
updated: null,
settings: null,
}
}

View File

@ -6,6 +6,8 @@ export default class UserSettingsModel extends AbstractModel {
return {
name: '',
emailRemindersEnabled: true,
discoverableByName: false,
discoverableByEmail: false,
}
}
}

View File

@ -11,6 +11,7 @@ export default {
needsTotpPasscode: false,
avatarUrl: '',
lastUserInfoRefresh: null,
settings: {},
}),
mutations: {
info(state, info) {
@ -18,10 +19,15 @@ export default {
if (info !== null) {
state.avatarUrl = info.getAvatarUrl()
}
if (info.settings) {
state.settings = info.settings
}
},
setUserSettings(state, {name, emailRemindersEnabled}) {
state.info.name = name
state.info.emailRemindersEnabled = emailRemindersEnabled
setUserSettings(state, settings) {
state.settings = settings
const info = state.info !== null ? state.info : {}
info.name = settings.name
state.info = info
},
authenticated(state, authenticated) {
state.authenticated = authenticated
@ -176,7 +182,7 @@ export default {
authenticated = info.exp >= ts
ctx.commit('info', info)
if (authenticated ) {
if (authenticated) {
const HTTP = HTTPFactory()
// We're not returning the promise here to prevent blocking the initial ui render if the user is
// accessing the site with a token in local storage
@ -190,7 +196,6 @@ export default {
info.type = ctx.state.info.type
info.email = ctx.state.info.email
info.exp = ctx.state.info.exp
info.emailRemindersEnabled = ctx.state.info.emailRemindersEnabled
ctx.commit('info', info)
ctx.commit('authenticated', authenticated)

View File

@ -108,6 +108,18 @@
Send me Reminders for tasks via Email
</label>
</div>
<div class="field">
<label class="checkbox">
<input type="checkbox" v-model="settings.discoverableByName"/>
Let other users find me when they search for my name
</label>
</div>
<div class="field">
<label class="checkbox">
<input type="checkbox" v-model="settings.discoverableByEmail"/>
Let other users find me when they search for my full email
</label>
</div>
<div class="field">
<label class="checkbox">
<input type="checkbox" v-model="playSoundWhenDone"/>
@ -276,10 +288,7 @@ export default {
this.totp = new TotpModel()
this.userSettingsService = new UserSettingsService()
this.settings = new UserSettingsModel({
name: this.$store.state.auth.info.name,
emailRemindersEnabled: this.$store.state.auth.info.emailRemindersEnabled ?? false,
})
this.settings = this.$store.state.auth.settings
this.playSoundWhenDone = localStorage.getItem(playSoundWhenDoneKey) === 'true' || localStorage.getItem(playSoundWhenDoneKey) === null