Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 2368 | Rev 2385 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
2362 stevensc 1
import React from 'react'
2369 stevensc 2
import { useSelector } from 'react-redux'
2362 stevensc 3
import { Container, Grid } from '@mui/material'
2368 stevensc 4
import parse from 'html-react-parser'
2362 stevensc 5
 
6
import Widget from '@app/components/UI/Widget'
2368 stevensc 7
import SurveyForm from '@app/components/survey-form/SurveyForm'
2369 stevensc 8
import AuthNavbar from '@app/components/UI/auth-navbar'
2362 stevensc 9
 
10
function ShorterPostPage() {
2369 stevensc 11
  const { isAuth } = useSelector((state) => state.auth)
2368 stevensc 12
  const post = {
13
    feed_unique: '664e1becdd052',
14
    feed_uuid: 'cb789433-8299-4a93-ab42-d0628a224187',
15
    feed_my_reaction: 'l',
16
    feed_delete_url: '/feed/delete/cb789433-8299-4a93-ab42-d0628a224187',
17
    feed_content_type: '',
18
    feed_reactions: [
19
      {
20
        total: 1,
21
        reaction: 'l'
22
      }
23
    ],
24
    feed_reactions_url:
25
      'https://dev-services.leaderslinked.com/feed/reactions/cb789433-8299-4a93-ab42-d0628a224187',
26
    feed_save_reaction_url:
27
      '/feed/save-reaction/cb789433-8299-4a93-ab42-d0628a224187',
28
    feed_highlighted: 0,
29
    feed_abuse_report_url: '',
30
    feed_delete_reaction_url:
31
      '/feed/delete-reaction/cb789433-8299-4a93-ab42-d0628a224187',
32
    feed_share_url:
33
      '/feed/share/cb789433-8299-4a93-ab42-d0628a224187/group/b294cd89-ebf4-427a-8d5e-332a3bf6924e',
34
    feed_share_external_url:
35
      'https://dev-services.leaderslinked.com/shorter/cb789433-8299-4a93-ab42-d0628a224187/generate/feed',
36
    feed_increment_external_counter_url:
37
      'https://dev-services.leaderslinked.com/share/type/feed/code/cb789433-8299-4a93-ab42-d0628a224187/user/e85129fa-18eb-4149-8640-fea9ae916cdc/timestamp/1716394988/rand/1496831637/password/87713bf90d8e3c4d3c70cf60e0703424/increment-external-counter',
38
    feed_vote_url: '',
39
    owner_url: '',
40
    owner_image:
41
      'https://dev-services.leaderslinked.com/storage/type/group/code/b294cd89-ebf4-427a-8d5e-332a3bf6924e/filename/group-image-65312ac078b8c.png/',
42
    owner_name: 'prueba',
43
    owner_description: '<p>New post</p>\r\n',
44
    owner_feed_type: 'g',
45
    owner_shared: 0,
46
    owner_external_shared: 0,
47
    owner_comments: 0,
48
    owner_time_elapse: '5 dias',
49
    comment_add_url: '/feed/comment/cb789433-8299-4a93-ab42-d0628a224187',
50
    comments: []
51
  }
52
 
2362 stevensc 53
  return (
2369 stevensc 54
    <>
55
      {!isAuth ? <AuthNavbar /> : null}
56
      <Container>
57
        <Grid
58
          container
59
          sx={{
60
            display: 'flex',
61
            justifyContent: 'center',
62
            alignItems: 'center'
63
          }}
64
        >
65
          <Grid item xs={12} md={8}>
66
            <Widget>
67
              <Widget.Header
68
                avatar={post.owner_image}
69
                title={post.owner_name}
70
                subheader={post.owner_time_elapse}
71
              />
2362 stevensc 72
 
2369 stevensc 73
              <Widget.Body>
74
                <FeedContent feed={post} />
75
              </Widget.Body>
76
            </Widget>
77
          </Grid>
2362 stevensc 78
        </Grid>
2369 stevensc 79
      </Container>
80
    </>
2362 stevensc 81
  )
82
}
83
 
2368 stevensc 84
const FeedContent = ({ feed }) => {
85
  const renderContent = ({
86
    owner_description,
87
    owner_file_image_preview,
88
    owner_file_video,
89
    owner_file_image,
90
    shared_name,
91
    shared_image,
92
    shared_time_elapse,
93
    feed_content_type,
94
    feed_vote_url
95
  }) => {
96
    switch (feed_content_type) {
97
      case 'fast-survey': {
98
        const answers = []
99
        const votes = []
100
 
101
        for (let i = 1; i < 6; i++) {
102
          answers.push(owner_description[`answer${i}`])
103
          votes.push(owner_description[`votes${i}`])
104
        }
105
 
106
        return (
107
          <SurveyForm
108
            active={owner_description.active}
109
            question={owner_description.question}
110
            answers={answers}
111
            votes={votes}
112
            time={owner_description.time_remaining}
113
            voteUrl={feed_vote_url}
114
            resultType={owner_description.result_type}
115
          />
116
        )
117
      }
118
 
119
      case 'video': {
120
        return (
121
          <>
122
            {parse(owner_description ?? '')}
123
            <video controls poster={owner_file_image_preview}>
124
              <source src={owner_file_video} />
125
            </video>
126
          </>
127
        )
128
      }
129
 
130
      case 'image': {
131
        return (
132
          <>
133
            {parse(owner_description ?? '')}
134
            <img src={owner_file_image} loading='lazy' />
135
          </>
136
        )
137
      }
138
 
139
      case 'document': {
140
        return (
141
          <>
142
            {parse(owner_description ?? '')}
143
            <a href={document} target='_blank' rel='noreferrer'>
144
              <img className='pdf' src='/images/extension/pdf.png' alt='pdf' />
145
            </a>
146
          </>
147
        )
148
      }
149
 
150
      case 'shared': {
151
        return (
152
          <>
153
            {parse(owner_description ?? '')}
154
            <Widget>
155
              <Widget.Header
156
                avatar={shared_image}
157
                title={shared_name}
158
                subheader={shared_time_elapse}
159
              />
160
 
161
              <Widget.Body>
162
                {renderContent({
163
                  owner_description,
164
                  owner_file_image_preview,
165
                  owner_file_video,
166
                  owner_file_image,
167
                  shared_name,
168
                  shared_image,
169
                  shared_time_elapse,
170
                  feed_content_type,
171
                  feed_vote_url
172
                })}
173
              </Widget.Body>
174
            </Widget>
175
          </>
176
        )
177
      }
178
 
179
      default: {
180
        return parse(owner_description ?? '')
181
      }
182
    }
183
  }
184
 
185
  return <>{renderContent(feed)}</>
186
}
187
 
2362 stevensc 188
export default ShorterPostPage