pehapinek / nodesuba

6 stars 2 forks source link

treści postów #2

Open pehapinek opened 2 years ago

pehapinek commented 2 years ago

powiedzcie mi reactowcy, jak powinny być zwracane z backendu treści posta? trzeba pamiętać o tym, że musimy obsłużyć słowofiltry i linkowanie do innych postów. w nowoczesnych aplikacjach backend niby nie powinien serwować surowego HTML-a, dlatego czekam na propozycje

kotjea2137 commented 2 years ago

No to powinna być w bazie danych lista słowofiltrów gdzie masz kolumnę z nazwą słowofiltra, ciągiem znaków który ma być podmieniany, na co ma być podmieniany i string ze stylem css do niego I wtedy może na froncie sobie już stronka podmieniać treści ze słowofiltrami A co do linkowania do innych postów to relacja wiele do wielu z tabelą pośrednią i wtedy może być endpoint gdzie podajesz id posta a on zwraca wszystkie posty które są odpowiedzią na niego na przykład, a na froncie każdy element z postem może mieć id nadawane na podstawie id z bazy na przykład i wtedy można sobie klikać w odpowiedzi i będzie przenosić w odpowiednie miejsce tak jak to jest na każdym imageboardzie jaki kojarzę

pehapinek commented 2 years ago

no to linkowanie przemyślane co do słowofiltrów to też dobry pomysł, ale w realiach karaluszkowych kody słowofiltrów powinny być tajemnicą xD

kura-hen1337 commented 2 years ago

normalnie masz tabelę mapującą co działa jak słownik pobierasz tekst posta z bazy bez mapowania masz tam jakis middleware co mapuje słowo na jego odpowiednik w wordfiterze i zwraca ci dalej na front treść z już podmienionymi treściami

a post na #kura można porównać do zbioru grafów bo mogą występować cykle, gdyby nie było cykli to samo drzewo by starczyło chyba można zwrócić zwykły json tylko trzeba przekazywać metadane referencji do innych id postów

jest sobie post id 1 post 2 odpowiada na post 1, więc id 2 ma referencję do id 1 post 3 nie odpowiada nikomu post 4 odpowiada na 1 i 2

coś w tym stylu

data

i przykładowy json

[
    {
        "id": 1,
        "text": "sram psa jak sra",
        "references": [],
        "referenced_by": [2, 4]
    },
    {
        "id": 2,
        "text": "lorem ipsum",
        "references": [1],
        "referenced_by": [4]

    },
    {
        "id": 3,
        "text": "qqq",
        "references": [],
        "referenced_by": []
    },
    {
        "id": 4,
        "text": "huj",
        "references": [1, 2],
        "referenced_by": []
    }

]
pehapinek commented 2 years ago

@kura-hen1337 fajnie rozkminione anonek, myślimy podobnie co do tych słowofiltrów to kwestia leży w tym kiedy renderować html, bo jeżeli będziemy to robić na froncie, to każdy będzie mógł podejrzeć słowofiltry w źródle albo requestach, a to nasz święty graal zdaje się

kura-hen1337 commented 2 years ago

słowofiltr nigdy z backendu nie wychodzi jest to jakby transformacja danych inputem jest post napisany przez kogos i w takiej niezmienionej formie jest w bazie danych kiedy jest GET na strone z fredem to pobiera ten tekst z bazy, ale przez podaniem tego dalej dla fronta to jest najpierw transormowane w taki sposób, że podmieniane są słowa które są kluczem wordfiltra na wartości które są pod tym kluczem i tak przetworzony post jest zwracany na front zwykły middleware

kotjea2137 commented 2 years ago

Tylko że słowofiltry mają jeszcze CSS więc frontend musi też wiedzieć jakiego fragmenta postu ten CSS się tyczy

pehapinek commented 2 years ago

dobra, to chyba jednak będzie mapper przed zwróceniem, nawet jeśli będzie zawierał html a co z linkami do postów w treści posta? boję się że jak zwrócę <a hrefa jakiegoś to się frontom router reactowy wypierdoli nk mnie odpakuje w tej kwestii

kura-hen1337 commented 2 years ago

@kotjea2137 worfiltry tylko tekstowe typu studia -> robienie kupy z dupy do kibla będą po stronie serwera a wordfiltry z cssem po stronie frontu, też można tam jakiś mapper dać i nie będzie widać w requeście co an co zamienia dajmy np. #gimbo zamienia na <span class="gimbo" >xD</span> jakiś regex da radę bo chyba wszystkie cssowe zaczynają się od #

kotjea2137 commented 2 years ago

HTMLowe id elementu to protip, we fredzie to działa tak że po kliknięciu skacze do elementu o id które jest w linku, poza fredem jak się kliknie ten link to po prostu wchodzi we freda i skacze tak samo do tego element id Tak to wygląda na kara obecnie, jest link do posta a ten # to id posta właśnie, jak jest się we fredzie to tylko przeskakuje do posta w nim po kliknięciu tego linku a jak jest się poza fredem to ładuje tego freda i skacze do posta o tym id

A te HTMLowe id to front może nadawać dynamicznie po pobraniu treści postów na podstawie id posta w bazie

kotjea2137 commented 2 years ago

Nawet tutaj w komentarzach jak poklikasz to działa tak samo