added openrouter ai generated tasks
This commit is contained in:
72
lib/ai-task-metadata.ts
Normal file
72
lib/ai-task-metadata.ts
Normal file
@@ -0,0 +1,72 @@
|
||||
import type { ProfilePreferences } from "@/lib/profile-preferences-storage";
|
||||
|
||||
export type AiTaskGenerationMetadata = {
|
||||
aiTasksGeneratedOn: string | null;
|
||||
aiTasksInputHash: string | null;
|
||||
};
|
||||
|
||||
type StoredProfilePreferences = ProfilePreferences & {
|
||||
aiTasksGeneratedOn?: string;
|
||||
aiTasksInputHash?: string;
|
||||
};
|
||||
|
||||
export function getAiTaskGenerationMetadata(
|
||||
focusTopics: string | string[] | null | undefined,
|
||||
): AiTaskGenerationMetadata {
|
||||
const parsed = parseStoredPreferences(focusTopics);
|
||||
|
||||
return {
|
||||
aiTasksGeneratedOn: parsed.aiTasksGeneratedOn ?? null,
|
||||
aiTasksInputHash: parsed.aiTasksInputHash ?? null,
|
||||
};
|
||||
}
|
||||
|
||||
export function mergeAiTaskGenerationMetadata(
|
||||
preferences: ProfilePreferences,
|
||||
metadata: AiTaskGenerationMetadata,
|
||||
): string {
|
||||
const payload: StoredProfilePreferences = {
|
||||
...preferences,
|
||||
aiTasksGeneratedOn: metadata.aiTasksGeneratedOn ?? undefined,
|
||||
aiTasksInputHash: metadata.aiTasksInputHash ?? undefined,
|
||||
};
|
||||
|
||||
return JSON.stringify(payload);
|
||||
}
|
||||
|
||||
function parseStoredPreferences(
|
||||
value: string | string[] | null | undefined,
|
||||
): StoredProfilePreferences {
|
||||
const raw = Array.isArray(value) ? (value[0] ?? "") : (value ?? "");
|
||||
|
||||
if (!raw.trim()) {
|
||||
return {
|
||||
focusTopic: "Movement",
|
||||
avatarVibe: "Calm",
|
||||
dailyReminderEnabled: false,
|
||||
dailyReminderTime: "20:00",
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
const parsed = JSON.parse(raw) as StoredProfilePreferences;
|
||||
|
||||
if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
|
||||
return parsed;
|
||||
}
|
||||
} catch {
|
||||
return {
|
||||
focusTopic: raw,
|
||||
avatarVibe: "Calm",
|
||||
dailyReminderEnabled: false,
|
||||
dailyReminderTime: "20:00",
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
focusTopic: "Movement",
|
||||
avatarVibe: "Calm",
|
||||
dailyReminderEnabled: false,
|
||||
dailyReminderTime: "20:00",
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user