Middle Header: Fix missing pinned message when playing audio (#1534)
This commit is contained in:
parent
67dca172db
commit
dedefe87ca
@ -20,10 +20,6 @@
|
|||||||
--color-white: var(--color-background-own);
|
--color-white: var(--color-background-own);
|
||||||
}
|
}
|
||||||
|
|
||||||
.MiddleHeader & + .HeaderActions {
|
|
||||||
margin-left: 1.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.player-button {
|
.player-button {
|
||||||
&.smaller {
|
&.smaller {
|
||||||
width: 3rem;
|
width: 3rem;
|
||||||
@ -76,7 +72,7 @@
|
|||||||
|
|
||||||
&:hover .volume-slider-spacer, .volume-slider-spacer:hover {
|
&:hover .volume-slider-spacer, .volume-slider-spacer:hover {
|
||||||
visibility: visible;
|
visibility: visible;
|
||||||
}
|
}
|
||||||
|
|
||||||
.volume-slider {
|
.volume-slider {
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
@ -101,8 +97,8 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&:hover .volume-slider,
|
&:hover .volume-slider,
|
||||||
.volume-slider:hover,
|
.volume-slider:hover,
|
||||||
.volume-slider-spacer:hover + .volume-slider {
|
.volume-slider-spacer:hover + .volume-slider {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
visibility: visible;
|
visibility: visible;
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
left: 0;
|
left: 0;
|
||||||
right: 0;
|
right: 0;
|
||||||
height: 2.875rem;
|
height: 2.875rem;
|
||||||
box-shadow: 0 2px 2px var(--color-light-shadow);
|
box-shadow: 0 .125rem .125rem var(--color-light-shadow);
|
||||||
|
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row-reverse;
|
flex-direction: row-reverse;
|
||||||
@ -39,10 +39,9 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.AudioPlayer {
|
.AudioPlayer {
|
||||||
height: 3.25rem;
|
|
||||||
|
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
padding: 0.375rem 0.5rem;
|
margin-top: 0;
|
||||||
|
padding: 0.25rem 0.5rem;
|
||||||
|
|
||||||
&-content {
|
&-content {
|
||||||
padding: 0 0.5rem;
|
padding: 0 0.5rem;
|
||||||
@ -50,7 +49,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
> .Button {
|
> .Button {
|
||||||
margin: 0;
|
margin: -.0625rem 0 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
> .player-close {
|
> .player-close {
|
||||||
@ -72,6 +71,10 @@
|
|||||||
max-width: none;
|
max-width: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.HeaderPinnedMessage-wrapper.full-width {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.MiddleHeader {
|
.MiddleHeader {
|
||||||
@ -150,6 +153,10 @@
|
|||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
body.animation-level-0 & .HeaderPinnedMessage-wrapper {
|
||||||
|
transition: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
.header-tools {
|
.header-tools {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
@ -159,7 +166,6 @@
|
|||||||
|
|
||||||
body.animation-level-0 & {
|
body.animation-level-0 & {
|
||||||
&,
|
&,
|
||||||
.HeaderPinnedMessage-wrapper,
|
|
||||||
.AudioPlayer,
|
.AudioPlayer,
|
||||||
.HeaderActions {
|
.HeaderActions {
|
||||||
transition: none !important;
|
transition: none !important;
|
||||||
@ -193,39 +199,32 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
@media (min-width: 1276px) and (max-width: 1439px) {
|
@media (min-width: 1276px) and (max-width: 1439px) {
|
||||||
&:not(.tools-stacked) .header-tools {
|
&:not(.tools-stacked) .HeaderPinnedMessage-wrapper,
|
||||||
.HeaderPinnedMessage-wrapper,
|
&:not(.tools-stacked) .AudioPlayer {
|
||||||
.AudioPlayer {
|
opacity: 1;
|
||||||
opacity: 1;
|
|
||||||
|
|
||||||
#Main.right-column-open & {
|
#Main.right-column-open & {
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&.tools-stacked .header-tools {
|
&.tools-stacked .AudioPlayer {
|
||||||
@include mobile-header-styles();
|
@include mobile-header-styles();
|
||||||
|
|
||||||
@media (min-width: 1150px) {
|
@media (min-width: 1150px) {
|
||||||
#Main.right-column-open & {
|
#Main.right-column-open & {
|
||||||
.HeaderPinnedMessage-wrapper,
|
padding-right: calc(0.5rem + var(--right-column-width));
|
||||||
.AudioPlayer {
|
|
||||||
padding-right: calc(0.5rem + var(--right-column-width));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&.tools-stacked.animated .header-tools {
|
&.tools-stacked.animated .HeaderPinnedMessage-wrapper,
|
||||||
.HeaderPinnedMessage-wrapper,
|
&.tools-stacked.animated .AudioPlayer {
|
||||||
.AudioPlayer {
|
animation: fade-in var(--layer-transition) forwards;
|
||||||
animation: fade-in var(--layer-transition) forwards;
|
|
||||||
|
|
||||||
body.animation-level-0 & {
|
body.animation-level-0 & {
|
||||||
animation: none;
|
animation: none;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -329,6 +328,7 @@
|
|||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
cursor: default;
|
cursor: default;
|
||||||
flex-direction: row-reverse;
|
flex-direction: row-reverse;
|
||||||
|
background: var(--color-background);
|
||||||
|
|
||||||
body.animation-level-1 & {
|
body.animation-level-1 & {
|
||||||
.ripple-container {
|
.ripple-container {
|
||||||
@ -336,6 +336,16 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1276px) {
|
||||||
|
transform: translate3d(0, 0, 0);
|
||||||
|
transition: transform var(--layer-transition);
|
||||||
|
|
||||||
|
#Main.right-column-open & {
|
||||||
|
transform: translate3d(calc(var(--right-column-width) * -1), 0, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
.HeaderPinnedMessage {
|
.HeaderPinnedMessage {
|
||||||
min-width: 16rem;
|
min-width: 16rem;
|
||||||
}
|
}
|
||||||
@ -343,6 +353,48 @@
|
|||||||
> .Button {
|
> .Button {
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&.full-width {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
top: 100%;
|
||||||
|
background: var(--color-background);
|
||||||
|
padding: .25rem .8125rem .25rem 1rem;
|
||||||
|
box-shadow: 0 .125rem .125rem var(--color-light-shadow);
|
||||||
|
transform: translate3d(0, 0, 0);
|
||||||
|
transition: transform var(--layer-transition);
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
content: "";
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
top: -.1875rem;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
height: .125rem;
|
||||||
|
box-shadow: 0 .125rem .125rem var(--color-light-shadow);
|
||||||
|
}
|
||||||
|
|
||||||
|
.HeaderPinnedMessage {
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
flex: 1;
|
||||||
|
|
||||||
|
.message-text {
|
||||||
|
max-width: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1276px) {
|
||||||
|
transform: translate3d(0, 0, 0);
|
||||||
|
transition: transform var(--layer-transition);
|
||||||
|
|
||||||
|
#Main.right-column-open & {
|
||||||
|
padding-left: calc(var(--right-column-width) + 1rem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.HeaderPinnedMessage {
|
.HeaderPinnedMessage {
|
||||||
@ -483,13 +535,6 @@
|
|||||||
@media (max-width: 600px) {
|
@media (max-width: 600px) {
|
||||||
@include mobile-header-styles();
|
@include mobile-header-styles();
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (min-width: 925px) and (max-width: 1149.9px) {
|
|
||||||
.HeaderPinnedMessage-wrapper,
|
|
||||||
.AudioPlayer {
|
|
||||||
position: absolute;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes fade-in {
|
@keyframes fade-in {
|
||||||
|
|||||||
@ -261,7 +261,7 @@ const MiddleHeader: FC<OwnProps & StateProps & DispatchProps> = ({
|
|||||||
const {
|
const {
|
||||||
shouldRender: shouldRenderPinnedMessage,
|
shouldRender: shouldRenderPinnedMessage,
|
||||||
transitionClassNames: pinnedMessageClassNames,
|
transitionClassNames: pinnedMessageClassNames,
|
||||||
} = useShowTransition(pinnedMessage && !shouldRenderAudioPlayer);
|
} = useShowTransition(Boolean(pinnedMessage));
|
||||||
|
|
||||||
const renderingPinnedMessage = useCurrentOrPrev(pinnedMessage, true);
|
const renderingPinnedMessage = useCurrentOrPrev(pinnedMessage, true);
|
||||||
const renderingPinnedMessagesCount = useCurrentOrPrev(pinnedMessagesCount, true);
|
const renderingPinnedMessagesCount = useCurrentOrPrev(pinnedMessagesCount, true);
|
||||||
@ -380,7 +380,7 @@ const MiddleHeader: FC<OwnProps & StateProps & DispatchProps> = ({
|
|||||||
size="smaller"
|
size="smaller"
|
||||||
color="translucent"
|
color="translucent"
|
||||||
onClick={handleBackClick}
|
onClick={handleBackClick}
|
||||||
ariaLabel={asClose ? 'Close' : 'Back'}
|
ariaLabel={lang(asClose ? 'Close' : 'Back')}
|
||||||
>
|
>
|
||||||
<div className={buildClassName('animated-close-icon', !asClose && 'state-back')} />
|
<div className={buildClassName('animated-close-icon', !asClose && 'state-back')} />
|
||||||
</Button>
|
</Button>
|
||||||
@ -393,6 +393,8 @@ const MiddleHeader: FC<OwnProps & StateProps & DispatchProps> = ({
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const isAudioPlayerRendered = Boolean(shouldRenderAudioPlayer && renderingAudioMessage);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="MiddleHeader" ref={componentRef}>
|
<div className="MiddleHeader" ref={componentRef}>
|
||||||
<Transition
|
<Transition
|
||||||
@ -402,23 +404,23 @@ const MiddleHeader: FC<OwnProps & StateProps & DispatchProps> = ({
|
|||||||
{renderInfo}
|
{renderInfo}
|
||||||
</Transition>
|
</Transition>
|
||||||
|
|
||||||
|
{shouldRenderPinnedMessage && renderingPinnedMessage && (
|
||||||
|
<HeaderPinnedMessage
|
||||||
|
key={chatId}
|
||||||
|
message={renderingPinnedMessage}
|
||||||
|
count={renderingPinnedMessagesCount || 0}
|
||||||
|
index={pinnedMessageIndex}
|
||||||
|
customTitle={renderingPinnedMessageTitle}
|
||||||
|
className={buildClassName(pinnedMessageClassNames, isAudioPlayerRendered && 'full-width')}
|
||||||
|
onUnpinMessage={renderingCanUnpin ? handleUnpinMessage : undefined}
|
||||||
|
onClick={handlePinnedMessageClick}
|
||||||
|
onAllPinnedClick={handleAllPinnedClick}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
<div className="header-tools">
|
<div className="header-tools">
|
||||||
{shouldRenderPinnedMessage && renderingPinnedMessage && !shouldRenderAudioPlayer && (
|
{isAudioPlayerRendered && (
|
||||||
<HeaderPinnedMessage
|
|
||||||
key={chatId}
|
|
||||||
message={renderingPinnedMessage}
|
|
||||||
count={renderingPinnedMessagesCount || 0}
|
|
||||||
index={pinnedMessageIndex}
|
|
||||||
customTitle={renderingPinnedMessageTitle}
|
|
||||||
className={pinnedMessageClassNames}
|
|
||||||
onUnpinMessage={renderingCanUnpin ? handleUnpinMessage : undefined}
|
|
||||||
onClick={handlePinnedMessageClick}
|
|
||||||
onAllPinnedClick={handleAllPinnedClick}
|
|
||||||
/>
|
|
||||||
)}
|
|
||||||
{shouldRenderAudioPlayer && renderingAudioMessage && (
|
|
||||||
<AudioPlayer
|
<AudioPlayer
|
||||||
key={getMessageKey(renderingAudioMessage)}
|
key={getMessageKey(renderingAudioMessage!)}
|
||||||
message={renderingAudioMessage!}
|
message={renderingAudioMessage!}
|
||||||
className={audioPlayerClassNames}
|
className={audioPlayerClassNames}
|
||||||
/>
|
/>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user