@@ -72,8 +72,63 @@ export const MediaViewer = () => {
7272 )
7373}
7474
75- export const StatusScreen = ( props ) => {
75+ export const StatusScreen = ( ) => {
76+ const [ idx , setIdx ] = useState ( 2 )
77+ const stdata = useSelector ( state => state . whatsapp . status || { } )
78+ const contact = useSelector ( state => {
79+ var tmp = { }
80+ if ( stdata . id == - 1 ) tmp = state . whatsapp . self
81+ else tmp = state . whatsapp . chats && state . whatsapp . chats [ stdata . id ]
82+ return tmp || { }
83+ } )
84+
85+ return (
86+ < div className = "status-container" value = { ! stdata . vis && "hide" } >
87+ < div className = "whatsapp-top-nav" >
88+ < div className = "progress-bar-container" >
89+ { contact . status && contact . status . map ( ( st , i ) => {
90+ return (
91+ < div className = 'progress-bar' data-lit = { i < idx } key = { i } >
92+ { i == idx && < div className = "progress-fill" style = { {
93+ width : "100%"
94+ } } > </ div > }
95+ </ div >
96+ )
97+ } ) }
98+ </ div >
99+ < div className = "chat-profile-container flex items-center" >
100+ < div className = "chat-profile active-light-lit" >
101+ < Icon mui = "ArrowBack" w = { 20 } action = "home/goBack" />
102+ < Image className = "rounded-full overflow-hidden"
103+ src = { contact . img } dir = "asset/whatsapp/pfp" w = { 36 } />
104+ </ div >
105+ < div className = "chat-name flex-column font-thin mb-1" >
106+ < span > { stdata . id == - 1 ? "You" : contact . name } </ span >
107+ < span >
108+ { new Date ( contact . status && contact . status . at ( - 1 ) . time ) . minifyTime ( ) }
109+ </ span >
110+ </ div >
111+ </ div >
112+ </ div >
113+ { contact . status ?(
114+ < div className = "media-screen" >
115+ { contact . status [ idx ] . media == "Photo" && < Image src = { contact . status [ idx ] . src } dir = "asset/whatsapp/" /> }
116+ { contact . status [ idx ] . media == "Video" && (
117+ < Video
118+ src = { contact . status [ idx ] . src }
119+ dir = "asset/whatsapp/" h = "100%"
120+ playIcon autoplay clickToggle muted
121+ />
122+ ) }
123+ </ div >
124+ ) :null }
125+ </ div >
126+ )
127+ }
128+
129+ export const AllStatusScreen = ( props ) => {
76130 const wdata = useSelector ( state => state . whatsapp ) ;
131+ const myself = useSelector ( state => state . whatsapp . self ) ;
77132 const contacts = useSelector ( state => state . whatsapp . chats ) ;
78133
79134 const CalculateArc = ( { n, i, viewed} ) => {
@@ -89,47 +144,50 @@ export const StatusScreen = (props)=>{
89144
90145 return (
91146 < div className = "chats-status-container medScroll" >
92- < div className = "my-status" >
147+ < div className = "my-status active-dark-lit " >
93148 < div className = "chat-status" >
94149 < div className = "status-preview-container" >
95150 < div className = "status-preview" >
96151 < svg viewBox = "0 0 104 104" xmlns = "http://www.w3.org/2000/svg" >
97- { [ ... Array ( 3 ) ] . map ( ( x , i ) => {
98- return < CalculateArc n = { 3 } i = { i } viewed key = { i } />
152+ { myself && myself . status . map ( ( status , i ) => {
153+ return < CalculateArc n = { myself . status . length } i = { i } viewed key = { i } />
99154 } ) }
100155 </ svg >
101156 </ div >
102- < Image className = "rounded-full rounded" src = "blue.jpg" dir = "asset/whatsapp/pfp" w = { 48 } />
157+ < Image className = "rounded-full rounded" src = { myself && myself . img }
158+ dir = "asset/whatsapp/pfp" w = { 48 } />
103159 </ div >
104160 < div className = "status-info flex flex-col mx-4" >
105161 < div className = "chat-name" > My status</ div >
106- < div className = "status-date" > Today, 10:08 AM</ div >
162+ < div className = "status-date" >
163+ { myself && new Date ( myself . status . at ( - 1 ) . time ) . minifyTime ( ) }
164+ </ div >
107165 </ div >
108166 </ div >
109167 </ div >
110- < div className = "gray-txt text-sm px-6 py-2" > Recent updates</ div >
111- < div className = "chats-status px-2 py-1" >
112- { contacts && contacts . map ( ( chat , i ) => {
113- var s = chat . name ,
114- randv = s . split ( "" ) . map ( x => x . charCodeAt ( ) ) . reduce ( ( b , c ) => 2 * b + 3 * c ) ;
115- var nos = 1 + randv % 8 ,
116- minago = ( randv * 13 ) % 1440
117-
118- return (
119- < div className = "chat-status" key = { i } >
168+ < div className = "gray-txt text-sm px-6" > Recent updates</ div >
169+ < div className = "chats-status" >
170+ { contacts && contacts . map ( ( contact , i ) => {
171+ if ( ! contact . status || ! contact . status . length ) return null
172+ return (
173+ < div className = "chat-status active-dark-lit prtclk" onClick = { dispatchAction }
174+ data-action = "whatsapp/setStatus" data-payload = { i } key = { i } >
120175 < div className = "status-preview-container" >
121176 < div className = "status-preview" >
122177 < svg viewBox = "0 0 104 104" xmlns = "http://www.w3.org/2000/svg" >
123- { [ ...Array ( nos ) ] . map ( ( x , i ) => {
124- return < CalculateArc n = { nos } i = { i } key = { i } viewed = { i % 2 == 0 } />
178+ { contact . status . map ( ( status , i ) => {
179+ return < CalculateArc n = { contact . status . length }
180+ i = { i } key = { i } viewed = { status . seen } />
125181 } ) }
126182 </ svg >
127183 </ div >
128- < Image className = "rounded-full rounded" src = { chat . img } dir = "asset/whatsapp/pfp" w = { 48 } />
184+ < Image className = "rounded-full rounded" src = { contact . img } dir = "asset/whatsapp/pfp" w = { 48 } />
129185 </ div >
130186 < div className = "status-info flex flex-col mx-4" >
131- < div className = "chat-name" > { chat . name } </ div >
132- < div className = "status-date" > { new Date ( ) . minifyTime ( minago ) } </ div >
187+ < div className = "chat-name" > { contact . name } </ div >
188+ < div className = "status-date" >
189+ { new Date ( contact . status . at ( - 1 ) . time ) . minifyTime ( ) }
190+ </ div >
133191 </ div >
134192 </ div >
135193 )
@@ -145,7 +203,7 @@ export const CallLogs = ()=>{
145203
146204 return (
147205 < div className = "call-logs-container medScroll" >
148- < div className = "call-logs px-2 py-1 " >
206+ < div className = "call-logs" >
149207 { contacts && contacts . map ( ( chat , i ) => {
150208 var randv = chat . name . split ( "" ) . map ( x => x . charCodeAt ( ) ) . reduce ( ( b , c ) => 2 * b + 3 * c ) ;
151209 var callst = randv % 3 , callsticon = callst != 2 ?"CallReceived" :"CallMade" ,
@@ -257,7 +315,8 @@ export const ChatScreen = (props)=>{
257315 < div className = "chat-profile prtclk active-light-lit"
258316 onClick = { dispatchAction } data-action = "home/goBack" >
259317 < Icon mui = "ArrowBack" w = { 20 } />
260- < Image className = "rounded-full overflow-hidden" src = { contact . img } dir = "asset/whatsapp/pfp" w = { 36 } />
318+ < Image className = "rounded-full overflow-hidden"
319+ src = { contact . img } dir = "asset/whatsapp/pfp" w = { 36 } />
261320 </ div >
262321 < div className = "chat-name text-lg font-thin mx-2" > { contact . name } </ div >
263322 </ div >
0 commit comments