mirror of
https://github.com/mealie-recipes/mealie.git
synced 2025-10-27 16:24:31 -04:00
64 lines
1.8 KiB
TypeScript
64 lines
1.8 KiB
TypeScript
import type { Activity, I18n, TranslationResult } from "~/lib/api/types/activity";
|
|
import { ActivityKey } from "~/lib/api/types/activity";
|
|
|
|
export const DEFAULT_ACTIVITY = "/g/home" as const;
|
|
|
|
type ActivityRegistry = {
|
|
recipes: Activity;
|
|
mealplanner: Activity;
|
|
shopping_list: Activity;
|
|
};
|
|
|
|
const selectableActivities: ActivityRegistry = {
|
|
recipes: {
|
|
key: ActivityKey.RECIPES,
|
|
route: groupSlug => groupSlug ? `/g/${groupSlug}` : DEFAULT_ACTIVITY,
|
|
label: i18n => i18n.t("general.recipes"),
|
|
},
|
|
mealplanner: {
|
|
key: ActivityKey.MEALPLANNER,
|
|
route: () => "/household/mealplan/planner/view",
|
|
label: i18n => i18n.t("meal-plan.meal-planner"),
|
|
},
|
|
shopping_list: {
|
|
key: ActivityKey.SHOPPING_LIST,
|
|
route: () => "/shopping-lists",
|
|
label: i18n => i18n.t("shopping-list.shopping-lists"),
|
|
},
|
|
};
|
|
|
|
function getDefaultActivityRoute(activityKey?: ActivityKey, groupSlug?: string): string {
|
|
if (!activityKey) {
|
|
return DEFAULT_ACTIVITY;
|
|
}
|
|
const route = selectableActivities[activityKey]?.route ?? (() => DEFAULT_ACTIVITY);
|
|
return route(groupSlug);
|
|
}
|
|
|
|
function getDefaultActivityLabels(i18n: I18n): TranslationResult[] {
|
|
return Object.values(selectableActivities).map(
|
|
({ label }) => label(i18n),
|
|
);
|
|
}
|
|
|
|
function getActivityKey(i18n: I18n, target: TranslationResult = ""): ActivityKey | undefined {
|
|
return Object.values(selectableActivities)
|
|
.find(({ label }) => label(i18n) === target)?.key;
|
|
}
|
|
|
|
function getActivityLabel(i18n: I18n, target?: ActivityKey): TranslationResult {
|
|
return Object.values(selectableActivities)
|
|
.find(({ key }) => key === target)
|
|
?.label(i18n) ?? "";
|
|
}
|
|
|
|
export default function useDefaultActivity() {
|
|
return {
|
|
selectableActivities,
|
|
getDefaultActivityRoute,
|
|
getDefaultActivityLabels,
|
|
getActivityKey,
|
|
getActivityLabel,
|
|
};
|
|
}
|