feat(plugins): preserve other partition badges on partition status NONE (1.20.0)
parent
0cba5933e4
commit
763a49f9cc
|
|
@ -1,5 +1,13 @@
|
|||
# Changelog
|
||||
|
||||
## [1.20.0] - 2026-10-26
|
||||
|
||||
### Added
|
||||
- **Soporte de Estados y Badges a Nivel de Partición en Plugins (`PluginService`, `groups.component`)**:
|
||||
- Incorporada gestión granular de estados por partición (`${plugin}:${clientId}:${disk}:${partition}`).
|
||||
- En eventos Mercure con `status === 'NONE'` en una partición específica, se limpia la clave de la partición y cualquier estado transitorio global obsoleto (`REMOVING`, `CHECKING`, etc.), permitiendo que `getClientBadges` evalúe de inmediato y preserve el badge activo de cualquier otra partición protegida del equipo.
|
||||
- Soporte de invalidación granular por disco y partición en eventos de imagen y particionado.
|
||||
|
||||
## [1.19.0] - 2026-10-23
|
||||
|
||||
### Added
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "og-webconsole",
|
||||
"version": "1.19.0",
|
||||
"version": "1.20.0",
|
||||
"scripts": {
|
||||
"ng": "ng",
|
||||
"start": "ng serve",
|
||||
|
|
|
|||
|
|
@ -156,6 +156,10 @@ export class PluginService {
|
|||
const idStr = String(data.clientId);
|
||||
if (disk !== undefined && disk !== null && part !== undefined && part !== null) {
|
||||
this.clientPluginStatusMap.delete(this.getPartitionStatusKey(data.plugin, idStr, Number(disk), Number(part)));
|
||||
const curGlobal = this.clientPluginStatusMap.get(this.getStatusKey(data.plugin, idStr));
|
||||
if (curGlobal && ['REMOVING', 'CHECKING', 'FREEZING', 'UNFREEZING'].includes(curGlobal.toUpperCase())) {
|
||||
this.clientPluginStatusMap.delete(this.getStatusKey(data.plugin, idStr));
|
||||
}
|
||||
} else if (disk !== undefined && disk !== null) {
|
||||
clearEntriesForPrefix(`${data.plugin}:${idStr}:${disk}:`);
|
||||
} else {
|
||||
|
|
@ -167,6 +171,10 @@ export class PluginService {
|
|||
const uuidStr = data.clientUuid;
|
||||
if (disk !== undefined && disk !== null && part !== undefined && part !== null) {
|
||||
this.clientPluginStatusMap.delete(this.getPartitionStatusKey(data.plugin, uuidStr, Number(disk), Number(part)));
|
||||
const curGlobal = this.clientPluginStatusMap.get(this.getStatusKey(data.plugin, uuidStr));
|
||||
if (curGlobal && ['REMOVING', 'CHECKING', 'FREEZING', 'UNFREEZING'].includes(curGlobal.toUpperCase())) {
|
||||
this.clientPluginStatusMap.delete(this.getStatusKey(data.plugin, uuidStr));
|
||||
}
|
||||
} else if (disk !== undefined && disk !== null) {
|
||||
clearEntriesForPrefix(`${data.plugin}:${uuidStr}:${disk}:`);
|
||||
} else {
|
||||
|
|
|
|||
Loading…
Reference in New Issue