@@ -5,7 +5,6 @@ import React from 'react';
5
5
import { useState } from 'react' ;
6
6
import Image from 'next/image' ;
7
7
import { PostTypes } from '@/types/postTypes' ;
8
- import { TankaTypes } from '@/types/tankaTypes' ;
9
8
import ImageModal from '@/components/ImageModal' ;
10
9
import MiyabiButton from '@/components/MiyabiButton' ;
11
10
import DropDownButton from './DropDownButton' ;
@@ -32,6 +31,8 @@ const Post = ({ post, className }: PostProps) => {
32
31
const tanka = parseTanka ( post . tanka ) ;
33
32
// 投稿に画像が含まれるか
34
33
const hasImage = Boolean ( post . imageUrl ) ;
34
+ // 雅カウントの状態
35
+ const [ miyabiCount , setMiyabiCount ] = useState ( post . miyabiCount ) ;
35
36
// 画像の拡大表示状態
36
37
const [ modalOpen , setModalOpen ] = useState ( false ) ;
37
38
// 削除確認ダイアログの表示状態
@@ -112,15 +113,24 @@ const Post = ({ post, className }: PostProps) => {
112
113
< div className = 'mt-3 flex items-center text-black' >
113
114
{ formatDateKanji ( post . date ) }
114
115
< div className = 'ml-auto flex items-center' >
115
- < p className = 'mr-2 text-sm' > { post . miyabi . toLocaleString ( ) } </ p >
116
+ < p className = 'mr-2 text-sm' > { miyabiCount . toLocaleString ( ) } </ p >
116
117
< MiyabiButton
117
118
size = 'small'
118
119
onClick = { ( ) => {
119
120
if ( isLoggedIn ) {
121
+ setMiyabiCount ( ( count ) => ++ count ) ;
120
122
} else {
121
123
setLoginDialogOpen ( true ) ;
122
124
}
123
125
} }
126
+ onCancel = { ( ) => {
127
+ if ( isLoggedIn ) {
128
+ setMiyabiCount ( ( count ) => -- count ) ;
129
+ } else {
130
+ setLoginDialogOpen ( true ) ;
131
+ }
132
+ } }
133
+ initialIsClicked = { post . miyabiIsClicked }
124
134
className = 'mr-0'
125
135
/>
126
136
</ div >
@@ -154,11 +164,11 @@ const Post = ({ post, className }: PostProps) => {
154
164
/**
155
165
* 短歌をパースして,改行と全角空白を追加する.
156
166
* @function parseTanka
157
- * @param {TankaTypes } tanka - 短歌型オブジェクト
167
+ * @param {Array<string> } tanka - 短歌の配列
158
168
* @return {string } パースされた短歌の文字列
159
169
*/
160
- const parseTanka = ( tanka : TankaTypes ) : string => {
161
- const parsedTanka : string = `${ tanka . line1 } \n\u3000${ tanka . line2 } \n\u3000\u3000${ tanka . line3 } \n${ tanka . line4 } \n\u3000${ tanka . line5 } ` ;
170
+ const parseTanka = ( tanka : Array < string > ) : string => {
171
+ const parsedTanka : string = `${ tanka [ 0 ] } \n\u3000${ tanka [ 1 ] } \n\u3000\u3000${ tanka [ 2 ] } \n${ tanka [ 3 ] } \n\u3000${ tanka [ 4 ] } ` ;
162
172
return parsedTanka ;
163
173
} ;
164
174
0 commit comments