feat: Support User-Level Default Activities (#5125)

This commit is contained in:
miah
2025-10-15 21:30:08 -05:00
committed by GitHub
parent 64d481b4fc
commit 7e168eb75b
7 changed files with 157 additions and 8 deletions

View File

@@ -171,13 +171,26 @@
class="mt-10"
:title="$t('profile.preferences')"
/>
<v-checkbox
v-model="userCopy.advanced"
class="mt-n4"
:label="$t('profile.show-advanced-description')"
color="primary"
@change="updateUser"
/>
<v-card variant="outlined" style="border-color: lightgrey;">
<v-card-text>
<v-combobox
v-model="selectedDefaultActivity"
:label="$t('user.default-activity')"
:items="activityOptions"
:hint="$t('user.default-activity-hint')"
density="comfortable"
variant="underlined"
validate-on="blur"
persistent-hint
/>
<v-checkbox
v-model="userCopy.advanced"
:label="$t('profile.show-advanced-description')"
color="primary"
@change="updateUser"
/>
</v-card-text>
</v-card>
<nuxt-link
class="mt-5 d-flex flex-column justify-center text-center"
:to="`/group`"
@@ -207,6 +220,9 @@ import UserAvatar from "~/components/Domain/User/UserAvatar.vue";
import UserPasswordStrength from "~/components/Domain/User/UserPasswordStrength.vue";
import { validators } from "~/composables/use-validators";
import type { VForm } from "~/types/auto-forms";
import { useUserActivityPreferences } from "~/composables/use-users/preferences";
import useDefaultActivity from "~/composables/use-default-activity";
import { ActivityKey } from "~/lib/api/types/activity";
export default defineNuxtComponent({
components: {
@@ -216,12 +232,20 @@ export default defineNuxtComponent({
setup() {
const i18n = useI18n();
const $auth = useMealieAuth();
const { getDefaultActivityLabels, getActivityLabel, getActivityKey } = useDefaultActivity();
const user = computed(() => $auth.user.value);
useSeoMeta({
title: i18n.t("settings.profile"),
});
const activityPreferences = useUserActivityPreferences();
const activityOptions = getDefaultActivityLabels(i18n);
const selectedDefaultActivity = ref(getActivityLabel(i18n, activityPreferences.value.defaultActivity));
watch(selectedDefaultActivity, () => {
activityPreferences.value.defaultActivity = getActivityKey(i18n, selectedDefaultActivity.value) ?? ActivityKey.RECIPES;
});
watch(user, () => {
userCopy.value = { ...user.value };
});
@@ -273,6 +297,8 @@ export default defineNuxtComponent({
updateUser,
updatePassword,
userCopy,
selectedDefaultActivity,
activityOptions,
password,
domUpdatePassword,
passwordsMatch,