Chats: mobile styling

loading-indicator-on-tls^2
Alex Gleason 2020-08-28 14:42:58 -05:00
rodzic 46323e088a
commit 572a1db9f7
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 7211D1F99744FBB7
3 zmienionych plików z 54 dodań i 10 usunięć

Wyświetl plik

@ -158,8 +158,6 @@ const LAYOUT = {
}, },
}; };
const shouldHideFAB = path => path.match(/^\/posts\/|^\/search|^\/getting-started|^\/chats/);
class SwitchingColumnsArea extends React.PureComponent { class SwitchingColumnsArea extends React.PureComponent {
static propTypes = { static propTypes = {
@ -577,6 +575,16 @@ class UI extends React.PureComponent {
this.props.dispatch(openModal('COMPOSE')); this.props.dispatch(openModal('COMPOSE'));
} }
shouldHideFAB = () => {
const path = this.context.router.history.location.pathname;
return path.match(/^\/posts\/|^\/search|^\/getting-started|^\/chats/);
}
isChatRoomLocation = () => {
const path = this.context.router.history.location.pathname;
return path.match(/^\/chats\/(.*)/);
}
render() { render() {
const { streamingUrl } = this.props; const { streamingUrl } = this.props;
const { draggingOver, mobile } = this.state; const { draggingOver, mobile } = this.state;
@ -602,11 +610,31 @@ class UI extends React.PureComponent {
goToRequests: this.handleHotkeyGoToRequests, goToRequests: this.handleHotkeyGoToRequests,
} : {}; } : {};
const floatingActionButton = shouldHideFAB(this.context.router.history.location.pathname) ? null : <button key='floating-action-button' onClick={this.handleOpenComposeModal} className='floating-action-button' aria-label={intl.formatMessage(messages.publish)}><Icon id='pencil' fixedWidth /></button>; const fabElem = (
<button
key='floating-action-button'
onClick={this.handleOpenComposeModal}
className='floating-action-button'
aria-label={intl.formatMessage(messages.publish)}
>
<Icon id='pencil' fixedWidth />
</button>
);
const floatingActionButton = this.shouldHideFAB() ? null : fabElem;
const classnames = classNames('ui', {
'is-composing': isComposing,
'ui--chatroom': this.isChatRoomLocation(),
});
const style = {
pointerEvents: dropdownMenuIsOpen ? 'none' : null,
};
return ( return (
<HotKeys keyMap={keyMap} handlers={handlers} ref={this.setHotkeysRef} attach={window} focused> <HotKeys keyMap={keyMap} handlers={handlers} ref={this.setHotkeysRef} attach={window} focused>
<div className={classNames('ui', { 'is-composing': isComposing })} ref={this.setRef} style={{ pointerEvents: dropdownMenuIsOpen ? 'none' : null }}> <div className={classnames} ref={this.setRef} style={style}>
<TabsBar /> <TabsBar />
<SwitchingColumnsArea location={location} onLayoutChange={this.handleLayoutChange}> <SwitchingColumnsArea location={location} onLayoutChange={this.handleLayoutChange}>
{children} {children}

Wyświetl plik

@ -3,7 +3,7 @@ import {
ACCOUNTS_IMPORT, ACCOUNTS_IMPORT,
ACCOUNT_FETCH_FAIL_FOR_USERNAME_LOOKUP, ACCOUNT_FETCH_FAIL_FOR_USERNAME_LOOKUP,
} from '../actions/importer'; } from '../actions/importer';
import { CHATS_FETCH_SUCCESS } from 'soapbox/actions/chats'; import { CHATS_FETCH_SUCCESS, CHAT_FETCH_SUCCESS } from 'soapbox/actions/chats';
import { STREAMING_CHAT_UPDATE } from 'soapbox/actions/streaming'; import { STREAMING_CHAT_UPDATE } from 'soapbox/actions/streaming';
import { normalizeAccount as normalizeAccount2 } from 'soapbox/actions/importer/normalizer'; import { normalizeAccount as normalizeAccount2 } from 'soapbox/actions/importer/normalizer';
import { Map as ImmutableMap, fromJS } from 'immutable'; import { Map as ImmutableMap, fromJS } from 'immutable';
@ -48,6 +48,7 @@ export default function accounts(state = initialState, action) {
})); }));
case CHATS_FETCH_SUCCESS: case CHATS_FETCH_SUCCESS:
return importAccountsFromChats(state, action.chats); return importAccountsFromChats(state, action.chats);
case CHAT_FETCH_SUCCESS:
case STREAMING_CHAT_UPDATE: case STREAMING_CHAT_UPDATE:
return importAccountsFromChats(state, [action.chat]); return importAccountsFromChats(state, [action.chat]);
default: default:

Wyświetl plik

@ -176,9 +176,24 @@
} }
} }
.column .chat-box { .ui--chatroom {
max-height: calc(100vh - 125px); padding-bottom: 0;
overflow: hidden;
display: flex; .columns-area__panels__main .columns-area {
flex-direction: column; height: calc(100vh - 100px);
box-sizing: border-box;
overflow: hidden;
@media(max-width: 630px) {
height: calc(100vh - 50px);
}
}
.page {
.chat-box {
display: flex;
flex-direction: column;
overflow: hidden;
}
}
} }