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; articles | Les Filles du Thé - Part 6

Rooibos / Thé rouge : même les plus grands confondent ! – Michel Cymes, vous avez un message des Filles du thé

Cher Michel, Nous vous adressons ce message afin de lever le voile sur le Rooibos… Pour ceux qui ne vous connaissent pas, vous êtes médecin, chirurgien spécialisé dans l’ORL et surtout une personnalité très très très appréciée des français. Votre côté humain fait de vous quelqu’un qu’on a envie d’inviter pour un diner entre amis … Lire la suite Rooibos / Thé rouge : même les plus grands confondent ! – Michel Cymes, vous avez un message des Filles du thé

8/12 : Les Filles du Thé au Touquet, 2 infusions chez ABACA

Bonjour ! Pour cette nouvelle étape de notre challenge “2 Thés dans 1 Salon”, nous avons choisi de vous faire découvrir Le Touquet ! Pourquoi les Filles du Thé au Touquet ? Pour ceux qui ne connaitraient pas cette jolie station balnéaire appelée “Le Touquet-Paris-Plage”, sachez qu’elle se situe sur la côte d’Opale, dans le … Lire la suite 8/12 : Les Filles du Thé au Touquet, 2 infusions chez ABACA

7/12 : Les Filles du Thé à Roubaix – Thé à la menthe et Chaï chez This is London !

Bonjour à tous, Après avoir sauter une escale pour écrire “le petit guide pour vous mettre au thé et profiter de tous ses bienfaits”, nous avons repris notre route vers la découverte des salons de thé ! 7e escale : Roubaix ! Pourquoi les Filles du Thé à Roubaix ? Ville d’art et d’histoire de … Lire la suite 7/12 : Les Filles du Thé à Roubaix – Thé à la menthe et Chaï chez This is London !

6/12 : Les Filles du thé mea culpa : Le petit guide & le froid de l’hiver…

Bonjour à tous, Comme vous l’avez peut-être remarqué,il n’y a pas eu de 6e étape pour notre challenge “2 thés dans 1 salon”… Mais nous ne sommes pas tournées les pouces pour autant ! Nous avons créé : Le petit guide pour vous mettre au thé et profiter de tous ses bienfaits ! Vous pouvez … Lire la suite 6/12 : Les Filles du thé mea culpa : Le petit guide & le froid de l’hiver…