chore: auto-commit (23 archivos)
- app.md - backend/auth.go - backend/db.go - backend/dist/assets/index-CPqSy0gZ.js - backend/dist/index.html - backend/handlers.go - backend/main.go - frontend/src/App.tsx - frontend/src/api.ts - frontend/src/components/KanbanCard.tsx - ... Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
+25
-11
@@ -68,6 +68,7 @@ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
||||
import * as api from "./api";
|
||||
import { useAuth } from "./auth";
|
||||
import { CardForm } from "./components/CardForm";
|
||||
import { CardEditPanel } from "./components/CardEditPanel";
|
||||
import { ChatPanel } from "./components/ChatPanel";
|
||||
import { CalendarView } from "./components/CalendarView";
|
||||
import { Dashboard } from "./components/Dashboard";
|
||||
@@ -238,6 +239,13 @@ export function App() {
|
||||
return () => clearInterval(t);
|
||||
}, []);
|
||||
|
||||
useEffect(() => {
|
||||
const t = setInterval(() => {
|
||||
reload();
|
||||
}, 30000);
|
||||
return () => clearInterval(t);
|
||||
}, [reload]);
|
||||
|
||||
useEffect(() => {
|
||||
if (!activeSticker) return;
|
||||
const onKey = (e: KeyboardEvent) => {
|
||||
@@ -566,20 +574,14 @@ export function App() {
|
||||
const openEditCard = useCallback((card: Card) => {
|
||||
const id = modals.open({
|
||||
title: "Editar tarjeta",
|
||||
size: "md",
|
||||
size: "85%",
|
||||
children: (
|
||||
<CardForm
|
||||
<CardEditPanel
|
||||
card={card}
|
||||
users={users}
|
||||
currentUserId={auth.user?.id}
|
||||
requesterOptions={requesterOptions}
|
||||
tagOptions={tagOptions}
|
||||
initial={{
|
||||
requester: card.requester,
|
||||
title: card.title,
|
||||
description: card.description,
|
||||
assignee_id: card.assignee_id,
|
||||
tags: card.tags || [],
|
||||
}}
|
||||
submitLabel="Guardar"
|
||||
onCancel={() => modals.close(id)}
|
||||
onSubmit={async (v) => {
|
||||
try {
|
||||
@@ -601,7 +603,17 @@ export function App() {
|
||||
/>
|
||||
),
|
||||
});
|
||||
}, [reload, users, requesterOptions, tagOptions]);
|
||||
}, [reload, users, auth.user, requesterOptions, tagOptions]);
|
||||
|
||||
const handleDuplicateCard = useCallback(async (cardId: string) => {
|
||||
try {
|
||||
const dup = await api.duplicateCard(cardId);
|
||||
await reload();
|
||||
notifications.show({ color: "teal", message: `Duplicada: ${dup.title}` });
|
||||
} catch (e) {
|
||||
notifications.show({ color: "red", message: (e as Error).message });
|
||||
}
|
||||
}, [reload]);
|
||||
|
||||
const handleSetRequester = useCallback(async (id: string, requester: string) => {
|
||||
setBoard((prev) => {
|
||||
@@ -986,6 +998,7 @@ export function App() {
|
||||
onToggleDone={handleToggleDone}
|
||||
onEditCard={openEditCard}
|
||||
onDeleteCard={handleDeleteCard}
|
||||
onDuplicateCard={handleDuplicateCard}
|
||||
onChangeCardColor={handleChangeCardColor}
|
||||
onShowHistory={handleShowHistory}
|
||||
onToggleCardLock={handleToggleCardLock}
|
||||
@@ -1253,6 +1266,7 @@ export function App() {
|
||||
onToggleDone={handleToggleDone}
|
||||
onEditCard={openEditCard}
|
||||
onDeleteCard={handleDeleteCard}
|
||||
onDuplicateCard={handleDuplicateCard}
|
||||
onChangeCardColor={handleChangeCardColor}
|
||||
onShowHistory={handleShowHistory}
|
||||
onToggleCardLock={handleToggleCardLock}
|
||||
|
||||
Reference in New Issue
Block a user