Files
shoptime/com.twin.app.shoptime/src/utils/fp.js
optrader 4a84235ff2 [250904] feat: DetailPanel UserReviews 페이지네이션 구현
🕐 커밋 시간: 2025. 09. 04. 12:56:09

💬 사용자 메시지:
  UserReviews와 CustomerImages에 페이지네이션 기능 추가
- CustomerImages: 5개씩 표시하는 View More 버튼 기능
- UserReviews: 모든 리뷰 데이터 표시로 변경
- Chromium 68 호환성 개선 (Optional Chaining 제거)
- API 엔드포인트 및 Redux 액션/리듀서 추가
- 1124px 레이아웃 통일 및 View More 버튼 스타일링

📊 변경 통계:
  • 총 파일: 57개
  • 추가: +1252줄
  • 삭제: -540줄

📁 추가된 파일:
  + com.twin.app.shoptime/assets/images/icons/ic-gr-call-1.png
  + com.twin.app.shoptime/assets/images/image-review-sample-1.png
  + com.twin.app.shoptime/src/views/DetailPanel/DetailPanel.backup.jsx
  + com.twin.app.shoptime/src/views/DetailPanel/DetailPanel.backup.module.less
  + com.twin.app.shoptime/src/views/DetailPanel/ProductAllSection/ProductAllSection.jsx
  + com.twin.app.shoptime/src/views/DetailPanel/ProductAllSection/ProductAllSection.module.less
  + com.twin.app.shoptime/src/views/DetailPanel/ProductContentSection/ProductDescription/ProductDescription.jsx
  + com.twin.app.shoptime/src/views/DetailPanel/ProductContentSection/ProductDescription/ProductDescription.module.less
  + com.twin.app.shoptime/src/views/DetailPanel/ProductContentSection/ProductDescription/package.json
  + com.twin.app.shoptime/src/views/DetailPanel/ProductContentSection/ProductDetail/ProductDetail.new.jsx
  + com.twin.app.shoptime/src/views/DetailPanel/ProductContentSection/ProductDetail/ProductDetail.new.module.less
  + com.twin.app.shoptime/src/views/DetailPanel/ProductContentSection/UserReviews/CustomerImages/CustomerImages.jsx
  + com.twin.app.shoptime/src/views/DetailPanel/ProductContentSection/UserReviews/CustomerImages/CustomerImages.module.less
  + com.twin.app.shoptime/src/views/DetailPanel/ProductContentSection/UserReviews/UserReviews.jsx
  + com.twin.app.shoptime/src/views/DetailPanel/ProductContentSection/UserReviews/UserReviews.module.less
  + com.twin.app.shoptime/src/views/DetailPanel/ProductContentSection/UserReviews/UserReviewsPopup/UserReviewsPopup.figma.jsx
  + com.twin.app.shoptime/src/views/DetailPanel/ProductContentSection/UserReviews/UserReviewsPopup/UserReviewsPopup.jsx
  + com.twin.app.shoptime/src/views/DetailPanel/ProductContentSection/UserReviews/UserReviewsPopup/UserReviewsPopup.module.less
  + com.twin.app.shoptime/src/views/DetailPanel/ProductContentSection/UserReviews/package.json
  + com.twin.app.shoptime/src/views/DetailPanel/ProductContentSection/YouMayAlsoLike/YouMayAlsoLike.jsx
  + com.twin.app.shoptime/src/views/DetailPanel/ProductContentSection/YouMayAlsoLike/YouMayAlsoLike.module.less
  + com.twin.app.shoptime/src/views/DetailPanel/ProductContentSection/YouMayAlsoLike/package.json
  + com.twin.app.shoptime/src/views/DetailPanel/ProductInfoSection/QRCode/QRCode.jsx
  + com.twin.app.shoptime/src/views/DetailPanel/ProductInfoSection/QRCode/QRCode.module.less
  + com.twin.app.shoptime/src/views/DetailPanel/ProductInfoSection/QRCode/package.json
  + com.twin.app.shoptime/src/views/DetailPanel/ProductOverview/ProductOverview.jsx
  + com.twin.app.shoptime/src/views/DetailPanel/ProductOverview/ProductOverview.module.less
  + com.twin.app.shoptime/src/views/DetailPanel/ProductOverview/ProductPriceDisplay/BuyNowPriceDisplay/BuyNowPriceDisplay.jsx
  + com.twin.app.shoptime/src/views/DetailPanel/ProductOverview/ProductPriceDisplay/BuyNowPriceDisplay/BuyNowPriceDisplay.module.less
  + com.twin.app.shoptime/src/views/DetailPanel/ProductOverview/ProductPriceDisplay/BuyNowPriceDisplay/package.json
  + com.twin.app.shoptime/src/views/DetailPanel/ProductOverview/ProductPriceDisplay/ProductPriceDisplay.jsx
  + com.twin.app.shoptime/src/views/DetailPanel/ProductOverview/ProductPriceDisplay/ProductPriceDisplay.module.less
  + com.twin.app.shoptime/src/views/DetailPanel/ProductOverview/ProductPriceDisplay/ShopByMobilePriceDisplay/ShopByMobilePriceDisplay.jsx
  + com.twin.app.shoptime/src/views/DetailPanel/ProductOverview/ProductPriceDisplay/ShopByMobilePriceDisplay/ShopByMobilePriceDisplay.module.less
  + com.twin.app.shoptime/src/views/DetailPanel/ProductOverview/ProductPriceDisplay/ShopByMobilePriceDisplay/package.json
  + com.twin.app.shoptime/src/views/DetailPanel/ProductOverview/ProductPriceDisplay/package.json
  + com.twin.app.shoptime/src/views/DetailPanel/ProductOverview/package.json
  + com.twin.app.shoptime/src/views/DetailPanel/ThemeItemListOverlay/ThemeItemListOverlay.jsx
  + com.twin.app.shoptime/src/views/DetailPanel/ThemeItemListOverlay/ThemeItemListOverlay.module.less
  + com.twin.app.shoptime/src/views/DetailPanel/components/CustomScrollbar/CustomScrollbar.jsx
  + com.twin.app.shoptime/src/views/DetailPanel/components/CustomScrollbar/CustomScrollbar.module.less
  + com.twin.app.shoptime/src/views/DetailPanel/components/DetailMobileSendPopUp.jsx
  + com.twin.app.shoptime/src/views/DetailPanel/components/DetailMobileSendPopUp.module.less
  + com.twin.app.shoptime/src/views/DetailPanel/components/THeaderCustom.jsx
  + com.twin.app.shoptime/src/views/DetailPanel/components/THeaderCustom.module.less
  + com.twin.app.shoptime/src/views/DetailPanel/components/TScroller/TScrollerDetail.jsx
  + com.twin.app.shoptime/src/views/DetailPanel/components/TScroller/TScrollerDetail.module.less
  + package-lock.json

📝 수정된 파일:
  ~ com.twin.app.shoptime/src/actions/actionTypes.js
  ~ com.twin.app.shoptime/src/actions/productActions.js
  ~ com.twin.app.shoptime/src/api/apiConfig.js
  ~ com.twin.app.shoptime/src/reducers/productReducer.js
  ~ com.twin.app.shoptime/src/utils/fp.js
  ~ com.twin.app.shoptime/src/utils/lodash.js
  ~ com.twin.app.shoptime/src/utils/lodashFpEx.js
  ~ com.twin.app.shoptime/src/views/DetailPanel/DetailPanel.jsx
  ~ com.twin.app.shoptime/src/views/DetailPanel/DetailPanel.module.less

🔧 주요 변경 내용:
  • 타입 시스템 안정성 강화
  • 핵심 비즈니스 로직 개선
  • API 서비스 레이어 개선
  • 공통 유틸리티 함수 최적화
  • 프로젝트 의존성 관리 개선
  • UI 컴포넌트 아키텍처 개선
  • 대규모 기능 개발
  • 모듈 구조 개선

BREAKING CHANGE: API 또는 설정 변경으로 인한 호환성 영향 가능
2025-09-04 12:56:26 +09:00

68 lines
1.7 KiB
JavaScript

// src/utils/fp.js
// FP bootstrap: use locally-extended lodash instance
// './lodash' already mixes in our custom extensions from './lodashFpEx'
import fp from './lodash';
// 🔽 [FIX] fp가 undefined일 경우를 대비한 기본값 제공
const safeFp = fp || {};
export const {
// 기본 함수 조합
pipe, flow, curry, compose,
// 기본 컬렉션 함수들
map, filter, reduce, get, set,
// 기본 타입 체크 함수들
isEmpty, isNotEmpty, isNil, isNotNil,
// 비동기 함수들
mapAsync, reduceAsync, filterAsync, findAsync, forEachAsync,
// Promise 관련
promisify, then, andThen, otherwise, catch: catchFn, finally: finallyFn,
isPromise,
// 조건부 실행 함수들
when, unless, ifElse, ifT, ifF, ternary,
// 디버깅 및 사이드 이펙트
tap, trace,
// 안전한 실행
tryCatch, safeGet, getOr,
// 타입 체크 확장
isJson, notEquals, isNotEqual, isVal, isPrimitive, isRef, isReference,
not, notIncludes, toBool, isFalsy, isTruthy,
// 객체 변환
transformObjectKey, toCamelcase, toCamelKey, toSnakecase, toSnakeKey,
toPascalcase, pascalCase, renameKeys,
// 배열 유틸리티
mapWhen, filterWhen, removeByIndex, removeByIdx, removeLast,
append, prepend, insertAt, partition,
// 함수 조합 유틸리티
ap, applyTo, juxt, converge, instanceOf,
// 문자열 유틸리티
trimToUndefined, capitalize, isDatetimeString,
// 수학 유틸리티
clampTo, between,
// 기본값 처리
defaultTo, defaultWith, elvis,
// 키 관련
key, keyByVal,
mapWithKey, mapWithIdx, forEachWithKey, forEachWithIdx,
reduceWithKey, reduceWithIdx,
// 유틸리티
deepFreeze, times, lazy,
} = safeFp;
export default safeFp;