Wspominanie użytkownika w edytorze tekstowym

0

Hej, buduje edytor (cos w stylu tego co na tej stronie) i wlasnie jestem na etapie wtyczki do wspominania uzytkownikow, czyli po wcisnieciu @ powinna sie pokazac lista uzytkownikow. Mam dwie zagwozdki:

  1. Czy powinienem zaladowac wszystkich uzytkownkow (ich nazwy) z bazy przy pierwszym wcisnieciu @ i pozniej po prostu filtrowac po frazie wpisanej przez uzytkownika, czy jednak przy wcisnieciu dowolnego klawisza przez uzytkownika powinienem wysylac nowe zapytanie do bazy zeby zwrocilo wyniki zawierajace wpisana fraze? Czy jeszcze jakos inaczej?
  2. W jaki sposob odbywa sie powiadamianie uzytkownika ze ktos o nim wspomnial? To "wspomnienie" w samym HTMLu bedzie po prostu tagiem a z hrem prowadzacym do strony uzytkownika, ale co powinna sie zdarzyc w momencie klikniecia "opublikuj" zeby wszyscy wspomnieni uzytkownicy dostali powiadomienie? Pisze strone w NextJS jbc.
1
  1. Jak masz 1000 użytkowników to ładuj na raz, jak więcej to raczej bym ładował listę z opóźnieniem po wstępnym przefiltrowaniu. Dobrym pomysłem jest również priorytetyzowanie użytkowników, którzy wypowiadali się w wątku (jeżeli w Twoim projekcie jest w ogóle coś takiego jak wątek). Najczęściej właśnie te osoby będą wybierane z listy, w teorii więc możesz oszczędzić sobie zapytań właśnie w ten sposób. 4programmers pokazuje max 5 pozycji na liście. Możesz zastosować ulepszoną wersję tego - zapisuj sobie wszystkich użytkowników z wątku gdzieś w HTML i najpierw podpowiadaj i filtruj tylko tych "lokalnych", a jak nie ma lokalnych wyników po wpisaniu czegoś to dopiero pytaj bazę.
  • Dodatkowym usprawnieniem byłoby sortowanie wg ostatniej aktywności na stronie, również ci użytkownicy mają większe znaczenie, niż ktoś kto założył 10 lat temu konto i je porzucił, ale alfabetycznie lepiej wypada.
  1. Ciężko odpowiedzieć, kompletnie nie wiemy co tam masz. Generalnie przy publikacji wykryj wszystkie wzmianki i wszystkim wyślij powiadomienie.
0
Kokos12345 napisał(a):
  1. Czy powinienem zaladowac wszystkich uzytkownkow (ich nazwy) z bazy przy pierwszym wcisnieciu @ i pozniej po prostu filtrowac po frazie wpisanej przez uzytkownika, czy jednak przy wcisnieciu dowolnego klawisza przez uzytkownika powinienem wysylac nowe zapytanie do bazy zeby zwrocilo wyniki zawierajace wpisana fraze? Czy jeszcze jakos inaczej?
    Ja bym do tego podszedł zdroworozsądkowo, czyli: najprościej jak się da, YAGNI i brak mikrooptymalizacji.
  1. Krok pierwszy - napisz najprościej jak się da, wczytaj wszystkich userów od razu i zrób żeby "działało".
  2. Krok drugi - czy zauważasz jakieś problemy z performancem?
    • Nie? Problem solved
    • Tak - wtedy możesz myśleć jak naprawić konkretny problem który masz
Kokos12345 napisał(a):
  1. W jaki sposob odbywa sie powiadamianie uzytkownika ze ktos o nim wspomnial? To "wspomnienie" w samym HTMLu bedzie po prostu tagiem a z hrem prowadzacym do strony uzytkownika, ale co powinna sie zdarzyc w momencie klikniecia "opublikuj" zeby wszyscy wspomnieni uzytkownicy dostali powiadomienie? Pisze strone w NextJS jbc.

W coyote jest zrobione tak, że mamy parser markdowna, który renderuje markdown na HTML. Jest też wizytor, który pozwala przechodzić po AST przed renderem, i łapiemy tak w ten sposób wspomnienia w treści. Za każdym razem jak ktoś edytuje treść, to wysyłamy powiadomienie do wspomnianych użytkowników.

1 użytkowników online, w tym zalogowanych: 0, gości: 1