mirror of
https://github.com/invoke-ai/InvokeAI
synced 2024-08-30 20:32:17 +00:00
feat(ui): enhance autoprocessing
The processor is automatically selected when model is changed. But if the user manually changes the processor, processor settings, or disables the new `Auto configure processor` switch, auto processing is disabled. The user can enable auto configure by turning the switch back on. When auto configure is enabled, a small dot is overlaid on the expand button to remind the user that the system is not auto configuring the processor for them. If auto configure is enabled, the processor settings are reset to the default for the selected model.
This commit is contained in:
@ -1,9 +1,11 @@
|
||||
import { AnyAction } from '@reduxjs/toolkit';
|
||||
import { AnyListenerPredicate } from '@reduxjs/toolkit';
|
||||
import { startAppListening } from '..';
|
||||
import { log } from 'app/logging/useLogger';
|
||||
import { controlNetImageProcessed } from 'features/controlNet/store/actions';
|
||||
import {
|
||||
controlNetAutoConfigToggled,
|
||||
controlNetImageChanged,
|
||||
controlNetModelChanged,
|
||||
controlNetProcessorParamsChanged,
|
||||
controlNetProcessorTypeChanged,
|
||||
} from 'features/controlNet/store/controlNetSlice';
|
||||
@ -11,19 +13,26 @@ import { RootState } from 'app/store/store';
|
||||
|
||||
const moduleLog = log.child({ namespace: 'controlNet' });
|
||||
|
||||
const predicate = (action: AnyAction, state: RootState) => {
|
||||
const predicate: AnyListenerPredicate<RootState> = (action, state) => {
|
||||
const isActionMatched =
|
||||
controlNetProcessorParamsChanged.match(action) ||
|
||||
controlNetModelChanged.match(action) ||
|
||||
controlNetImageChanged.match(action) ||
|
||||
controlNetProcessorTypeChanged.match(action);
|
||||
controlNetProcessorTypeChanged.match(action) ||
|
||||
controlNetAutoConfigToggled.match(action);
|
||||
|
||||
if (!isActionMatched) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const { controlImage, processorType } =
|
||||
const { controlImage, processorType, shouldAutoConfig } =
|
||||
state.controlNet.controlNets[action.payload.controlNetId];
|
||||
|
||||
if (controlNetModelChanged.match(action) && !shouldAutoConfig) {
|
||||
// do not process if the action is a model change but the processor settings are dirty
|
||||
return false;
|
||||
}
|
||||
|
||||
const isProcessorSelected = processorType !== 'none';
|
||||
|
||||
const isBusy = state.system.isProcessing;
|
||||
@ -49,7 +58,10 @@ export const addControlNetAutoProcessListener = () => {
|
||||
|
||||
// Cancel any in-progress instances of this listener
|
||||
cancelActiveListeners();
|
||||
|
||||
moduleLog.trace(
|
||||
{ data: action.payload },
|
||||
'ControlNet auto-process triggered'
|
||||
);
|
||||
// Delay before starting actual work
|
||||
await delay(300);
|
||||
|
||||
|
Reference in New Issue
Block a user