WIP: feat: add default reminder for tasks with a due date #2360
|
@ -16,7 +16,7 @@ function calculateDefaultReminderSeconds(type: string, amount: number): number {
|
||||||
case 'months':
|
case 'months':
|
||||||
konrad marked this conversation as resolved
Outdated
|
|||||||
return amount * 60 * 60 * 24 * 30
|
return amount * 60 * 60 * 24 * 30
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,14 +29,18 @@ export function saveDefaultReminder(enabled: boolean, type: string, amount: numb
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getDefaultReminderAmount(): number | null {
|
export function getDefaultReminderAmount(): number | null {
|
||||||
|
const settings = getDefaultReminderSettings()
|
||||||
|
|
||||||
|
return settings?.enabled
|
||||||
|
? settings.amount
|
||||||
|
: null
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getDefaultReminderSettings(): DefaultReminderSettings | null {
|
||||||
dpschen marked this conversation as resolved
dpschen
commented
picky: don't create one-use-variable picky: don't create one-use-variable
konrad
commented
But here I'm using it twice? But here I'm using it twice?
dpschen
commented
Beeing too picky is also stupid… you are right! Beeing too picky is also stupid… you are right!
|
|||||||
const s: string | null = localStorage.getItem(DEFAULT_REMINDER_KEY)
|
const s: string | null = localStorage.getItem(DEFAULT_REMINDER_KEY)
|
||||||
if (s === null) {
|
if (s === null) {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
const settings: DefaultReminderSettings = JSON.parse(s)
|
return JSON.parse(s)
|
||||||
|
|
||||||
return settings.enabled
|
|
||||||
? settings.amount
|
|
||||||
: null
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,14 +20,14 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label class="checkbox">
|
<label class="checkbox">
|
||||||
<input type="checkbox" v-model="settings.defaultReminder"/>
|
<input type="checkbox" v-model="defaultReminderEnabled"/>
|
||||||
{{ $t('user.settings.general.defaultReminder') }}
|
{{ $t('user.settings.general.defaultReminder') }}
|
||||||
</label>
|
</label>
|
||||||
<p class="is-size-7">
|
<p class="is-size-7">
|
||||||
{{ $t('user.settings.general.defaultReminderHint') }}
|
{{ $t('user.settings.general.defaultReminderHint') }}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="field" v-if="settings.defaultReminder">
|
<div class="field" v-if="defaultReminderEnabled">
|
||||||
<label class="label" for="defaultReminderAmount">
|
<label class="label" for="defaultReminderAmount">
|
||||||
{{ $t('user.settings.general.defaultReminderAmount') }}
|
{{ $t('user.settings.general.defaultReminderAmount') }}
|
||||||
</label>
|
</label>
|
||||||
|
@ -219,7 +219,7 @@ import {AuthenticatedHTTPFactory} from '@/http-common'
|
||||||
import {useColorScheme} from '@/composables/useColorScheme'
|
import {useColorScheme} from '@/composables/useColorScheme'
|
||||||
import {useTitle} from '@/composables/useTitle'
|
import {useTitle} from '@/composables/useTitle'
|
||||||
import {objectIsEmpty} from '@/helpers/objectIsEmpty'
|
import {objectIsEmpty} from '@/helpers/objectIsEmpty'
|
||||||
import {saveDefaultReminder} from '@/helpers/defaultReminder'
|
import {getDefaultReminderSettings, saveDefaultReminder} from '@/helpers/defaultReminder'
|
||||||
|
|
||||||
const {t} = useI18n({useScope: 'global'})
|
const {t} = useI18n({useScope: 'global'})
|
||||||
useTitle(() => `${t('user.settings.general.title')} - ${t('user.settings.title')}`)
|
useTitle(() => `${t('user.settings.general.title')} - ${t('user.settings.title')}`)
|
||||||
|
@ -311,13 +311,17 @@ watch(
|
||||||
async function updateSettings() {
|
async function updateSettings() {
|
||||||
localStorage.setItem(playSoundWhenDoneKey, playSoundWhenDone.value ? 'true' : 'false')
|
localStorage.setItem(playSoundWhenDoneKey, playSoundWhenDone.value ? 'true' : 'false')
|
||||||
setQuickAddMagicMode(quickAddMagicMode.value)
|
setQuickAddMagicMode(quickAddMagicMode.value)
|
||||||
saveDefaultReminder(settings.value.defaultReminder, defaultReminderAmountType.value, defaultReminderAmount.value)
|
saveDefaultReminder(defaultReminderEnabled.value, defaultReminderAmountType.value, defaultReminderAmount.value)
|
||||||
|
|
||||||
await authStore.saveUserSettings({
|
await authStore.saveUserSettings({
|
||||||
settings: {...settings.value},
|
settings: {...settings.value},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const reminderSettings = getDefaultReminderSettings()
|
||||||
|
|
||||||
|
const defaultReminderEnabled = ref<boolean>(reminderSettings?.enabled || false)
|
||||||
|
// TODO: re-populate amount and type
|
||||||
const defaultReminderAmount = ref(1)
|
const defaultReminderAmount = ref(1)
|
||||||
konrad marked this conversation as resolved
dpschen
commented
Shouldn't the fallback be the same as the default in the model? Shouldn't the fallback be the same as the default in the model?
konrad
commented
Actually not, because this is what gets shown in the input when setting this for the first time. I felt like putting a Actually not, because this is what gets shown in the input when setting this for the first time. I felt like putting a `0` here would feel weired.
|
|||||||
const defaultReminderAmountType = ref('days')
|
const defaultReminderAmountType = ref('days')
|
||||||
</script>
|
</script>
|
||||||
|
|
Reference in New Issue
Block a user
We should save the factors in array in a mapping constant. This way the constant can be reused for the test.
Done.