Merge branch 'master' into production

This commit is contained in:
HF 2022-04-01 00:13:38 +02:00
commit ff8ea6ae90
3 changed files with 74 additions and 34 deletions

View File

@ -7,6 +7,7 @@ import React, { useState, useEffect } from 'react';
import { useSelector, shallowEqual } from 'react-redux';
import { t } from 'ttag';
import useInterval from './hooks/useInterval';
import { getToday, dateToString } from '../core/utils';
const keptState = {
@ -277,6 +278,12 @@ function Modtools() {
}
}, []);
useInterval(() => {
if (userlvl > 0) {
getCleanerStats((stats) => setCleanerStats(stats));
}
}, 10000);
const cleanerStatusString = (!cleanerstats.running)
? t`Status: Not running`
// eslint-disable-next-line max-len
@ -625,6 +632,14 @@ function Modtools() {
tlccoords,
brccoords,
(ret) => {
setCleanerStats({
running: true,
percent: 'N/A',
method: cleanAction,
tl: tlccoords,
br: brccoords,
canvasId: selectedCanvas,
});
setSubmitting(false);
setResp(ret);
},

View File

@ -0,0 +1,24 @@
import { useEffect, useRef } from 'react';
function useInterval(callback, delay) {
const savedCallback = useRef();
// Remember the latest callback.
useEffect(() => {
savedCallback.current = callback;
}, [callback]);
// Set up the interval.
// eslint-disable-next-line consistent-return
useEffect(() => {
function tick() {
savedCallback.current();
}
if (delay !== null) {
const id = setInterval(tick, delay);
return () => clearInterval(id);
}
}, [delay]);
}
export default useInterval;

View File

@ -28,24 +28,24 @@ const METHODS = {
* of chunk area
*/
spare: (xc, yc, clrIgnore, canvasCleaner) => {
let pxl = canvasCleaner.getPixelInChunkArea(xc, yc);
if (pxl === null || pxl < clrIgnore) {
return null;
}
let rplPxl = null;
for (let u = -1; u <= 1; u += 1) {
for (let v = -1; v <= 1; v += 1) {
const pxl = canvasCleaner.getPixelInChunkArea(xc + u, yc + v);
if (pxl === null) {
pxl = canvasCleaner.getPixelInChunkArea(xc + u, yc + v);
if (pxl === null
|| (u === 0 && v === 0)
) {
continue;
}
if (u === 0 && v === 0) {
if (pxl < clrIgnore) {
return null;
}
} else {
if (pxl >= clrIgnore) {
return null;
}
if (rplPxl === null) {
rplPxl = pxl;
}
if (pxl >= clrIgnore) {
return null;
}
if (rplPxl === null) {
rplPxl = pxl;
}
}
}
@ -53,32 +53,33 @@ const METHODS = {
},
spareext: (xc, yc, clrIgnore, canvasCleaner) => {
let pxl = canvasCleaner.getPixelInChunkArea(xc, yc);
if (pxl === null || pxl < clrIgnore) {
return null;
}
let rplPxl = null;
let origPxl = null;
const origPxl = pxl;
for (let u = -1; u <= 1; u += 1) {
for (let v = -1; v <= 1; v += 1) {
const pxl = canvasCleaner.getPixelInChunkArea(xc + u, yc + v);
if (pxl === null) {
pxl = canvasCleaner.getPixelInChunkArea(xc + u, yc + v);
if (pxl === null
|| (u === 0 && v === 0)
) {
continue;
}
if (u === 0 && v === 0) {
if (pxl < clrIgnore || pxl === rplPxl) {
return null;
}
origPxl = pxl;
} else {
if (rplPxl === null) {
rplPxl = pxl;
}
if (pxl >= clrIgnore) {
if (rplPxl < clrIgnore) {
rplPxl = pxl;
continue;
}
if (pxl !== rplPxl) {
return null;
}
}
if (rplPxl === null) {
rplPxl = pxl;
continue;
}
if (pxl < clrIgnore) {
continue;
}
if (rplPxl < clrIgnore) {
rplPxl = pxl;
continue;
}
if (pxl !== rplPxl) {
return null;
}
}
}