3
3
import { useTranslations } from 'next-intl' ;
4
4
import Image from 'next/image' ;
5
5
import Link from 'next/link' ;
6
- import { useRouter } from 'next/navigation' ;
7
6
8
7
import React , { useEffect , useState , useContext } from 'react' ;
9
8
10
9
import { AppContext } from '../../../../../../context/AppContextProvider' ;
11
- import TrustMeter from '@/components/shared/Review/TrustMeter' ;
12
- import EmojiPicker from '@/components/shared/Review/emojipicker' ;
13
- import { OutlineBtn } from '@/components/shared/Forms/Buttons/Buttons' ;
14
10
import ConfirmDialog from '@/components/shared/confirm' ;
11
+ import { OutlineBtn } from '@/components/shared/Forms/Buttons/Buttons' ;
12
+ import EmojiPicker from '@/components/shared/Review/emojipicker' ;
13
+ import TrustMeter from '@/components/shared/Review/TrustMeter' ;
14
+ import ToggleCollapse from '@/components/shared/Seller/ToggleCollapse' ;
15
15
import Skeleton from '@/components/skeleton/skeleton' ;
16
- import { fetchSingleSeller } from '@/services/sellerApi' ;
17
16
import { ISeller , IUserSettings , IUser } from '@/constants/types' ;
18
- import ToggleCollapse from '@/components/shared/Seller/ToggleCollapse ' ;
19
- import { fetchSellerSettings } from '@/services/userSettingsApi' ;
17
+ import { fetchSingleSeller } from '@/services/sellerApi ' ;
18
+ import { fetchSingleUserSettings } from '@/services/userSettingsApi' ;
20
19
21
20
export default function Page ( { params } : { params : { id : string } } ) {
22
21
const SUBHEADER = "font-bold mb-2" ;
23
22
24
23
const t = useTranslations ( ) ;
25
- const router = useRouter ( ) ;
26
24
27
25
const sellerId = params . id ;
28
26
29
27
const [ isSaveEnabled , setIsSaveEnabled ] = useState ( false ) ;
30
28
const [ showConfirmDialog , setShowConfirmDialog ] = useState ( false ) ;
31
29
const [ linkUrl , setLinkUrl ] = useState ( '' ) ;
32
30
33
- const [ seller , setSeller ] = useState < ISeller | null > ( null ) ;
31
+ const [ sellerShopInfo , setSellerShopInfo ] = useState < ISeller | null > ( null ) ;
34
32
const [ sellerSettings , setSellerSettings ] = useState < IUserSettings | null > ( null ) ;
35
- const [ sellerUser , setSellerUser ] = useState < IUser | null > ( null ) ;
33
+ const [ sellerInfo , setSellerInfo ] = useState < IUser | null > ( null ) ;
36
34
const [ loading , setLoading ] = useState < boolean > ( true ) ;
37
35
const [ error , setError ] = useState < string | null > ( null ) ;
38
36
const { currentUser, autoLoginUser } = useContext ( AppContext ) ;
@@ -46,18 +44,10 @@ export default function Page({ params }: { params: { id: string } }) {
46
44
47
45
const getSellerData = async ( ) => {
48
46
try {
49
- const data = await fetchSingleSeller ( sellerId ) ; //'testme'
50
- setSeller ( data . business_info ) ; // Ensure this is a single object, not an array
51
- if ( data . seller_settings ) {
52
- setSellerSettings ( data . seller_settings ) ;
53
- } else {
54
- setSellerSettings ( null ) ;
55
- }
56
- if ( data . user ) {
57
- setSellerUser ( data . user ) ;
58
- } else {
59
- setSellerUser ( null ) ;
60
- }
47
+ const data = await fetchSingleSeller ( sellerId ) ;
48
+ setSellerShopInfo ( data . sellerShopInfo ) ;
49
+ setSellerSettings ( data . sellerSettings ) ;
50
+ setSellerInfo ( data . sellerInfo ) ;
61
51
} catch ( error ) {
62
52
setError ( 'Error fetching seller data' ) ;
63
53
} finally {
@@ -66,26 +56,15 @@ export default function Page({ params }: { params: { id: string } }) {
66
56
} ;
67
57
68
58
const getSellerSettings = async ( ) => {
69
- const settings = await fetchSellerSettings ( sellerId ) ;
59
+ const settings = await fetchSingleUserSettings ( sellerId ) ;
70
60
console . log ( "User settings:" , settings ) ;
71
-
72
61
} ;
73
62
74
63
getSellerData ( ) ;
75
64
getSellerSettings ( ) ;
76
-
77
65
78
66
} , [ ] ) ;
79
67
80
- const handleNavigation = ( route : string ) => {
81
- if ( isSaveEnabled ) {
82
- setLinkUrl ( route ) ;
83
- setShowConfirmDialog ( true ) ;
84
- } else {
85
- router . push ( `/${ route } ` ) ;
86
- }
87
- } ;
88
-
89
68
const translateSellerCategory = ( category : string ) : string => {
90
69
switch ( category ) {
91
70
case 'Pioneer' :
@@ -109,69 +88,67 @@ export default function Page({ params }: { params: { id: string } }) {
109
88
< div className = "w-full md:w-[500px] md:mx-auto p-4" >
110
89
< h1 className = "mb-5 text-center font-bold text-lg md:text-2xl" > { t ( 'SCREEN.BUY_FROM_SELLER.BUY_FROM_SELLER_HEADER' ) } </ h1 >
111
90
112
- { seller && ( < div >
91
+ { sellerShopInfo && ( < div >
113
92
{ /* Seller Profile */ }
114
93
< div className = "flex gap-4 align-center mb-6 relative" >
115
94
< div className = "rounded-[50%] w-[65px] h-[65px] relative" >
116
- < Image alt = "seller logo" src = { seller . image } fill = { true } className = "rounded-[50%]" />
95
+ < Image alt = "seller logo" src = { sellerShopInfo . image } fill = { true } className = "rounded-[50%]" />
117
96
</ div >
118
97
< div className = "my-auto" >
119
- < h2 className = "font-bold mb-2" > { seller . name } </ h2 >
120
- < p className = "text-sm" > { translateSellerCategory ( seller . seller_type ) } </ p >
98
+ < h2 className = "font-bold mb-2" > { sellerShopInfo . name } </ h2 >
99
+ < p className = "text-sm" > { translateSellerCategory ( sellerShopInfo . seller_type ) } </ p >
121
100
</ div >
122
101
</ div >
123
102
124
- { /* Seller Description */ }
125
- < h2 className = { SUBHEADER } > { t ( 'Seller Details ' ) } </ h2 >
103
+ { /* Seller Details/ Description */ }
104
+ < h2 className = { SUBHEADER } > { t ( 'SCREEN.BUY_FROM_SELLER.SELLER_DETAILS_LABEL ' ) } </ h2 >
126
105
< div className = "seller_item_container mb-5" >
127
- < p className = "mb-3" > { seller . description } </ p >
106
+ < p className = "mb-3" > { sellerShopInfo . description } </ p >
128
107
</ div >
129
108
130
- { /* Seller Location */ }
131
- < h2 className = { SUBHEADER } > { t ( 'Seller Address or Whereabout ' ) } </ h2 >
109
+ { /* Seller Address/ Position */ }
110
+ < h2 className = { SUBHEADER } > { t ( 'SCREEN.BUY_FROM_SELLER.SELLER_ADDRESS_POSITION_LABEL ' ) } </ h2 >
132
111
< div className = "seller_item_container mb-5" >
133
- < p className = "mb-3" > { seller . address } </ p >
112
+ < p className = "mb-3" > { sellerShopInfo . address } </ p >
134
113
</ div >
135
114
136
115
{ /* Summary of Reviews */ }
137
116
< div className = "mb-7 mt-5" >
138
117
< h2 className = { SUBHEADER } > { t ( 'SCREEN.BUY_FROM_SELLER.REVIEWS_SUMMARY_LABEL' ) } </ h2 >
139
118
{ /* Trust-O-meter */ }
140
119
< div >
141
- < TrustMeter ratings = { seller . trust_meter_rating } />
120
+ < TrustMeter ratings = { sellerShopInfo . trust_meter_rating } />
142
121
</ div >
143
122
< div className = "flex items-center justify-between" >
144
123
< p className = "text-sm" >
145
- { t ( 'SCREEN.BUY_FROM_SELLER.REVIEWS_SCORE_MESSAGE' , { seller_review_rating : seller . average_rating . $numberDecimal } ) }
124
+ { t ( 'SCREEN.BUY_FROM_SELLER.REVIEWS_SCORE_MESSAGE' , { seller_review_rating : sellerShopInfo . average_rating . $numberDecimal } ) }
146
125
</ p >
147
- < Link href = { `/seller/reviews/${ sellerId } ?buyer=true&seller_name=${ seller . name } ` } >
126
+ < Link href = { `/seller/reviews/${ sellerId } ?buyer=true&seller_name=${ sellerShopInfo . name } ` } >
148
127
< OutlineBtn label = { t ( 'SHARED.CHECK_REVIEWS' ) } />
149
128
</ Link >
150
129
</ div >
151
130
</ div >
152
131
153
132
< ToggleCollapse
154
133
header = { t ( 'SCREEN.BUY_FROM_SELLER.LEAVE_A_REVIEW_MESSAGE' ) } >
155
- { /* <h2 className={SUBHEADER}>{t('SCREEN.BUY_FROM_SELLER.LEAVE_A_REVIEW_MESSAGE')}</h2> */ }
156
134
< div >
157
135
< EmojiPicker sellerId = { sellerId } setIsSaveEnabled = { setIsSaveEnabled } currentUser = { currentUser } />
158
136
</ div >
159
137
</ ToggleCollapse >
160
-
161
138
162
139
< ToggleCollapse
163
140
header = { t ( 'SCREEN.BUY_FROM_SELLER.SELLER_CONTACT_DETAILS_LABEL' ) } >
164
141
< div className = "text-sm mb-3" >
165
142
< span className = "font-bold" >
166
143
{ t ( 'Username' ) + ': ' }
167
144
</ span >
168
- < span > { sellerUser ? sellerUser . user_name : '' } </ span >
145
+ < span > { sellerInfo ? sellerInfo . user_name : '' } </ span >
169
146
</ div >
170
147
< div className = "text-sm mb-3" >
171
148
< span className = "font-bold" >
172
149
{ t ( 'Pioneer Name' ) + ': ' }
173
150
</ span >
174
- < span > { sellerUser ? sellerUser . pi_username : '' } </ span >
151
+ < span > { sellerInfo ? sellerInfo . pi_username : '' } </ span >
175
152
</ div >
176
153
< div className = "text-sm mb-3" >
177
154
< span className = "font-bold" >
0 commit comments