Skip to content

Commit

Permalink
Merge pull request #373 from nttcom/bugfix/de-duplicating-getThumbnail
Browse files Browse the repository at this point in the history
de-duplicating getThumbnail
  • Loading branch information
nitky committed Sep 30, 2024
2 parents dbf8aaf + 24673f6 commit 2377874
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 18 deletions.
35 changes: 18 additions & 17 deletions web/src/components/PTeamServicesListModal.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import React, { useEffect, useState } from "react";
import { useDispatch, useSelector } from "react-redux";
import { useNavigate, useLocation } from "react-router-dom";

import { storeServiceThumbnail } from "../slices/pteam";
import { storeServiceThumbnailDict } from "../slices/pteam";
import { getServiceThumbnail } from "../utils/api";
import { blobToDataURL } from "../utils/func";

Expand Down Expand Up @@ -52,23 +52,24 @@ export function PTeamServicesListModal(props) {
const pageServices = targetServices.slice(perPage * (page - 1), perPage * page);

useEffect(() => {
pageServices.forEach((service) => {
if (thumbnails[service.service_id] === undefined) {
getServiceThumbnail(pteamId, service.service_id)
.then(async (response) => {
const dataUrl = await blobToDataURL(response.data);
dispatch(storeServiceThumbnail({ serviceId: service.service_id, data: dataUrl }));
})
.catch((error) => {
dispatch(
storeServiceThumbnail({
serviceId: service.service_id,
data: noImageAvailableUrl,
}),
);
});
if (pageServices.every((service) => thumbnails[service.service_id] !== undefined)) {
return;
}
(async () => {
let serviceThumbnailDict = {};
for (let service of pageServices) {
if (thumbnails[service.service_id] !== undefined) {
continue;
}
serviceThumbnailDict[service.service_id] = await getServiceThumbnail(
pteamId,
service.service_id,
)
.then(async (response) => blobToDataURL(response.data))
.catch(() => noImageAvailableUrl);
}
});
dispatch(storeServiceThumbnailDict(serviceThumbnailDict));
})();
}, [pteamId, pageServices, thumbnails, dispatch]);

if (tagId === "") {
Expand Down
15 changes: 14 additions & 1 deletion web/src/slices/pteam.js
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,13 @@ const pteamSlice = createSlice({
[action.payload.serviceId]: action.payload.data,
},
}),
storeServiceThumbnailDict: (state, action) => ({
...state,
serviceThumbnails: {
...state.serviceThumbnails,
...action.payload,
},
}),
},
extraReducers: (builder) => {
builder
Expand Down Expand Up @@ -242,6 +249,12 @@ const pteamSlice = createSlice({

const { actions, reducer } = pteamSlice;

export const { clearPTeam, setPTeamId, invalidateServiceId, storeServiceThumbnail } = actions;
export const {
clearPTeam,
setPTeamId,
invalidateServiceId,
storeServiceThumbnail,
storeServiceThumbnailDict,
} = actions;

export default reducer;

0 comments on commit 2377874

Please sign in to comment.