Skip to content

Feature/8044/display news likes and details for admins on eco news page #3563

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

3 changes: 2 additions & 1 deletion src/app/greencity/modules/comments/mocks/comments-mock.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import { CommentsDTO } from '../models/comments-model';

export const MOCK_COMMENTS_DTO: CommentsDTO = {
isDisliked: false, isLiked: false,
isDisliked: false,
isLiked: false,
author: {
id: 0,
name: 'fake_author',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import { CreateEcoEventAction, EditEcoEventAction } from 'src/app/store/actions/
import { EventStoreService } from '../../services/event-store.service';
import { EventsService } from '../../services/events.service';
import { EventDetailsComponent } from './event-details.component';
import { EventDto as EventDTO } from '../../models/events.interface';
import { EventDto as EventDTO } from '../../models/events.interface';
import { MatSnackBarService } from '@global-service/mat-snack-bar/mat-snack-bar.service';

export function mockPipe(options: Pipe): Pipe {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,6 @@ import { EventAttender, EventDto, EventForm, PlaceOnline } from '../../models/ev
import { EventStoreService } from '../../services/event-store.service';
import { MatSnackBarService } from '@global-service/mat-snack-bar/mat-snack-bar.service';



@Component({
selector: 'app-event-details',
templateUrl: './event-details.component.html',
Expand Down
4 changes: 2 additions & 2 deletions src/app/greencity/modules/events/models/events.interface.ts
Original file line number Diff line number Diff line change
Expand Up @@ -155,15 +155,15 @@ export interface EventResponse {
isRelevant: boolean;
likes: number;
dislikes: number;
isLiked: boolean;
isDisliked: boolean;
countComments: number;
eventRate: number;
open: boolean;
isSubscribed: boolean;
isFavorite: boolean;
isOrganizedByFriend: boolean;
currentUserGrade?: number | null;
isLiked: boolean;
isDisliked: boolean;
}

export type EventListResponse = Omit<EventResponse, 'additionalImages' | 'description'>;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ export class EventsCommentsService implements CommentsService {
postLike(parentCommentId: number): Observable<void> {
return this.http.post<void>(`${this.backEnd}events/comments/like/${parentCommentId}`, {});
}

postDislike(commentId: number): Observable<void> {
return this.http.post<void>(`${this.backEnd}events/comments/dislike/${commentId}`, {});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,6 @@ export class EventsService implements OnDestroy {
})
};

//TODO:
if (isUpdating) {
const currentImages = (images || []).filter((value) => !value.file).map((value) => value.url);
sendEventDto = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,6 @@ export class HabitCommentsService implements CommentsService {
getCommentsCount(habitId: number): Observable<number> {
return this.http.get<number>(`${this.backEnd}habits/${habitId}/comments/count`);
}
postDislike(parentCommentId: number): Observable<void> {
return this.http.post<void>(`${this.backEnd}habits/comments/dislike?commentId=${parentCommentId}`, {});
}

getActiveRepliesByPage(parentCommentId: number, page: number, size: number): Observable<CommentsModel> {
return this.http.get<CommentsModel>(`${this.backEnd}habits/comments/${parentCommentId}/replies/active?page=${page}&size=${size}`);
Expand All @@ -52,7 +49,9 @@ export class HabitCommentsService implements CommentsService {
postLike(parentCommentId: number): Observable<void> {
return this.http.post<void>(`${this.backEnd}habits/comments/like?commentId=${parentCommentId}`, {});
}

postDislike(parentCommentId: number): Observable<void> {
return this.http.post<void>(`${this.backEnd}habits/comments/dislike?commentId=${parentCommentId}`, {});
}
getCommentLikes(parentCommentId: number): Observable<number> {
return this.http.get<number>(`${this.backEnd}habits/comments/${parentCommentId}/likes/count`);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,12 @@
transform: rotate(180deg);
}

.additional-info {
<<<<<<< HEAD #like,
#dislike {
border: none;
}

=======>>>>>>>dev .additional-info {
padding: 16px;
display: flex;
align-items: center;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -335,7 +335,37 @@ export class EventsListItemComponent implements OnInit, OnDestroy {
return this.eventService.getFormattedAddressEventsList(this.address);
}
}
likePost(): void {
this.eventService.likeEvent(this.event.id).subscribe(
(response) => {
this.event.isLiked = true;
this.event.likes += 1;
this.event.isDisliked = false;
},
(error) => {
console.error('Error in likeEvent:', error);
}
);
}

dislikePost() {
if (!this.event.isDisliked) {
this.eventService.dislikeEvent(this.event.id).subscribe(
() => {
this.event.isDisliked = true;
if (this.event.isLiked) {
this.event.isLiked = false;
this.event.likes--;
}
this.event.dislikes++;
this.dislikeStatusChange.emit(this.event);
},
() => {
this.snackBar.openSnackBar('error');
}
);
}
}
changeFavouriteStatus(event?: Event) {
event?.stopPropagation();
if (!this.isRegistered) {
Expand Down Expand Up @@ -380,39 +410,6 @@ export class EventsListItemComponent implements OnInit, OnDestroy {
}
}

likePost(): void {
console.log('Before like click, event state:', this.event);
this.eventService.likeEvent(this.event.id).subscribe(
(response) => {
this.event.isLiked = true;
this.event.likes += 1;
this.event.isDisliked = false;
},
(error) => {
console.error('Error in likeEvent:', error);
}
);
}

dislikePost() {
if (!this.event.isDisliked) {
this.eventService.dislikeEvent(this.event.id).subscribe(
() => {
this.event.isDisliked = true;
if (this.event.isLiked) {
this.event.isLiked = false;
this.event.likes--;
}
this.event.dislikes++;
this.dislikeStatusChange.emit(this.event);
},
() => {
this.snackBar.openSnackBar('error');
}
);
}
}

openAuthModalWindow(page: string): void {
this.dialogRef = this.dialog.open(AuthModalComponent, {
hasBackdrop: true,
Expand Down
94 changes: 46 additions & 48 deletions src/app/shared/services/localstorage/local-storage.service.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,54 +10,52 @@ describe('LocalStorageService', () => {
let service: LocalStorageService;
const ACCESS_TOKEN = 'accessToken';

const mockEvent: EventResponse = {
isDisliked: false, isLiked: false,
description: 'tralalalal',
additionalImages: [],
creationDate: '2022-05-31',
tags: [
{ id: 1, nameUa: 'Соціальний', nameEn: 'Social' },
{ id: 13, nameUa: 'Екологічний', nameEn: 'Environmental' },
{ id: 14, nameUa: 'Економічний', nameEn: 'Economic' }
],
dates: [
{
coordinates: {
latitude: 0,
longitude: 0,
cityEn: 'Lviv',
cityUa: 'Львів',
countryEn: 'Ukraine',
countryUa: 'Україна',
houseNumber: '55',
regionEn: 'Lvivska oblast',
regionUa: 'Львівська область',
streetEn: 'Svobody Ave',
streetUa: 'Свободи',
formattedAddressEn: 'Svobody Ave, 55, Lviv, Lvivska oblast, Ukraine',
formattedAddressUa: 'Свободи, 55, Львів, Львівська область, Україна'
},
id: null,
event: null,
startDate: '2022-05-31T00:00:00+03:00',
finishDate: '2022-05-31T23:59:00+03:00',
onlineLink: null
}
],
id: 307,
organizer: { organizerRating: 0, id: 5, name: 'Mykola Kovalushun' },
title: 'dddddddd',
titleImage: 'https://-fc27f19b10e0apl',
isSubscribed: true,
isFavorite: false,
isRelevant: true,
open: true,
likes: 5,
dislikes: 2,
countComments: 7,
isOrganizedByFriend: false,
eventRate: 0
};
// const mockEvent: EventResponse = {
// additionalImages: ['image1.jpg', 'image2.jpg'],
// creationDate: '2022-05-31',
// dates: [
// {
// coordinates: {
// latitude: 0,
// longitude: 0,
// cityEn: 'cityUa',
// cityUa: 'cityEn',
// countryEn: 'Ukraine',
// countryUa: 'Україна',
// houseNumber: '55',
// regionEn: 'Lvivska oblast',
// regionUa: 'Львівська область',
// streetEn: 'Svobody Ave',
// streetUa: 'Свободи',
// formattedAddressEn: 'Свободи, 55, Львів, Львівська область, Україна',
// formattedAddressUa: 'Svobody Ave, 55, Lviv, Lvivska oblast, Ukraine'
// },
// event: null,
// finishDate: 'finishDate',
// id: null,
// onlineLink: 'link',
// startDate: '2022-02-01T00:00:00Z'
// }
// ],
// description: 'Test event description',
// id: 123,
// open: true,
// organizer: {
// id: 456,
// name: 'Test organizer',
// organizerRating: 3
// },
// tags: [{ id: 789, nameUa: 'Test tag UA', nameEn: 'Test tag EN' }],
// title: 'Test event title',
// titleImage: 'testImage.jpg',
// isSubscribed: true,
// isFavorite: false,
// countComments: 5,
// likes: 8,
// isRelevant: true,
// isOrganizedByFriend: false,
// eventRate: 0
// };

const factMock: FactOfTheDay = {
id: 1,
Expand Down
27 changes: 14 additions & 13 deletions src/assets/mocks/events/mock-events.ts
Original file line number Diff line number Diff line change
Expand Up @@ -180,11 +180,11 @@ export const mockEvent: EventResponseDto = {
}
],
title: 'title',
likes: 8,
dislikes: 10,
titleImage: 'image title',
isSubscribed: true,
isFavorite: false,
likes: 8,
dislikes: 2,
countComments: 9,
isRelevant: true,
isOrganizedByFriend: false,
Expand Down Expand Up @@ -243,13 +243,13 @@ export const mockFavouriteEvents: EventResponse[] = [
isSubscribed: true,
isFavorite: true,
likes: 8,
dislikes: 2,
dislikes: 10,
countComments: 9,
isRelevant: true,
isOrganizedByFriend: false,
eventRate: 0,
isDisliked: false,
isLiked: false
isLiked: false,
isDisliked: false
},
{
additionalImages: [],
Expand Down Expand Up @@ -298,13 +298,13 @@ export const mockFavouriteEvents: EventResponse[] = [
isSubscribed: true,
isFavorite: true,
likes: 8,
dislikes: 1,
dislikes: 5,
countComments: 9,
isRelevant: true,
isOrganizedByFriend: false,
eventRate: 0,
isDisliked: false,
isLiked: false
isLiked: false,
isDisliked: false
}
];

Expand Down Expand Up @@ -360,16 +360,16 @@ export const mockEventResponse: EventResponseDto = {
titleImage: 'http://example.com/image.jpg',
additionalImages: ['http://example.com/image1.jpg', 'http://example.com/image2.jpg'],
isRelevant: true,
likes: 123,
dislikes: 10,
likes: 8,
dislikes: 5,
countComments: 45,
eventRate: 4.5,
open: true,
isSubscribed: false,
isFavorite: true,
isOrganizedByFriend: false,
isDisliked: false,
isLiked: false
isLiked: false,
isDisliked: false
}
],
totalElements: 1,
Expand Down Expand Up @@ -479,6 +479,7 @@ export const eventStateMock = {
};

export const EVENT_MOCK: EventResponse = {
dislikes: 0,
isDisliked: false,
isLiked: false,
description: 'tralalalal',
Expand Down Expand Up @@ -522,7 +523,7 @@ export const EVENT_MOCK: EventResponse = {
isRelevant: true,
open: true,
likes: 5,
dislikes: 1,

countComments: 7,
isOrganizedByFriend: false,
eventRate: 0
Expand Down
Loading