mirror of
https://framagit.org/framasoft/framadate/funky-framadate-front.git
synced 2023-08-25 13:53:14 +02:00
send email to owner, show if nothing is found
This commit is contained in:
parent
2c4be3e87a
commit
d05c77cb08
@ -9,11 +9,6 @@
|
||||
<app-header [appTitle]="appTitle" [appLogo]="appLogo"></app-header>
|
||||
<main [@routeAnimations]="prepareRoute(outlet)">
|
||||
<router-outlet #outlet></router-outlet>
|
||||
<div class="padded" *ngIf="devModeEnabled">
|
||||
<br />
|
||||
<mat-slide-toggle (change)="sidenav.toggle()" label="dev menu"> </mat-slide-toggle> menu
|
||||
développeur
|
||||
</div>
|
||||
</main>
|
||||
<app-footer></app-footer>
|
||||
<app-feedback></app-feedback>
|
||||
|
@ -39,21 +39,27 @@
|
||||
|
||||
<form (ngSubmit)="searchMyPolls()">
|
||||
<div class="search-others">
|
||||
<label for="search_others">
|
||||
<label for="search_email">
|
||||
Je cherche d'autres sondages, qui correspondent à mon mail :
|
||||
</label>
|
||||
<input
|
||||
type="email"
|
||||
name="search_email"
|
||||
id="search_others"
|
||||
id="search_email"
|
||||
placeholder="moi@example.com"
|
||||
[ngModel]="storageService.vote_stack.owner.email"
|
||||
[ngClass]="{
|
||||
'ng-invalid': nonexistent_email === storageService.vote_stack.owner.email
|
||||
}"
|
||||
[(ngModel)]="storageService.vote_stack.owner.email"
|
||||
/>
|
||||
<button
|
||||
type="submit"
|
||||
role="button"
|
||||
class="button is-outlined is-fullwidth is-info is-size-3"
|
||||
[disabled]="!storageService.vote_stack.owner.email.length"
|
||||
[disabled]="
|
||||
!storageService.vote_stack.owner.email.length ||
|
||||
nonexistent_email === storageService.vote_stack.owner.email
|
||||
"
|
||||
routerLink="user/polls"
|
||||
>
|
||||
<i class="fa fa-search"></i>
|
||||
|
@ -1,7 +1,9 @@
|
||||
import { Component } from '@angular/core';
|
||||
import { Component, Inject } from '@angular/core';
|
||||
import { environment } from '../../../../environments/environment';
|
||||
import { StorageService } from '../../services/storage.service';
|
||||
import { ApiService } from '../../services/api.service';
|
||||
import { ToastService } from '../../services/toast.service';
|
||||
import { DOCUMENT } from '@angular/common';
|
||||
|
||||
@Component({
|
||||
selector: 'app-home',
|
||||
@ -10,9 +12,34 @@ import { ApiService } from '../../services/api.service';
|
||||
})
|
||||
export class HomeComponent {
|
||||
public environment = environment;
|
||||
constructor(public storageService: StorageService, private api: ApiService) {}
|
||||
public nonexistent_email = '';
|
||||
constructor(
|
||||
@Inject(DOCUMENT) private document: any,
|
||||
public storageService: StorageService,
|
||||
public toastService: ToastService,
|
||||
private api: ApiService
|
||||
) {}
|
||||
|
||||
searchMyPolls() {
|
||||
this.api.sendEmailToUserOfItsPollsList(this.storageService.vote_stack.owner.email);
|
||||
const email = this.storageService.vote_stack.owner.email;
|
||||
this.api.findMyPollsByEmail(email).then(
|
||||
(resp) => {
|
||||
console.log('resp', resp);
|
||||
|
||||
if (resp) {
|
||||
if (resp.data && resp.data.mail_sent == '1') {
|
||||
this.toastService.display("C'est bon, vérifiez votre boite mail");
|
||||
}
|
||||
}
|
||||
},
|
||||
(error) => {
|
||||
if (error.response.status == '404') {
|
||||
this.toastService.display('Aucun sondage géré par cet email : ' + email);
|
||||
this.nonexistent_email = email;
|
||||
this.document.querySelector('#search_email').select();
|
||||
}
|
||||
console.log('error', error);
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -4,7 +4,7 @@ import { Poll } from './poll.model';
|
||||
export class Owner {
|
||||
constructor(
|
||||
public pseudo: string = 'pseudo',
|
||||
public email: string = 'example@example.com',
|
||||
public email: string = '_nonexistent_contact@cipherbliss.com',
|
||||
public polls: Poll[] = [],
|
||||
public role?: UserRole,
|
||||
public token?: string
|
||||
|
@ -31,7 +31,7 @@ export class ApiService {
|
||||
private baseHref: string;
|
||||
private static loaderService: LoaderService;
|
||||
|
||||
constructor(private http: HttpClient, private loaderService: LoaderService) {
|
||||
constructor(private http: HttpClient, private toastService: ToastService, private loaderService: LoaderService) {
|
||||
this.baseHref = apiBaseHref;
|
||||
|
||||
this.axiosInstance = axios.create({ baseURL: apiBaseHref });
|
||||
@ -232,28 +232,12 @@ export class ApiService {
|
||||
ApiService.handleError(error);
|
||||
}
|
||||
}
|
||||
|
||||
////////////
|
||||
// DELETE //
|
||||
|
||||
public async getPollsUrlsByUserEmail(email: string): Promise<Poll[]> {
|
||||
// If user is authenticated : retrieve polls & display directly in frontend.
|
||||
// TODO: Backend should handle this case. Actually the endpoint doesn't exist in backend.
|
||||
// Here, only the list of slugs is usefull. Maybe just handle the list of slugs.
|
||||
try {
|
||||
const response: AxiosResponse<Poll[]> = await this.axiosInstance.get<Poll[]>(
|
||||
`${this.usersEndpoint}/${email}${this.usersPollsEndpoint}`
|
||||
);
|
||||
return response?.data;
|
||||
} catch (error) {
|
||||
ApiService.handleError(error);
|
||||
}
|
||||
public findMyPollsByEmail(email: string): Promise<any> {
|
||||
return this.axiosInstance.get<any>(`${this.baseHref}/poll/owner/${email}`);
|
||||
}
|
||||
|
||||
////////////
|
||||
public async updateAnswer(slug: string, choiceLabel: string, pseudo: string, answer: Answer): Promise<string> {
|
||||
try {
|
||||
return await this.axiosInstance.patch(`${this.pollsEndpoint}/${slug}${this.answersEndpoint}`, {
|
||||
return await this.axiosInstance.patch(`${this.baseHref}/${slug}${this.answersEndpoint}`, {
|
||||
choiceLabel,
|
||||
pseudo,
|
||||
answer,
|
||||
@ -262,6 +246,10 @@ export class ApiService {
|
||||
ApiService.handleError(error);
|
||||
}
|
||||
}
|
||||
////////////
|
||||
// DELETE //
|
||||
|
||||
////////////
|
||||
|
||||
////////////
|
||||
public async deletePoll(slug: string): Promise<boolean> {
|
||||
@ -298,19 +286,4 @@ export class ApiService {
|
||||
/////////////////////
|
||||
// PRIVATE METHODS //
|
||||
/////////////////////
|
||||
|
||||
public async sendEmailToUserOfItsPollsList(email: string): Promise<void> {
|
||||
// if (this.loaderService.isLoading) {
|
||||
// return;
|
||||
// }
|
||||
// If user is not authenticated: the list of polls is send to user's email by the backend.
|
||||
try {
|
||||
// this.loaderService.setStatus(false);
|
||||
await this.axiosInstance.get<Poll[]>(
|
||||
`${this.usersEndpoint}/${email}${this.usersPollsEndpoint}${this.usersPollsSendEmailEndpoint}`
|
||||
);
|
||||
} catch (error) {
|
||||
ApiService.handleError(error);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -36,6 +36,7 @@ export const endpoints = {
|
||||
},
|
||||
},
|
||||
users: {
|
||||
find_my_polls: '/api/v1/poll/owner/:email/',
|
||||
name: '/users',
|
||||
polls: {
|
||||
name: '/polls',
|
||||
|
Loading…
Reference in New Issue
Block a user