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:
+1
-71
@@ -16974,76 +16974,6 @@ a.city-card:hover {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.message-photo {
|
||||
background: transparent;
|
||||
border: 0;
|
||||
border-radius: 10px;
|
||||
cursor: zoom-in;
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.message-photo img {
|
||||
border-radius: 10px;
|
||||
display: block;
|
||||
max-height: 260px;
|
||||
max-width: 100%;
|
||||
object-fit: cover;
|
||||
transition: opacity 0.12s ease;
|
||||
}
|
||||
|
||||
.message-photo:hover img {
|
||||
opacity: 0.92;
|
||||
}
|
||||
|
||||
.message-photo:focus-visible {
|
||||
outline: 2px solid #17a764;
|
||||
outline-offset: 2px;
|
||||
}
|
||||
|
||||
.messages-composer-attachment {
|
||||
align-items: center;
|
||||
background: #f4f8fb;
|
||||
border: 1px solid #dbe6f0;
|
||||
border-radius: 10px;
|
||||
display: grid;
|
||||
gap: 10px;
|
||||
grid-template-columns: 40px minmax(0, 1fr) 28px;
|
||||
margin: 8px 0 0;
|
||||
padding: 6px 8px;
|
||||
}
|
||||
|
||||
.messages-composer-attachment img {
|
||||
border-radius: 8px;
|
||||
height: 40px;
|
||||
object-fit: cover;
|
||||
width: 40px;
|
||||
}
|
||||
|
||||
.messages-composer-attachment span {
|
||||
color: #33506e;
|
||||
font-size: 12px;
|
||||
font-weight: 700;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.messages-composer-attachment button {
|
||||
background: transparent;
|
||||
border: 0;
|
||||
border-radius: 6px;
|
||||
color: #5f7289;
|
||||
font-size: 20px;
|
||||
line-height: 1;
|
||||
min-height: 28px;
|
||||
}
|
||||
|
||||
.messages-composer-attachment button:hover {
|
||||
background: #e6eef7;
|
||||
}
|
||||
|
||||
.message-business-card {
|
||||
background:
|
||||
radial-gradient(120% 140% at 0% 0%, rgba(121, 186, 255, 0.18) 0%, rgba(121, 186, 255, 0) 52%),
|
||||
@@ -17222,7 +17152,7 @@ a.city-card:hover {
|
||||
border-top: 1px solid #e8eef5;
|
||||
display: grid;
|
||||
gap: 8px;
|
||||
grid-template-columns: 34px 78px minmax(0, 1fr) 34px;
|
||||
grid-template-columns: 78px minmax(0, 1fr) 34px;
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user