Skip to content

Commit 8b9d559

Browse files
authored
Merge pull request #6696 from nursoltan-s/timeline-wall-final-fix
Timeline wall final fix
2 parents f382cb3 + c22b138 commit 8b9d559

File tree

11 files changed

+93
-46
lines changed

11 files changed

+93
-46
lines changed

src/shared/components/GUIKit/PhotoVideoItem/styles.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
}
1919

2020
.img-container {
21-
max-height: 100%;
21+
height: 100%;
2222
width: 100%;
2323
object-fit: cover;
2424
}

src/shared/components/GUIKit/PhotoVideoPicker/index.jsx

Lines changed: 51 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,15 @@ function PhotoVideoPicker({
2121
inputOptions,
2222
file,
2323
}) {
24+
const renderUpload = () => (
25+
<React.Fragment>
26+
<p styleName="infoText hide-mobile">
27+
{infoText}
28+
</p>
29+
<button styleName="btn hide-mobile" type="button">{btnText}</button>
30+
</React.Fragment>
31+
);
32+
2433
return (
2534
<React.Fragment>
2635
<Dropzone
@@ -66,7 +75,7 @@ function PhotoVideoPicker({
6675
<React.Fragment>
6776

6877
<section
69-
styleName={cn('container', { hasError: !!errorMsg, hasFile: !!file && !!file.length })}
78+
styleName={cn('container', { hasError: !!errorMsg, hasFile: !!file && !!file.length, 'hide-mobile': file.length === 3 })}
7079
{...getRootProps()}
7180
className={cn(className, getRootProps().className)}
7281
>
@@ -76,44 +85,48 @@ function PhotoVideoPicker({
7685
})}
7786
/>
7887
{
79-
file && file.length ? (
80-
<div styleName="photo-list hide-mobile">
81-
{file.map((fileInfo, index) => (
82-
<div
83-
styleName="photo-item"
84-
key={fileInfo.name}
85-
><PhotoVideoItem notSelectable file={fileInfo} />
86-
<button
87-
type="button"
88-
styleName="btn-delete"
89-
onClick={(e) => {
90-
e.stopPropagation();
91-
e.preventDefault();
92-
const newFile = [...file];
93-
newFile.splice(index, 1);
94-
onFilePick(newFile);
95-
}}
96-
><BtnDeletePhoto />
97-
</button>
98-
</div>
99-
))}
100-
</div>
101-
) : (
102-
<React.Fragment>
103-
<p styleName="infoText hide-mobile">
104-
{infoText}
105-
</p>
106-
<button styleName="btn hide-mobile" type="button">{btnText}</button>
107-
</React.Fragment>
108-
)
109-
}
88+
file && file.length ? (
89+
<div styleName="photo-list hide-mobile">
90+
{file.map((fileInfo, index) => (
91+
<div
92+
styleName="photo-item"
93+
key={fileInfo.name}
94+
><PhotoVideoItem notSelectable file={fileInfo} />
95+
<button
96+
type="button"
97+
styleName="btn-delete"
98+
onClick={(e) => {
99+
e.stopPropagation();
100+
e.preventDefault();
101+
const newFile = [...file];
102+
newFile.splice(index, 1);
103+
onFilePick(newFile);
104+
}}
105+
><BtnDeletePhoto />
106+
</button>
107+
</div>
108+
))}
109+
{
110+
file.length < 3 && (
111+
<div styleName="photo-item browse-button">
112+
{renderUpload()}
113+
</div>
114+
)
115+
}
116+
</div>
117+
) : renderUpload()
118+
}
110119

111-
<React.Fragment>
112-
<p styleName="infoText hide-desktop show-mobile">
113-
{infoTextMobile}
114-
</p>
115-
<button styleName="btn hide-desktop show-mobile" type="button">{btnText}</button>
116-
</React.Fragment>
120+
{
121+
(file || []).length < 3 && (
122+
<React.Fragment>
123+
<p styleName="infoText hide-desktop show-mobile">
124+
{infoTextMobile}
125+
</p>
126+
<button styleName="btn hide-desktop show-mobile" type="button">{btnText}</button>
127+
</React.Fragment>
128+
)
129+
}
117130
</section>
118131

119132
</React.Fragment>

src/shared/components/GUIKit/PhotoVideoPicker/styles.scss

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,13 @@
103103
justify-content: center;
104104
position: relative;
105105

106+
&.browse-button {
107+
display: flex;
108+
flex-direction: column;
109+
width: 100%;
110+
padding: 0 10px;
111+
}
112+
106113
@media (max-width: 768px) {
107114
height: 100px;
108115
border: none;

src/shared/containers/timeline-wall/index.jsx

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ function TimelineWallContainer(props) {
106106
const deleteEvent = (id) => {
107107
deleteEventById(authToken, id, () => {
108108
getPendingApprovals(authToken);
109+
getTimelineEvents();
109110
});
110111
};
111112

@@ -115,9 +116,15 @@ function TimelineWallContainer(props) {
115116
});
116117
};
117118

118-
const removeEvent = (id, body) => {
119-
rejectEventById(authToken, id, body, () => {
119+
const removeEvent = (event = {}, body) => {
120+
const rejectBody = body;
121+
const id = event.id ? event.id : event;
122+
if (!body.reason) {
123+
rejectBody.reason = 'Deleted by admin.';
124+
}
125+
rejectEventById(authToken, id, rejectBody, () => {
120126
getPendingApprovals(authToken);
127+
getTimelineEvents();
121128
});
122129
};
123130

@@ -188,6 +195,7 @@ function TimelineWallContainer(props) {
188195
getAvatar={getAvatar}
189196
userAvatars={userAvatars}
190197
uploading={uploading}
198+
deleteEvent={deleteEvent}
191199
/>
192200
<React.Fragment>
193201
{

src/shared/containers/timeline-wall/pending-approvals/approval-item/index.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ function ApprovalItem({
6767
<PhotoVideoItem
6868
key={photo.id}
6969
styleName="photo-item"
70-
url={photo.url}
70+
url={photo.previewUrl || photo.url}
7171
videoThumnailUrl={photo.videoThumnailUrl}
7272
isUrlPhoto={!photo.videoThumnailUrl}
7373
onClick={() => {

src/shared/containers/timeline-wall/pending-approvals/approval-item/styles.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@
100100
display: flex;
101101
justify-content: space-between;
102102
align-items: center;
103-
margin-top: 16px;
103+
margin-top: 36px;
104104

105105
.btn-trash {
106106
border: none;

src/shared/containers/timeline-wall/timeline-events/add-event/index.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ function AddEvents({
149149
files: files.slice(0, 3),
150150
});
151151
}}
152-
infoText={'Drag & drop your photo or video here\nYou can upload only up to 3 photos/videos'}
152+
infoText={'Drag & drop your photo or video here\nYou can upload up to 3 photos/videos'}
153153
infoTextMobile="Drag & drop your photo or video here"
154154
btnText="BROWSE"
155155
options={{

src/shared/containers/timeline-wall/timeline-events/events/event-item/index.jsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import './styles.scss';
1616
import { DEFAULT_AVATAR_URL } from '../../../../../utils/url';
1717

1818
function EventItem({
19-
className, isLeft, eventItem, removeEvent, isAdmin, userAvatars,
19+
className, isLeft, eventItem, removeEvent, deleteEvent, isAdmin, userAvatars,
2020
}) {
2121
const [isExpanded, setIsExpanded] = useState(false);
2222
const [showModalPhoto, setShowModalPhoto] = useState(false);
@@ -112,13 +112,15 @@ function EventItem({
112112

113113
{showModalDelete ? (
114114
<ModalDeleteConfirmation
115+
id={eventItem.id}
115116
eventItem={showModalDelete}
116117
onClose={(result) => {
117118
if (result === true) {
118119
removeEvent(showModalDelete);
119120
}
120121
setShowModalDelete(false);
121122
}}
123+
deleteEvent={deleteEvent}
122124
/>
123125
) : null}
124126
</div>
@@ -150,6 +152,7 @@ EventItem.propTypes = {
150152
removeEvent: PT.func,
151153
isAdmin: PT.bool,
152154
userAvatars: PT.shape(),
155+
deleteEvent: PT.func.isRequired,
153156
};
154157

155158
export default EventItem;

src/shared/containers/timeline-wall/timeline-events/events/index.jsx

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import EventItem from './event-item';
66
const colors = ['green', 'red', 'purple'];
77

88
function Events({
9-
events, removeEvent, isAuthenticated, getAvatar, userAvatars,
9+
events, removeEvent, isAuthenticated, getAvatar, userAvatars, isAdmin, deleteEvent,
1010
}) {
1111
const [leftItems, setLeftItems] = useState([]);
1212
const [rightItems, setRightItems] = useState([]);
@@ -65,6 +65,8 @@ function Events({
6565
}}
6666
getAvatar={getAvatar}
6767
userAvatars={userAvatars}
68+
isAdmin={isAdmin}
69+
deleteEvent={deleteEvent}
6870
/>
6971
))}
7072
</div>
@@ -80,6 +82,8 @@ function Events({
8082
}}
8183
getAvatar={getAvatar}
8284
userAvatars={userAvatars}
85+
isAdmin={isAdmin}
86+
deleteEvent={deleteEvent}
8387
/>
8488
))}
8589
</div>
@@ -95,6 +99,8 @@ function Events({
9599
}}
96100
getAvatar={getAvatar}
97101
userAvatars={userAvatars}
102+
isAdmin={isAdmin}
103+
deleteEvent={deleteEvent}
98104
/>
99105
))}
100106
</div>
@@ -110,6 +116,7 @@ Events.defaultProps = {
110116
removeEvent: () => { },
111117
isAuthenticated: false,
112118
userAvatars: {},
119+
isAdmin: false,
113120
};
114121

115122
/**
@@ -121,6 +128,8 @@ Events.propTypes = {
121128
isAuthenticated: PT.bool,
122129
getAvatar: PT.func.isRequired,
123130
userAvatars: PT.shape(),
131+
isAdmin: PT.bool,
132+
deleteEvent: PT.func.isRequired,
124133
};
125134

126135
export default Events;

src/shared/containers/timeline-wall/timeline-events/index.jsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ function TimelineEvents({
2222
userAvatars,
2323
onDoneAddEvent,
2424
uploading,
25+
deleteEvent,
2526
}) {
2627
return (
2728
<div className={className} styleName="container">
@@ -44,6 +45,7 @@ function TimelineEvents({
4445
}}
4546
getAvatar={getAvatar}
4647
userAvatars={userAvatars}
48+
deleteEvent={deleteEvent}
4749
/>
4850
)
4951
: null}
@@ -112,6 +114,7 @@ TimelineEvents.propTypes = {
112114
onDoneAddEvent: PT.func.isRequired,
113115
userAvatars: PT.shape(),
114116
uploading: PT.bool,
117+
deleteEvent: PT.func.isRequired,
115118
};
116119

117120
export default TimelineEvents;

src/shared/containers/timeline-wall/timeline-events/right-filter/styles.scss

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,10 @@
5252
width: 120px;
5353
border-radius: 8px;
5454
padding: 10px 0;
55+
position: fixed;
56+
right: 0;
57+
max-height: 70%;
58+
overflow: scroll;
5559

5660
@media (max-width: 768px) {
5761
border-radius: 0;

0 commit comments

Comments
 (0)