Changes
This commit is contained in:
@@ -11,12 +11,27 @@ export interface Achievement {
|
||||
secret?: boolean;
|
||||
}
|
||||
|
||||
// Track AI message count in localStorage
|
||||
const AI_MESSAGE_COUNT_KEY = 'ai-message-count';
|
||||
|
||||
export const incrementAiMessageCount = (): number => {
|
||||
const current = parseInt(localStorage.getItem(AI_MESSAGE_COUNT_KEY) || '0', 10);
|
||||
const newCount = current + 1;
|
||||
localStorage.setItem(AI_MESSAGE_COUNT_KEY, newCount.toString());
|
||||
return newCount;
|
||||
};
|
||||
|
||||
export const getAiMessageCount = (): number => {
|
||||
return parseInt(localStorage.getItem(AI_MESSAGE_COUNT_KEY) || '0', 10);
|
||||
};
|
||||
|
||||
interface AchievementsContextType {
|
||||
achievements: Achievement[];
|
||||
unlockAchievement: (id: string) => void;
|
||||
getUnlockedCount: () => number;
|
||||
getTotalCount: () => number;
|
||||
timeOnSite: number;
|
||||
checkAiAchievements: () => void;
|
||||
}
|
||||
|
||||
const defaultAchievements: Achievement[] = [
|
||||
@@ -214,6 +229,13 @@ export const AchievementsProvider = ({ children }: { children: ReactNode }) => {
|
||||
return achievements.length;
|
||||
}, [achievements]);
|
||||
|
||||
// Check AI message achievements
|
||||
const checkAiAchievements = useCallback(() => {
|
||||
const count = getAiMessageCount();
|
||||
if (count >= 5) unlockAchievement('ai_conversation');
|
||||
if (count >= 20) unlockAchievement('ai_long_chat');
|
||||
}, [unlockAchievement]);
|
||||
|
||||
// Save achievements
|
||||
useEffect(() => {
|
||||
localStorage.setItem('achievements', JSON.stringify(achievements));
|
||||
@@ -227,6 +249,7 @@ export const AchievementsProvider = ({ children }: { children: ReactNode }) => {
|
||||
getUnlockedCount,
|
||||
getTotalCount,
|
||||
timeOnSite,
|
||||
checkAiAchievements,
|
||||
}}
|
||||
>
|
||||
{children}
|
||||
|
||||
Reference in New Issue
Block a user