fix(ui): fix gallery not loading more images correctly after generation

This commit is contained in:
psychedelicious 2023-05-26 16:42:24 +10:00
parent 39088e42cc
commit 249522b568
2 changed files with 19 additions and 6 deletions

View File

@ -1,4 +1,8 @@
import { createEntityAdapter, createSlice } from '@reduxjs/toolkit';
import {
PayloadAction,
createEntityAdapter,
createSlice,
} from '@reduxjs/toolkit';
import { RootState } from 'app/store/store';
import {
receivedResultImagesPage,
@ -21,6 +25,7 @@ type AdditionalResultsState = {
pages: number;
isLoading: boolean;
nextPage: number;
upsertedImageCount: number;
};
export const initialResultsState =
@ -29,6 +34,7 @@ export const initialResultsState =
pages: 0,
isLoading: false,
nextPage: 0,
upsertedImageCount: 0,
});
export type ResultsState = typeof initialResultsState;
@ -37,7 +43,10 @@ const resultsSlice = createSlice({
name: 'results',
initialState: initialResultsState,
reducers: {
resultUpserted: resultsAdapter.upsertOne,
resultUpserted: (state, action: PayloadAction<ResultsImageDTO>) => {
resultsAdapter.upsertOne(state, action.payload);
state.upsertedImageCount += 1;
},
},
extraReducers: (builder) => {
/**

View File

@ -9,12 +9,14 @@ const galleryLog = log.child({ namespace: 'gallery' });
export const receivedResultImagesPage = createAppAsyncThunk(
'results/receivedResultImagesPage',
async (_arg, { getState, rejectWithValue }) => {
const { page, pages, nextPage } = getState().results;
const { page, pages, nextPage, upsertedImageCount } = getState().results;
const pageOffset = Math.floor(upsertedImageCount / IMAGES_PER_PAGE);
const response = await ImagesService.listImagesWithMetadata({
imageType: 'results',
imageCategory: 'general',
page: getState().results.nextPage,
page: nextPage + pageOffset,
perPage: IMAGES_PER_PAGE,
});
@ -27,12 +29,14 @@ export const receivedResultImagesPage = createAppAsyncThunk(
export const receivedUploadImagesPage = createAppAsyncThunk(
'uploads/receivedUploadImagesPage',
async (_arg, { getState, rejectWithValue }) => {
const { page, pages, nextPage } = getState().uploads;
const { page, pages, nextPage, upsertedImageCount } = getState().uploads;
const pageOffset = Math.floor(upsertedImageCount / IMAGES_PER_PAGE);
const response = await ImagesService.listImagesWithMetadata({
imageType: 'uploads',
imageCategory: 'general',
page: getState().uploads.nextPage,
page: nextPage + pageOffset,
perPage: IMAGES_PER_PAGE,
});