Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FEAT] 테스트 결과 이미지 저장 기능 구현 #131

Merged
merged 11 commits into from
Feb 20, 2024
Merged

Conversation

CodyMan0
Copy link
Collaborator

@CodyMan0 CodyMan0 commented Feb 19, 2024

✨ 작업 내용

  • useDownloadImage 훅을 구현하였습니다
    • ref값을 인자로 받아 dom을 원하는 형식의 이미지로 반환해주는 역할을 수행합니다. moder-screenshot 라이브러리를 활용하여 구현하였습니다. 처음에는 a 링크만을 활용하여 구현하였으나 domain이 동일하지 않으면 다운로드가 되지 않고 이동을 시키는 에러를 만났습니다. 이를 해결하기 위해 dataURL을 활용하여 구현했으나 브라우저별로 제한된 url 길이로 인한 에러와 확장성이 부족하다는 리서치를 발견하였습니다 그래서 canva 엘리먼트의 메소드인 toDataUrl을 활용한 라이브러리를 알게 돼, 해당 라이브러리를 선정하여 구현하였습니다.

close #18

📚 작업 결과

2024-02-19.7.48.35.mov

모바일

default.MP4

🙏 기타 참고 사항

디자인팀과 논의해야할 부분이 많이 보입니다... 로딩중일 경우 어떻게 표현할 것인지?! 확장자는 Png라고 했으나 화질 문제가 있어보입니다.

@jhsung23 디자인 변경된 것도 반영하여 Merge하겠습니다.

✅ PR 등록 전 확인 후 체크해 주세요! (x 표시 해 주세요.)

  • Assignees를 지정했습니다. (해당 PR 작업한 사람을 태그해 주세요)
  • Labels, Milestone을 등록했습니다.
  • Development에 PR 내용과 연결된 Issue를 등록했습니다.

@CodyMan0 CodyMan0 added the ✨ Feature 기능 개발 label Feb 19, 2024
@CodyMan0 CodyMan0 self-assigned this Feb 19, 2024
Copy link

Copy link
Member

@jhsung23 jhsung23 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

확인했어요~

@CodyMan0
Copy link
Collaborator Author

@jhsung23 지현님~ 로딩 UI와 SVG로 변경했습니다. 리뷰부탁드려요~

Copy link

Copy link

<Icon icon="caretUp" color="gray-300" size={12} />
<div ref={imageRef}>{resultTypeMap[resultTypeId]}</div>
<div className="flex items-center gap-5xs py-xs">
<Button variant="empty" onClick={handleDownloadImage} className="h-[30px]">
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

button에 isLoading 프롭이 있긴해요! 필요하심 사용하셔도 되고 아니면 지금 유지하셔도 됩니닷

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

디자인이 변경돼서 로딩하지 않기로 이야기했어요! disable 처리하려고 하는데 isLoading props 사용해서 구현할게요~

Comment on lines 45 to 51
// HELP: 더 좋은 방법이 있을까요!?
// svg가 tsx 파일에서 가능하여 constants로 뺴지 않았습니다.
const resultTypeMap = {
1: <FirstResultType />,
2: <SecondResultType />,
3: <ThirdResultType />,
4: <ForthResultType />,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

음.. 괜찮다고 생각해요!

다만 결과에 대한 건 모두 서버에서 받아오는게 더 낫다고 생각하긴 하는데, 프론트에 저장하고 사용하시려는 이유가 있을까요?? (프백간 합의만 된다면 상관없긴 하지만요~)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아직 희건님 오시기 전이라 미리 테스트 해놓은거였어요~~ 백엔드 svg도 내려줄 수 있을까라는 생각이 들었어요!

import { Range } from '@/types/util';

// TODO : 백엔드와 논의하여 resultTypeId 프로퍼티 결정
const ImageBox = ({ resultTypeId = 4 }: { resultTypeId: Range<1, 5> }) => {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

여기 타입 부분만 resultTypeId에서 가져오도록 수정하면 될 것 같아요.

타입 아이디가 하나 더 늘면 객체에도 추가해야하고 Range 범위도 변경해야 하니까 keyof typeof resultTypeId를 넣어주는 것도 좋아보여요.

Copy link

Copy link

@CodyMan0 CodyMan0 merged commit b315c26 into main Feb 20, 2024
4 checks passed
@CodyMan0 CodyMan0 deleted the feat/#18-image branch February 20, 2024 16:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
✨ Feature 기능 개발
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[FEAT] 테스트 결과 이미지 저장 기능 구현
2 participants