import { useEffect, useState } from 'react';
import { initViewService, listViews, saveView, deleteView } from '@repo/view';
function ViewManager() {
const [views, setViews] = useState({});
const [loading, setLoading] = useState(true);
useEffect(() => {
// Initialize the view service
initViewService({
type: 'local',
storagePrefix: 'my-app'
});
// Load views
loadViews();
}, []);
const loadViews = async () => {
setLoading(true);
try {
const views = await listViews();
setViews(views);
} catch (error) {
console.error('Error loading views:', error);
} finally {
setLoading(false);
}
};
const handleSave = async (id, schema) => {
try {
await saveView(id, schema);
await loadViews();
} catch (error) {
console.error('Error saving view:', error);
}
};
const handleDelete = async (id) => {
try {
await deleteView(id);
await loadViews();
} catch (error) {
console.error('Error deleting view:', error);
}
};
if (loading) return <div>Loading views...</div>;
return (
<div>
<h1>View Manager</h1>
<button onClick={loadViews}>Refresh</button>
<ul>
{Object.entries(views).map(([id, schema]) => (
<li key={id}>
{id}
<button onClick={() => handleDelete(id)}>Delete</button>
</li>
))}
</ul>
</div>
);
}