sex
This commit is contained in:
@@ -1,2 +1,3 @@
|
||||
[
|
||||
"welcome"
|
||||
]
|
||||
@@ -70,6 +70,8 @@ export default function AdminPage() {
|
||||
if (auth === 'true') {
|
||||
setIsAuthenticated(true);
|
||||
loadContent();
|
||||
const interval = setInterval(loadContent, 500);
|
||||
return () => clearInterval(interval);
|
||||
}
|
||||
}, []);
|
||||
|
||||
@@ -101,6 +103,7 @@ export default function AdminPage() {
|
||||
const handleLogout = () => {
|
||||
setIsAuthenticated(false);
|
||||
localStorage.removeItem('adminAuth');
|
||||
router.push('/');
|
||||
};
|
||||
|
||||
const handleCreatePost = async (e: React.FormEvent) => {
|
||||
@@ -315,19 +318,19 @@ export default function AdminPage() {
|
||||
.then((res) => {
|
||||
if (!res.ok) {
|
||||
res.json().then((data) => {
|
||||
setPinFeedback(data.error || 'Failed to update pinned posts');
|
||||
setPinFeedback(data.error || 'Fehler beim Aktualisieren der angehefteten Beiträge');
|
||||
});
|
||||
} else {
|
||||
setPinFeedback(
|
||||
newPinned.includes(slug)
|
||||
? 'Post pinned!'
|
||||
: 'Post unpinned!'
|
||||
? 'Beitrag angeheftet!'
|
||||
: 'Beitrag gelöst!'
|
||||
);
|
||||
setTimeout(() => setPinFeedback(null), 2000);
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
setPinFeedback('Failed to update pinned posts');
|
||||
setPinFeedback('Fehler beim Aktualisieren der angehefteten Beiträge');
|
||||
});
|
||||
return newPinned;
|
||||
});
|
||||
@@ -559,7 +562,7 @@ export default function AdminPage() {
|
||||
return [...pinnedPosts, ...unpinnedPosts].map((post) => (
|
||||
<div key={post.slug} className="border rounded-lg p-4 relative">
|
||||
{post.pinned && (
|
||||
<span title="Pinned" className="absolute top-2 right-2 text-2xl">📌</span>
|
||||
<span title="Angeheftet" className="absolute top-2 right-2 text-2xl">📌</span>
|
||||
)}
|
||||
<h3 className="text-xl font-semibold">{post.title}</h3>
|
||||
<p className="text-gray-600">{post.date}</p>
|
||||
@@ -632,7 +635,7 @@ export default function AdminPage() {
|
||||
>
|
||||
<div className="flex-1 text-left flex items-center gap-2">
|
||||
{pinned.includes(post.slug) && (
|
||||
<span title="Pinned" className="text-xl">📌</span>
|
||||
<span title="Angeheftet" className="text-xl">📌</span>
|
||||
)}
|
||||
<div>
|
||||
<div className="font-semibold">{post.title}</div>
|
||||
@@ -643,7 +646,7 @@ export default function AdminPage() {
|
||||
<button
|
||||
onClick={() => handlePin(post.slug)}
|
||||
className={`text-2xl focus:outline-none ${pinned.includes(post.slug) ? 'text-yellow-500' : 'text-gray-400 hover:text-yellow-500'}`}
|
||||
title={pinned.includes(post.slug) ? 'Unpin' : 'Pin'}
|
||||
title={pinned.includes(post.slug) ? 'Lösen' : 'Anheften'}
|
||||
>
|
||||
{pinned.includes(post.slug) ? '★' : '☆'}
|
||||
</button>
|
||||
|
||||
@@ -31,7 +31,7 @@ export default function Home() {
|
||||
|
||||
useEffect(() => {
|
||||
loadTree();
|
||||
const interval = setInterval(loadTree, 2000);
|
||||
const interval = setInterval(loadTree, 500);
|
||||
return () => clearInterval(interval);
|
||||
}, []);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user