Skip to content

Commit

Permalink
[#42] kakao 공유하기 개발
Browse files Browse the repository at this point in the history
  • Loading branch information
hanseulhee committed Apr 7, 2024
1 parent f25649b commit 462b1bf
Show file tree
Hide file tree
Showing 6 changed files with 74 additions and 12 deletions.
3 changes: 2 additions & 1 deletion .eslintrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@
}
],
"no-unused-vars": "warn",
"operator-linebreak": "off"
"operator-linebreak": "off",
"@typescript-eslint/no-explicit-any": "off"
}
}
40 changes: 40 additions & 0 deletions app/(route)/indicators/_components/button/KakaoShareButton.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
'use client'

import { resultAtom, selectedItemAtom } from '@/app/_store/atom'
import { useEffect } from 'react'
import { useRecoilValue } from 'recoil'

const id = 'kakao-sdk'

function KakaoShareButton() {
const selectedItem = useRecoilValue(selectedItemAtom)
const resultItem = useRecoilValue(resultAtom)

useEffect(() => {
if (document.getElementById(id) == null) {
const script = document.createElement('script')
script.id = id
script.src = 'https://developers.kakao.com/sdk/js/kakao.js'
script.onload = () => {
window.Kakao.init(process.env.NEXT_PUBLIC_KAKAO_SHARE_KEY)
window.Kakao.isInitialized()
}
document.body.appendChild(script)
}
}, [])

const kakaoShare = () => {
window.Kakao.Share.sendCustom({
installTalk: true,
templateId: 106777,
templateArgs: {
name: `${selectedItem?.name}`,
result: `${resultItem}`,
},
})
}

return <button onClick={kakaoShare}>카카오톡 공유</button>
}

export default KakaoShareButton
30 changes: 21 additions & 9 deletions app/(route)/indicators/_components/result/index.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
import Nav from '@/app/_common/nav'
import Title from '@/app/_common/text/title'
import { selectedItemAtom, totalinputValueAtom } from '@/app/_store/atom'
import { useRecoilValue } from 'recoil'
import {
resultAtom,
selectedItemAtom,
totalinputValueAtom,
} from '@/app/_store/atom'
import { useRecoilState, useRecoilValue } from 'recoil'
import KakaoShareButton from '../button/KakaoShareButton'
import Pyramid from './Pyramid'
import S from './result.module.css'
import ResultItem from './resultItem'
Expand All @@ -12,7 +17,9 @@ function Result() {
const selectedItem = useRecoilValue(selectedItemAtom)
const totalinputValue = parseInt(useRecoilValue(totalinputValueAtom))

const result =
const [result, setResult] = useRecoilState(resultAtom)

const resultValue =
selectedItem?.score &&
selectedItem?.people &&
Math.floor(
Expand All @@ -21,16 +28,19 @@ function Result() {
100,
)

setResult(resultValue!)
console.log(resultValue)

let resultAmount = ''
if (result! >= 90) {
if (resultValue! >= 90) {
resultAmount += '매우 높음'
} else if (result! >= 70) {
} else if (resultValue! >= 70) {
resultAmount += '높음'
} else if (result! >= 50) {
} else if (resultValue! >= 50) {
resultAmount += '보통'
} else if (result! >= 30) {
} else if (resultValue! >= 30) {
resultAmount += '낮음'
} else if (result! >= 10) {
} else if (30 > resultValue! && resultValue! >= 0) {
resultAmount += '매우 낮음'
}

Expand Down Expand Up @@ -85,7 +95,9 @@ function Result() {
</div>
</div>
<div className={S.bottomWrapper}>
<button className={S.submitBtnWrapper}>공유하기</button>
<div className={S.submitBtnWrapper}>
<KakaoShareButton />
</div>
</div>
</>
)
Expand Down
4 changes: 2 additions & 2 deletions app/(route)/indicators/_components/result/result.module.css
Original file line number Diff line number Diff line change
Expand Up @@ -121,9 +121,9 @@

color: white;
font-weight: 700;
font-size: 1.2rem;
font-size: 1.1rem;
text-align: center;
width: 100px;
width: 160px;
height: auto;
padding: 10px 20px;
border-radius: 9px;
Expand Down
5 changes: 5 additions & 0 deletions app/_store/atom.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,11 @@ export interface ActiveInvestmentItemType {

// type ActiveType = Omit<ActiveInvestmentItemType, 'id'>

export const resultAtom = atom<number>({
key: 'resultAtom',
default: 0,
})

export const selectedItemAtom = atom<ActiveInvestmentItemType | null>({
key: 'selectedItemAtom',
default: null,
Expand Down
4 changes: 4 additions & 0 deletions app/_types/global.d.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
declare module '*.css'

declare module '*.sass'

interface Window {
Kakao: any
}

0 comments on commit 462b1bf

Please sign in to comment.