data-students / apunts-dades

https://apunts-dades.cat
12 stars 0 forks source link

feature: poder editar els teus posts #52

Open marcfranquesa opened 5 months ago

PauMatas commented 5 months ago

Amb les preguntes ho veig 100% amb els posts necessito que em venguis més perquè és important. Rollo la descripció d'uns apunts canvia al llarg del temps?

marcfranquesa commented 5 months ago

-> typos -> poder anar afegint coses al llarg del quadri -> canviar/modificar/afegir alguna cosa per algun comentari fet

Tot depen de la implicació de la gent

PauMatas commented 5 months ago

Makes sense for me, si va de la ma de la issue #51 endavant

puigde commented 5 months ago

M'agrada #51, tema editar: volem mantenir edits vells a la db?

puigde commented 5 months ago
marcfranquesa commented 5 months ago

Aviam podem començar poc a poc, e.g. només canviar el títol al principi i afegir opció d'eliminar post, podem anar afegint features. Lo de guardar edits vells o deixo a vostre elecció

puigde commented 5 months ago

Per eliminar el post s'hauria de mirar com eliminar el fitxer de uploadthing no només de la db

puigde commented 5 months ago

jo de moment prioritzaria esforços a altres issues

PauMatas commented 5 months ago

Per eliminar el post s'hauria de mirar com eliminar el fitxer de uploadthing no només de la db

Sip, hauriem de ser capaços de fer una espècie de cascade... Tot i així no ha de ser dificil eliminar contingut de UploadThing.

PauMatas commented 5 months ago

Estarà complicat... No se ben bé perquè, quan faig servir getAuthSession al Post.tsx (on ja de per si es fa servir el "@prisma/client"que és server-only) em dona el següent error:

Error: 
  × You're importing a component that needs server-only. That only works in a Server Component which is not supported in the pages/ directory. Read more: https://nextjs.org/docs/getting-started/
  │ react-essentials#server-components
  │ 
  │ 
   ╭─[/Users/pau_matas/Desktop/apunts-dades/src/lib/db.ts:1:1]
 1 │ import { PrismaClient } from "@prisma/client"
 2 │ import "server-only"
   · ────────────────────
 3 │ 
 4 │ declare global {
 5 │   // eslint-disable-next-line no-var, no-unused-vars
   ╰────

Import trace for requested module:
./src/lib/db.ts
./src/lib/auth.ts
./src/components/PostContentEditable.tsx
./src/components/Post.tsx
./src/components/PostFeed.tsx

Hauriem de mirar com ho podem sortejar o sino caldrà habilitar el poder editar un post des d'una altra ruta (rarillo)

puigde commented 4 months ago

Perquè ha de ser server only? no recordo si era un hard requisite o simplement era algo per fer-ho mes eficient a nivell de rendering...

PauMatas commented 4 months ago

Per seguretat prisma no permet tocar BD des de client side per a evitar problemes d'atacs i històries

puigde commented 4 months ago

mmmmmm llavors perquè hem de "tocar la db" des de Post.tsx en comptes de tirar una request?

puigde commented 4 months ago

Segurament em falta una mica de context però el naive workflow que havia pensat és:

  1. Botó Edit Post que permet modificar el text del post (si de mom fem només descripció).
  2. Boto Save Edit que envia una request a la db per modificar el camp de text amb el nou contingut que ha posat l'usuari/à. Idealment estaria bé tenir una columna adicional tipo json amb data: text per a l'historial de edits.
puigde commented 4 months ago

Nice to have: una marca que posi "Edited" amb timestamp.

PauMatas commented 4 months ago

Segurament em falta una mica de context però el naive workflow que havia pensat és:

  1. Botó Edit Post que permet modificar el text del post (si de mom fem només descripció).
  2. Boto Save Edit que envia una request a la db per modificar el camp de text amb el nou contingut que ha posat l'usuari/à. Idealment estaria bé tenir una columna adicional tipo json amb data: text per a l'historial de edits.

Jo havia pensat el mateix, però ho havia pensat en el mateix Post.tsx, però penso que ho haurem de fer que el page.tsx pertinent alterni entre Post i EditPost o simplement fer que el botó et redirigeixi a una altre pàgina