import { Injectable } from '@angular/core'; import { v4 as uuidv4 } from 'uuid'; @Injectable({ providedIn: 'root', }) export class PollUtilsService { public makeUuid(): string { // TODO: how to be sure the uuid generated in front is available in backend ? // It could be a better way to generate uuids in backend. return uuidv4(); } /** * make a uniq slug for the current poll creation * @param str */ public makeSlug(config: PollConfig): string { let str = ''; str = config.creationDate.getFullYear() + '_' + (config.creationDate.getMonth() + 1) + '_' + config.creationDate.getDate() + '_' + config.myName + '_' + config.title; str = str.replace(/^\s+|\s+$/g, ''); // trim str = str.toLowerCase(); // remove accents, swap ñ for n, etc const from = 'àáäâèéëêìíïîòóöôùúüûñç·/_,:;'; const to = 'aaaaeeeeiiiioooouuuunc------'; for (let i = 0, l = from.length; i < l; i++) { str = str.replace(new RegExp(from.charAt(i), 'g'), to.charAt(i)); } str = str .replace(/[^a-z0-9 -]/g, '') // remove invalid chars .replace(/\s+/g, '-') // collapse whitespace and replace by - .replace(/-+/g, '-'); // collapse dashes return str; } }