* Move frontend to root * Fix backend issues * Remove old routes * Setup Dockerfile * Fix today /tags multiplt requests issue * Fix race condition on today's inbox widget * Fix cors development issue * Fix CORS for Dockerfile * Fix dockerised settings for infinite loop * Fix translation issues * fixup! Fix translation issues --------- Co-authored-by: Your Name <you@example.com>
78 lines
No EOL
2.8 KiB
TypeScript
78 lines
No EOL
2.8 KiB
TypeScript
import { Project } from "../../entities/Project";
|
|
|
|
export const getDescription = (
|
|
query: URLSearchParams,
|
|
projects: Project[],
|
|
t: (key: string, options?: any) => string
|
|
): string => {
|
|
try {
|
|
// Default descriptions as fallbacks in case translation function fails
|
|
const defaultDescriptions = {
|
|
project: "Project tasks",
|
|
today: "Tasks due today or scheduled for immediate attention",
|
|
inbox: "Uncategorized tasks without project or due date",
|
|
next: "Tasks that are actionable in the near future",
|
|
upcoming: "Tasks scheduled for the upcoming week",
|
|
someday: "Tasks without urgency or specific due date",
|
|
completed: "Tasks you've completed",
|
|
allTasks: "All tasks from different projects and priorities"
|
|
};
|
|
|
|
// Check for project_id first
|
|
const projectId = query.get('project_id');
|
|
if (projectId) {
|
|
try {
|
|
const project = projects.find((p) => p.id?.toString() === projectId);
|
|
if (project) {
|
|
return t("taskViews.project.withName", { projectName: project.name });
|
|
} else {
|
|
return t("taskViews.project.noName");
|
|
}
|
|
} catch (e) {
|
|
console.error("Translation error for project description:", e);
|
|
// Fallback with project name if available
|
|
const project = projects.find((p) => p.id?.toString() === projectId);
|
|
return project
|
|
? `Tasks for project: ${project.name}`
|
|
: defaultDescriptions.project;
|
|
}
|
|
}
|
|
|
|
// Then check for type and status parameters
|
|
try {
|
|
if (query.get('type') === 'today') {
|
|
return t("taskViews.today");
|
|
}
|
|
if (query.get('type') === 'inbox') {
|
|
return t("taskViews.inbox");
|
|
}
|
|
if (query.get('type') === 'next') {
|
|
return t("taskViews.next");
|
|
}
|
|
if (query.get('type') === 'upcoming') {
|
|
return t("taskViews.upcoming");
|
|
}
|
|
if (query.get('type') === 'someday') {
|
|
return t("taskViews.someday");
|
|
}
|
|
if (query.get('status') === 'done') {
|
|
return t("taskViews.completed");
|
|
}
|
|
return t("taskViews.allTasks");
|
|
} catch (e) {
|
|
console.error("Translation error for task view description:", e);
|
|
|
|
// Return appropriate fallback based on type or status
|
|
if (query.get('type') === 'today') return defaultDescriptions.today;
|
|
if (query.get('type') === 'inbox') return defaultDescriptions.inbox;
|
|
if (query.get('type') === 'next') return defaultDescriptions.next;
|
|
if (query.get('type') === 'upcoming') return defaultDescriptions.upcoming;
|
|
if (query.get('type') === 'someday') return defaultDescriptions.someday;
|
|
if (query.get('status') === 'done') return defaultDescriptions.completed;
|
|
return defaultDescriptions.allTasks;
|
|
}
|
|
} catch (error) {
|
|
console.error("Error in getDescription:", error);
|
|
return "Tasks overview";
|
|
}
|
|
}; |