]> cat aescling's git repositories - mastodon.git/commitdiff
Add local setting for pop-in player position
authorThibaut Girka <thib@sitedethib.com>
Mon, 26 Oct 2020 19:45:25 +0000 (20:45 +0100)
committerThibaut Girka <thib@sitedethib.com>
Mon, 26 Oct 2020 19:51:28 +0000 (20:51 +0100)
app/javascript/flavours/glitch/features/local_settings/page/index.js
app/javascript/flavours/glitch/features/picture_in_picture/index.js
app/javascript/flavours/glitch/reducers/local_settings.js
app/javascript/flavours/glitch/styles/components/status.scss

index bce45901e2201231dab2382af31da3261db49799..45d10d154edf0dbc89a6b1040e06f45e5ccd4e40 100644 (file)
@@ -28,6 +28,8 @@ const messages = defineMessages({
   rewrite_mentions_no: { id: 'settings.rewrite_mentions_no', defaultMessage: 'Do not rewrite mentions' },
   rewrite_mentions_acct: { id: 'settings.rewrite_mentions_acct', defaultMessage: 'Rewrite with username and domain (when the account is remote)' },
   rewrite_mentions_username: { id: 'settings.rewrite_mentions_username', defaultMessage:  'Rewrite with username' },
+  pop_in_left: { id: 'settings.pop_in_left', defaultMessage: 'Left' },
+  pop_in_right: { id: 'settings.pop_in_right', defaultMessage:  'Right' },
 });
 
 export default @injectIntl
@@ -384,7 +386,7 @@ class LocalSettingsPage extends React.PureComponent {
         </section>
       </div>
     ),
-    ({ onChange, settings }) => (
+    ({ intl, onChange, settings }) => (
       <div className='glitch local-settings__page media'>
         <h1><FormattedMessage id='settings.media' defaultMessage='Media' /></h1>
         <LocalSettingsPageItem
@@ -428,6 +430,19 @@ class LocalSettingsPage extends React.PureComponent {
         >
           <FormattedMessage id='settings.pop_in_player' defaultMessage='Enable pop-in player' />
         </LocalSettingsPageItem>
+        <LocalSettingsPageItem
+          settings={settings}
+          item={['media', 'pop_in_position']}
+          id='mastodon-settings--pop-in-position'
+          options={[
+            { value: 'left', message: intl.formatMessage(messages.pop_in_left) },
+            { value: 'right', message: intl.formatMessage(messages.pop_in_right) },
+          ]}
+          onChange={onChange}
+          dependsOn={[['media', 'pop_in_player']]}
+        >
+          <FormattedMessage id='settings.pop_in_position' defaultMessage='Pop-in player position:' />
+        </LocalSettingsPageItem>
       </div>
     ),
   ];
index 200f2fc7f16748172f6591e7c286aba9d71fb198..3e6a20faa8793e04a3562b40159c765277fde78c 100644 (file)
@@ -6,9 +6,11 @@ import Audio from 'flavours/glitch/features/audio';
 import { removePictureInPicture } from 'flavours/glitch/actions/picture_in_picture';
 import Header from './components/header';
 import Footer from './components/footer';
+import classNames from 'classnames';
 
 const mapStateToProps = state => ({
   ...state.get('picture_in_picture'),
+  left: state.getIn(['local_settings', 'media', 'pop_in_position']) === 'left',
 });
 
 export default @connect(mapStateToProps)
@@ -27,6 +29,7 @@ class PictureInPicture extends React.Component {
     foregroundColor: PropTypes.string,
     accentColor: PropTypes.string,
     dispatch: PropTypes.func.isRequired,
+    left: PropTypes.bool,
   };
 
   handleClose = () => {
@@ -35,7 +38,7 @@ class PictureInPicture extends React.Component {
   }
 
   render () {
-    const { type, src, currentTime, accountId, statusId } = this.props;
+    const { type, src, currentTime, accountId, statusId, left } = this.props;
 
     if (!currentTime) {
       return null;
@@ -72,7 +75,7 @@ class PictureInPicture extends React.Component {
     }
 
     return (
-      <div className='picture-in-picture'>
+      <div className={classNames('picture-in-picture', { left })}>
         <Header accountId={accountId} statusId={statusId} onClose={this.handleClose} />
 
         {player}
index e4df22b9f6d14072faf8225b84f283955b98be0b..c115cad6bac15c4c0f96c3fb40938dea365d7607 100644 (file)
@@ -50,6 +50,7 @@ const initialState = ImmutableMap({
     fullwidth        : true,
     reveal_behind_cw : false,
     pop_in_player    : true,
+    pop_in_position  : 'right',
   }),
   notifications : ImmutableMap({
     favicon_badge : false,
index 7ec377bada1760a05f52f0f20f78d5299691cd34..554ea8cd52f2ee6f5d433ddfe2c0c201c4c3ce87 100644 (file)
@@ -1066,6 +1066,11 @@ a.status-card.compact:hover {
   right: 20px;
   width: 300px;
 
+  &.left {
+    right: unset;
+    left: 20px;
+  }
+
   &__footer {
     border-radius: 0 0 4px 4px;
     background: lighten($ui-base-color, 4%);