fix add anonymous comment

This commit is contained in:
Tykayn 2022-02-14 14:37:42 +01:00 committed by tykayn
parent 9cbca21aeb
commit bbebaa4aae
5 changed files with 30 additions and 21 deletions

View File

@ -1,3 +1,7 @@
export interface CommentDTO {
pseudo: string;
text: string;
}
export class Comment { export class Comment {
constructor(public id: string, public text: string, public pseudo: string, public created_at: string) {} constructor(public id: string, public text: string, public pseudo: string, public created_at: string) {}

View File

@ -6,7 +6,7 @@ export class Stack {
public custom_url: string; public custom_url: string;
public pass_hash: string; public pass_hash: string;
public pseudo = 'Choque Nourrice'; public pseudo = 'Choque Nourrice';
public comment = 'Le beau commentaire de Choque Nourrice'; public comment = 'Le beau commentaire tout neuf';
public owner: Owner = new Owner(); public owner: Owner = new Owner();
public votes: Vote[] = []; public votes: Vote[] = [];
} }

View File

@ -9,6 +9,7 @@ import { Subscription } from 'rxjs';
import { ToastService } from './toast.service'; import { ToastService } from './toast.service';
import { LoaderService } from './loader.service'; import { LoaderService } from './loader.service';
import { Stack } from '../models/stack.model'; import { Stack } from '../models/stack.model';
import { Comment, CommentDTO } from '../models/comment.model';
const apiVersion = environment.api.versionToUse; const apiVersion = environment.api.versionToUse;
const currentApiRoutes = environment.api.version[apiVersion]; const currentApiRoutes = environment.api.version[apiVersion];
@ -140,7 +141,7 @@ export class ApiService {
} }
} }
public async createComment(slug: string, comment: string): Promise<string> { public async createComment(slug: string, comment: Comment | CommentDTO): Promise<string> {
try { try {
return await this.axiosInstance.post(`${this.baseHref}${this.commentsEndpoint}/${slug}`, comment); return await this.axiosInstance.post(`${this.baseHref}${this.commentsEndpoint}/${slug}`, comment);
} catch (error) { } catch (error) {
@ -293,11 +294,9 @@ export class ApiService {
} }
} }
public async deletePollComments(slug: string): Promise<boolean> { public async deletePollComments(admin_key: string): Promise<boolean> {
try { try {
const response: AxiosResponse = await this.axiosInstance.delete( const response: AxiosResponse = await this.axiosInstance.delete(`${this.pollsEndpoint}/${admin_key}`);
`${this.pollsEndpoint}/${slug}${this.commentsEndpoint}`
);
return response?.status === 204; return response?.status === 204;
} catch (error) { } catch (error) {
ApiService.handleError(error); ApiService.handleError(error);

View File

@ -23,6 +23,7 @@ import { Stack } from '../models/stack.model';
import { Vote } from '../models/vote.model'; import { Vote } from '../models/vote.model';
import { ClipboardService } from 'ngx-clipboard'; import { ClipboardService } from 'ngx-clipboard';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { CommentDTO } from '../models/comment.model';
@Injectable({ @Injectable({
providedIn: 'root', providedIn: 'root',
@ -283,6 +284,10 @@ export class PollService implements Resolve<Poll> {
} }
} }
/**
* load a poll data and update the current poll of PollService
* @param custom_url
*/
public async loadPollByCustomUrl(custom_url: string): Promise<void> { public async loadPollByCustomUrl(custom_url: string): Promise<void> {
if (custom_url) { if (custom_url) {
const poll: Poll | undefined = await this.apiService.getPollByCustomUrl(custom_url); const poll: Poll | undefined = await this.apiService.getPollByCustomUrl(custom_url);
@ -321,17 +326,6 @@ export class PollService implements Resolve<Poll> {
*/ */
public updateCurrentPoll(poll: Poll, displayToast = false): Poll { public updateCurrentPoll(poll: Poll, displayToast = false): Poll {
console.log('this.storageService.vote_stack.id', this.storageService.vote_stack.id); console.log('this.storageService.vote_stack.id', this.storageService.vote_stack.id);
// if (!this.storageService.vote_stack.id || this.storageService.vote_stack.custom_url !== poll.custom_url) {
// console.log('set base choices', poll.choices);
// // set the choices only the first time the poll loads, or if we changed the poll
// console.log(
// 'this.storageService.vote_stack.custom_url',
// this.storageService.vote_stack.custom_url
// );
// this.storageService.setChoicesForVoteStack(poll.choices);
// }
this._poll.next(poll); this._poll.next(poll);
console.log('next poll', poll); console.log('next poll', poll);
@ -602,9 +596,16 @@ export class PollService implements Resolve<Poll> {
this.toastService.display('Les participations des votants à ce sondage ont été supprimées.'); this.toastService.display('Les participations des votants à ce sondage ont été supprimées.');
} }
public async addComment(comment: string): Promise<void> { public async addComment(comment: CommentDTO): Promise<void> {
await this.apiService.createComment(this._poll.getValue().custom_url, comment); await this.apiService.createComment(this._poll.getValue().custom_url, comment).then(
this.toastService.display('Votre commentaire a été enregistré.'); (resp) => {
console.log('resp', resp);
this.loadPollByCustomUrl(this._poll.getValue().custom_url);
console.log('resp', resp);
this.toastService.display('Votre commentaire a été enregistré.');
},
(err) => this.apiService.ousideHandleError(err)
);
} }
public async deleteComments(): Promise<void> { public async deleteComments(): Promise<void> {

View File

@ -41,8 +41,13 @@ export class CommentsComponent {
addComment() { addComment() {
this.api this.api
.createComment(this.pollService._poll.getValue().custom_url, this.storageService.vote_stack.comment) .createComment(this.pollService._poll.getValue().custom_url, {
pseudo: this.storageService.vote_stack.pseudo,
text: this.storageService.vote_stack.comment,
})
.then((resp) => { .then((resp) => {
console.log('resp', resp);
// this.poll.comments.push()
this.toastService.display('commentaire ajouté'); this.toastService.display('commentaire ajouté');
}) })
.catch((error) => { .catch((error) => {