import { __ } from '@wordpress/i18n'; import { speak } from '@wordpress/a11y'; import { SELECTORS } from './constants'; import API from './classes/api'; import ControlSync from './classes/control/control-sync'; import ControlStates from './classes/control/control-states'; import ControlMeta from './classes/control/control-meta'; import OptimizationDetails from './classes/optimization-details'; class OptimizationControl { constructor() { this.controlSyncRequestInProgress = false; this.init(); this.controlSync = new ControlSync(); } init() { this.initEventListeners(); setInterval( () => this.runStatusCheckLoop(), 5000 ); } async runStatusCheckLoop() { if ( this.controlSyncRequestInProgress ) { return; } this.controlSyncRequestInProgress = true; await this.controlSync.run(); this.controlSyncRequestInProgress = false; } initEventListeners() { document.addEventListener( 'click', ( e ) => this.handleOptimizeButtonClick( e ) ); document.addEventListener( 'click', ( e ) => this.handleReoptimizeButtonClick( e ) ); document.addEventListener( 'click', ( e ) => this.handleRestoreButtonClick( e ) ); document.addEventListener( 'click', ( e ) => this.handleOptimizationDetailsOpen( e ) ); document.addEventListener( 'click', ( e ) => this.handleOptimizationDetailsClick( e ) ); } async handleOptimizeButtonClick( e ) { if ( ! e.target.closest( `${ SELECTORS.optimizeButtonSelector }, ${ SELECTORS.tryAgainOptimizeButtonSelector }` ) ) { return; } speak( __( 'Optimization is in progress', 'image-optimization' ), 'assertive' ); const controlWrapper = e.target.closest( SELECTORS.controlWrapperSelector ); const states = new ControlStates( controlWrapper ); states.renderLoading( 'optimize' ); try { controlWrapper.dataset.isFrozen = true; await API.optimizeSingleImage( { imageId: new ControlMeta( controlWrapper ).getImageId(), reoptimize: false, } ); } catch ( error ) { states.renderError( error ); } } async handleReoptimizeButtonClick( e ) { if ( ! e.target.closest( `${ SELECTORS.reoptimizeButtonSelector }, ${ SELECTORS.tryAgainReoptimizeButtonSelector }` ) ) { return; } speak( __( 'Reoptimizing is in progress', 'image-optimization' ), 'assertive' ); const controlWrapper = e.target.closest( SELECTORS.controlWrapperSelector ); const states = new ControlStates( controlWrapper ); states.renderLoading( 'reoptimize' ); try { controlWrapper.dataset.isFrozen = true; await API.optimizeSingleImage( { imageId: new ControlMeta( controlWrapper ).getImageId(), reoptimize: true, } ); } catch ( error ) { states.renderError( error ); } } async handleRestoreButtonClick( e ) { if ( ! e.target.closest( `${ SELECTORS.restoreButtonSelector }, ${ SELECTORS.tryAgainRestoreButtonSelector }` ) ) { return; } speak( __( 'Image restoring is in progress', 'image-optimization' ), 'assertive' ); const controlWrapper = e.target.closest( SELECTORS.controlWrapperSelector ); const states = new ControlStates( controlWrapper ); states.renderLoading( 'restore' ); try { controlWrapper.dataset.isFrozen = true; await API.restoreSingleImage( new ControlMeta( controlWrapper ).getImageId() ); } catch ( error ) { states.renderError( error ); } } async handleOptimizationDetailsOpen( e ) { if ( ! e.target.closest( `${ SELECTORS.optimizationDetailsButtonSelector }` ) ) { return; } const controlWrapper = e.target.closest( SELECTORS.controlWrapperSelector ); const imageId = new ControlMeta( controlWrapper ).getImageId(); try { OptimizationDetails.initModal(); OptimizationDetails.renderLoading(); const details = await API.getOptimizationDetails( imageId ); OptimizationDetails.openModal(); OptimizationDetails.renderData( imageId, details ); } catch ( error ) { OptimizationDetails.openModal(); OptimizationDetails.renderError( error.message ); } } async handleOptimizationDetailsClick( e ) { if ( ! e.target.closest( `${ SELECTORS.optimizationDetailsOptimizeButtonSelector }` ) ) { return; } const imageId = parseInt( e.target.dataset?.imageId, 10 ); await API.optimizeSingleImage( { imageId } ); const controlWrapper = document.querySelector( `.image-optimization-control[data-image-optimization-image-id="${ imageId }"]` ); if ( controlWrapper ) { new ControlStates( controlWrapper ).renderLoading( 'optimize' ); } OptimizationDetails.closeModal(); } } export default OptimizationControl; Commentaires sur : Le Pu Er, le Thé Sombre anti gueule de bois et notre meilleur ami des lendemains de fêtes. https://les-filles-du-the.com/le-pu-er-le-the-sombre-anti-gueule-de-bois-et-notre-meilleur-ami-des-lendemains-de-fetes/?utm_source=rss&utm_medium=rss&utm_campaign=le-pu-er-le-the-sombre-anti-gueule-de-bois-et-notre-meilleur-ami-des-lendemains-de-fetes Apprenez facilement à choisir, préparer et déguster votre Thé ! Wed, 08 Feb 2017 09:17:13 +0000 hourly 1 https://wordpress.org/?v=5.7.20 Par : Juliette et Mylène https://les-filles-du-the.com/le-pu-er-le-the-sombre-anti-gueule-de-bois-et-notre-meilleur-ami-des-lendemains-de-fetes/#comment-546 Wed, 08 Feb 2017 09:17:13 +0000 http://les-filles-du-the.com/?p=1710#comment-546 En réponse à valerie 123degustez.

Bonjour Valérie

Un très grand merci pour ton commentaire !

Le Pu Er commence petit à petit à inonder le marché du bien être de ses bienfaits, pour le plus grand plaisir des gourmands et gourmets.

Nous proposons un Pu Er bio de la Marque « Les Filles du Thé » et Oui ça y est notre marque est déposée ! Pour le moment, nous avons le pu er cuit dont nous parlons dans la recette. Celui que l’on peut utiliser en infusion comme pour une utilisation culinaire.

Au plaisir de nous retrouver pour partager l’une de tes belles recettes.

]]>
Par : valerie 123degustez https://les-filles-du-the.com/le-pu-er-le-the-sombre-anti-gueule-de-bois-et-notre-meilleur-ami-des-lendemains-de-fetes/#comment-545 Sun, 05 Feb 2017 09:37:48 +0000 http://les-filles-du-the.com/?p=1710#comment-545 Bonjour Juliette et Mylène,

Merci pour ce podcast ! j’ai découvert le Pu er, dont je n’avais jamais entendu parler…
Cela me donne envie de le gouter . Où peut on en trouver svp ?
Très beau dimanche. valérie

]]>