mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-22 17:06:42 +02:00
Move inactive projects out of active workspace: - bauntown (community website) - maerchenzauber (AI story generation) - memoro (voice memo app) - news (news aggregation) - nutriphi (nutrition tracking) - reader (reading app) - uload (URL shortener) - wisekeep (AI wisdom extraction) Update CLAUDE.md documentation: - Add presi to active projects - Document archived projects section - Update workspace configuration Archived apps can be re-activated by moving back to apps/ 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
44 lines
1.3 KiB
TypeScript
44 lines
1.3 KiB
TypeScript
import { useState, useEffect, useCallback } from 'react';
|
|
import { Story } from '../types/Story';
|
|
import { useAuth } from '../src/contexts/AuthContext';
|
|
import { dataService } from '../src/utils/dataService';
|
|
|
|
export function useStories() {
|
|
const [allStories, setAllStories] = useState<Story[]>([]);
|
|
const [loading, setLoading] = useState(true);
|
|
const [error, setError] = useState<string | null>(null);
|
|
const { user, isAuthenticated } = useAuth();
|
|
|
|
const fetchStories = useCallback(async () => {
|
|
setLoading(true);
|
|
setError(null);
|
|
|
|
if (!isAuthenticated || !user) {
|
|
setLoading(false);
|
|
setError('User not authenticated');
|
|
return;
|
|
}
|
|
|
|
try {
|
|
const stories = await dataService.getStories(true); // Include archived stories
|
|
setAllStories(stories);
|
|
setLoading(false);
|
|
} catch (error) {
|
|
console.error('Error fetching stories:', error);
|
|
setError(error instanceof Error ? error.message : 'Unknown error');
|
|
setLoading(false);
|
|
}
|
|
}, [isAuthenticated, user]);
|
|
|
|
useEffect(() => {
|
|
fetchStories();
|
|
}, [fetchStories]);
|
|
|
|
const getStoryById = (id: string) => allStories.find((story) => story.id === id);
|
|
|
|
const refreshStories = useCallback(async () => {
|
|
await fetchStories();
|
|
}, [fetchStories]);
|
|
|
|
return { allStories, getStoryById, loading, error, refreshStories };
|
|
}
|