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; Salon de thé | Les Filles du Thé - Part 2
les-filles-du-the-infusion-orties

Une Fille du Thé à Vache Rouge !

Une fois n’est pas coutume de prendre la Vache plutôt que le cheval ou la voiture ! C’est dans la rue des 3 molettes du vieux Lille, au 29 que vous retrouverez De Rode Koe. Un endroit où vous trouverez tout ce qui est bon pour notre corps et notre esprit. L’adage : ”un esprit … Lire la suite Une Fille du Thé à Vache Rouge !

cafeine-coffee-l-enseigne

Caféine Coffee, un concept au service de nos papilles !

Bonjour à toutes et à tous, Pour ce dernier article de notre défi “2 thés dans 1 salon”, nous avons décidé de vous présenter Caféine Coffee, lieu incontournable si vous voulez régaler vos papilles à Lille dans le fameux quartier de Notre-Dame de la Treille (20 rue des trois mollettes). La petite histoire de Caféine Coffee… … Lire la suite Caféine Coffee, un concept au service de nos papilles !

gyokuro-kyoto-ippodo-filles-du-the

Souvenir d’un Gyokuro chez Ippodo à Kyoto par Juliette des Filles du Thé

Bonjour à tous, En 2015, à cette fabuleuse période des cerisiers en fleurs, j’ai (Juliette des Filles du Thé) eu la chance d’aller au Japon. Voici d’abord quelques photos prises lors de mon voyage : Magnifique ! oui c’est le mot ! Et il ne suffit pas pour décrire cette floraison incroyable ! =) Contrairement … Lire la suite Souvenir d’un Gyokuro chez Ippodo à Kyoto par Juliette des Filles du Thé

degustation-o-gout-the

Multiples dégustations O goût thé

Bonjour à tous, Voici la suite des aventures des reporters des Filles du Thé à Toulon ! Diane et Katy (nous dans cet article) font de multiple dégustations dans le salon O goût thé ! Sandrine la maitresse du lieu actualise régulièrement son catalogue des thés et accessoires en fonction de ses découvertes, ses voyages, … Lire la suite Multiples dégustations O goût thé

O goût thé à Toulon : Le home sweet home du salon de thé ! -FERME-

Bonjour à tous, Les Filles du Thé sont du Nord de la France, cependant Diane (amie de Juliette) et Katy (notre cousine) vivant à Toulon nous réclamaient la visite de salons de thé dans le sud de la France… Pas vraiment la porte à côté… Elles nous ont alors proposé de jouer les reporters pour … Lire la suite O goût thé à Toulon : Le home sweet home du salon de thé ! -FERME-