Fix rows loading indefinitely when no rows are returned.
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
This commit is contained in:
parent
2513e711b1
commit
2753b6eb9f
1 changed files with 13 additions and 4 deletions
|
@ -85,6 +85,12 @@ class AsyncManager<CK extends ColumnKey>
|
|||
protected promisedRowsCells: Partial<Record<CK, Promised<CellDefinition>>>[] = [];
|
||||
|
||||
|
||||
/**
|
||||
* Tells if rows are loaded or not.
|
||||
* @protected
|
||||
*/
|
||||
protected rowsLoaded: boolean = false;
|
||||
|
||||
/**
|
||||
* Rows data.
|
||||
* @protected
|
||||
|
@ -109,6 +115,7 @@ class AsyncManager<CK extends ColumnKey>
|
|||
*/
|
||||
handle(data: SmartableData<CK>): void
|
||||
{
|
||||
this.rowsLoaded = false;
|
||||
this.promisedData.refresh(data);
|
||||
}
|
||||
|
||||
|
@ -125,6 +132,7 @@ class AsyncManager<CK extends ColumnKey>
|
|||
// Initialize rows data and cells definitions.
|
||||
this.rowsData = [];
|
||||
this.cellsDefinitions = [];
|
||||
this.rowsLoaded = true;
|
||||
|
||||
for (const [rowId, rowDefinition] of rowsDefinitions.entries())
|
||||
{ // Get row data of each row.
|
||||
|
@ -218,20 +226,21 @@ class AsyncManager<CK extends ColumnKey>
|
|||
{
|
||||
if (!(
|
||||
// Checking that there is at least one changed value.
|
||||
this.rowsData.length > 0 && this.cellsDefinitions.some((rowCells) => (
|
||||
this.rowsData.length > 0 || this.cellsDefinitions.some((rowCells) => (
|
||||
Object.keys(rowCells).length > 0
|
||||
))
|
||||
|| ((this.rowsLoaded && !this.currentDataState.rows) || (!this.rowsLoaded && this.currentDataState.rows))
|
||||
)) // Nothing has changed.
|
||||
return;
|
||||
|
||||
// Initialize new data.
|
||||
const newData = {
|
||||
rows: [
|
||||
rows: !this.rowsLoaded ? undefined : [
|
||||
...(this.currentDataState?.rows ?? [])
|
||||
],
|
||||
};
|
||||
|
||||
for (const [rowId, newRow] of this.rowsData.entries())
|
||||
for (const [rowId, newRow] of this.rowsData?.entries())
|
||||
{ // Update value of each new row.
|
||||
newData.rows[rowId] = {
|
||||
element: newRow.element,
|
||||
|
@ -240,7 +249,7 @@ class AsyncManager<CK extends ColumnKey>
|
|||
};
|
||||
}
|
||||
|
||||
for (const [rowId, rowCells] of this.cellsDefinitions.entries())
|
||||
for (const [rowId, rowCells] of this.cellsDefinitions?.entries())
|
||||
{ // Update cells of each changed row.
|
||||
newData.rows[rowId] = {
|
||||
...newData.rows[rowId],
|
||||
|
|
Loading…
Reference in a new issue