Dodaj prawdziwe wiadomosci miedzy uzytkownikami o ogloszeniach
Deploy Polska Lokalnie / deploy (push) Successful in 12s
Deploy Polska Lokalnie / deploy (push) Successful in 12s
Dotad rozmowy z kupujacymi istnialy tylko w przegladarce nadawcy: nic nie trafialo na serwer, "odczytano" i odpowiedz sprzedajacego byly symulowane timerem. Wzorem Gieldy Komunalnej: Backend (/api/conversations): - Conversation: jeden watek na pare (ogloszenie, kupujacy), sprzedajacy to wlasciciel ogloszenia; tytul ogloszenia zapisany na wypadek jego usuniecia. Wiadomosci w istniejacej tabeli messages z nowa kolumna conversation_id, wiec rozmowa z administracja (conversation_id = null) dziala bez zmian. - start/list/get/reply, blokada (UserBlock, w obu kierunkach), ukrycie rozmowy u siebie (nowa wiadomosc przywraca ja obu stronom). Dostep tylko dla stron rozmowy, filtr niedozwolonych slow jak w reszcie serwisu. - Po zatwierdzeniu transakcji odbiorca dostaje powiadomienie w serwisie i - jesli ma wlaczone powiadomienia o wiadomosciach - e-mail (w tle). - /api/messages/unread-count wlicza rozmowy o ogloszeniach. - Zgloszenie uzytkownika z rozmowy: zgloszonego, ogloszenie i tresc rozmowy serwer bierze z bazy, nie z przegladarki. Frontend: - Adresy /wiadomosci/:conversationId, /wiadomosci/administracja i /wiadomosci/nowa/:listingId zamiast rozmowy w location.state. - Lista rozmow odswiezana co 30 s, otwarta rozmowa co 4 s. - Zdjecia w wiadomosciach usuniete - serwer ich nie przyjmuje (rozmowa z administracja i tak je gubila). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -45,6 +45,10 @@ export const ROUTES = {
|
||||
notifications: '/powiadomienia',
|
||||
favorites: '/ulubione',
|
||||
messages: '/wiadomosci',
|
||||
// Rozmowa o ogloszeniu (numer z API) albo "administracja" - rozmowa z obsluga serwisu.
|
||||
messagesConversation: '/wiadomosci/:conversationId',
|
||||
// Nowa rozmowa z ogloszenia - watek powstaje na serwerze dopiero z pierwsza wiadomoscia.
|
||||
messagesNew: '/wiadomosci/nowa/:listingId',
|
||||
admin: '/admin',
|
||||
listingDetail: '/oferta/:id',
|
||||
publicProfile: '/profil/:id',
|
||||
@@ -96,6 +100,17 @@ export function publicProfilePath(id: number): string {
|
||||
return `/profil/${id}`;
|
||||
}
|
||||
|
||||
// Identyfikator rozmowy z obsluga serwisu w adresie /wiadomosci/:conversationId.
|
||||
export const ADMIN_CONVERSATION_SLUG = 'administracja';
|
||||
|
||||
export function conversationPath(id: number | typeof ADMIN_CONVERSATION_SLUG): string {
|
||||
return `/wiadomosci/${id}`;
|
||||
}
|
||||
|
||||
export function newConversationPath(listingId: number): string {
|
||||
return `/wiadomosci/nowa/${listingId}`;
|
||||
}
|
||||
|
||||
// Dedykowana strona edycji wlasnego ogloszenia.
|
||||
export function listingEditPath(id: number): string {
|
||||
return `/edytuj-ogloszenie/${id}`;
|
||||
@@ -217,6 +232,8 @@ export const PROTECTED_PATHS: string[] = [
|
||||
ROUTES.notifications,
|
||||
ROUTES.favorites,
|
||||
ROUTES.messages,
|
||||
ROUTES.messagesConversation,
|
||||
ROUTES.messagesNew,
|
||||
ROUTES.comparison,
|
||||
ROUTES.guideAdd,
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user