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; thé | Les Filles du Thé - Part 3
le-mate-vert-kraus-les-filles-du-the

Que boire le matin pour avoir la même forme qu’Antoine Griezmann ?

Bonjour à toutes et à tous, Et oui, même les Filles du Thé ont suivi l’Euro 2016 et nous ne sommes pas passées à côté de la “potion magique de Grizzy”. Qui n’a jamais rêvé d’avoir la forme de L’HOMME DE L’EURO 2016 ? Nous vous proposons de faire un petit voyage tonique : en … Lire la suite Que boire le matin pour avoir la même forme qu’Antoine Griezmann ?

matchocolat-les-filles-du-the

Le matchocolat

Voici une mousse bicolore sans gluten, sans lactose et naturelle. Rapide à réaliser, à faire la veille pour déguster le lendemain ! Temps de préparation : 20 min Temps de repos : comme nous, une nuit !! Pour réaliser 12 petites verrines ou 6 de taille moyenne, il vous faudra comme ingrédients : – 400 … Lire la suite Le matchocolat

la-cuisine-au-the-les-filles-du-the

Nouvelle rubrique : Les recettes simples et rapides des Filles du Thé !

Bonjour à toutes et à tous ! Les Filles du Thé s’installent en cuisine et vous proposent une nouvelle rubrique : les recettes des Filles du Thé ! Elles seront à notre image :  à base de thé, simples et rapides, sans gluten et les plus saines possible. L’une des Filles du Thé (Mylène) est … Lire la suite Nouvelle rubrique : Les recettes simples et rapides des Filles du Thé !

9/12 : Les Filles du Thé de retour à Bruxelles : Jade de Dong Ding & Rou gui

Bonjour !! Pour ce 9e volet de la saga “2 thés dans 1 salon”, les Filles du thé sont de retour à Bruxelles ! Il était deux fois à Bruxelles Vous vous demandez surement mais pourquoi nous faisons escale une nouvelle fois à Bruxelles ! Et si vous vous approchez, vous pouvez admirer les jolies … Lire la suite 9/12 : Les Filles du Thé de retour à Bruxelles : Jade de Dong Ding & Rou gui

atelier-1

Atelier 1: Comment bien choisir votre thé ?

Bonjour à toutes et à tous ! 6 personnes ont vécu l’expérience ! L’atelier,au cours duquel, vous apprenez à choisir votre couleur de thé à travers quelques dégustations.    L’occasion pour nos participants de découvrir des nouveautés gustatives. Merci à Damla, Theresa, Irina, Krystel, François et Jean-Yves de s’être prêtés au jeu de la dégustation. … Lire la suite Atelier 1: Comment bien choisir votre thé ?