Proyectos de Subversion LeadersLinked - SPA

Rev

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