Skip to content

Commit

Permalink
Merge pull request #9021 from metehanozyurt/issue-8842
Browse files Browse the repository at this point in the history
fixed: Web - Desktop Attachments - Cannot attach a photo when the NEW ( green plus) button is pressed
  • Loading branch information
Luke9389 authored Jun 7, 2022
2 parents 284e0ba + 1584251 commit 1fc4089
Show file tree
Hide file tree
Showing 4 changed files with 148 additions and 47 deletions.
77 changes: 30 additions & 47 deletions src/pages/home/sidebar/SidebarScreen.js → ...idebar/SidebarScreen/BaseSidebarScreen.js
100755 → 100644
Original file line number Diff line number Diff line change
Expand Up @@ -2,44 +2,40 @@ import lodashGet from 'lodash/get';
import _ from 'underscore';
import React, {Component} from 'react';
import {View} from 'react-native';
import {withOnyx} from 'react-native-onyx';
import PropTypes from 'prop-types';
import {withNavigation} from '@react-navigation/compat';
import styles from '../../../styles/styles';
import SidebarLinks from './SidebarLinks';
import PopoverMenu from '../../../components/PopoverMenu';
import FAB from '../../../components/FAB';
import ScreenWrapper from '../../../components/ScreenWrapper';
import Navigation from '../../../libs/Navigation/Navigation';
import ROUTES from '../../../ROUTES';
import Timing from '../../../libs/actions/Timing';
import withWindowDimensions, {windowDimensionsPropTypes} from '../../../components/withWindowDimensions';
import CONST from '../../../CONST';
import withLocalize, {withLocalizePropTypes} from '../../../components/withLocalize';
import compose from '../../../libs/compose';
import * as Expensicons from '../../../components/Icon/Expensicons';
import Permissions from '../../../libs/Permissions';
import ONYXKEYS from '../../../ONYXKEYS';
import * as Policy from '../../../libs/actions/Policy';
import Performance from '../../../libs/Performance';
import * as Welcome from '../../../libs/actions/Welcome';
import styles from '../../../../styles/styles';
import SidebarLinks from '../SidebarLinks';
import PopoverMenu from '../../../../components/PopoverMenu';
import FAB from '../../../../components/FAB';
import ScreenWrapper from '../../../../components/ScreenWrapper';
import Navigation from '../../../../libs/Navigation/Navigation';
import ROUTES from '../../../../ROUTES';
import Timing from '../../../../libs/actions/Timing';
import CONST from '../../../../CONST';
import * as Expensicons from '../../../../components/Icon/Expensicons';
import Permissions from '../../../../libs/Permissions';
import * as Policy from '../../../../libs/actions/Policy';
import Performance from '../../../../libs/Performance';
import * as Welcome from '../../../../libs/actions/Welcome';
import {sidebarPropTypes, sidebarDefaultProps} from './sidebarPropTypes';

const propTypes = {
/* Beta features list */
betas: PropTypes.arrayOf(PropTypes.string).isRequired,

/* Is workspace is being created by the user? */
isCreatingWorkspace: PropTypes.bool,
/* Callback function when the menu is shown */
onShowCreateMenu: PropTypes.func,

...windowDimensionsPropTypes,
/* Callback function before the menu is hidden */
onHideCreateMenu: PropTypes.func,

...withLocalizePropTypes,
...sidebarPropTypes,
};
const defaultProps = {
isCreatingWorkspace: false,
onHideCreateMenu: () => {},
onShowCreateMenu: () => {},
...sidebarDefaultProps,
};

class SidebarScreen extends Component {
class BaseSidebarScreen extends Component {
constructor(props) {
super(props);

Expand Down Expand Up @@ -68,6 +64,7 @@ class SidebarScreen extends Component {
this.setState({
isCreateMenuActive: true,
});
this.props.onShowCreateMenu();
}

/**
Expand All @@ -83,6 +80,7 @@ class SidebarScreen extends Component {
* Selecting an item on CreateMenu or closing it by clicking outside of the modal component
*/
hideCreateMenu() {
this.props.onHideCreateMenu();
this.setState({
isCreateMenuActive: false,
});
Expand Down Expand Up @@ -184,22 +182,7 @@ class SidebarScreen extends Component {
}
}

SidebarScreen.propTypes = propTypes;
SidebarScreen.defaultProps = defaultProps;

export default compose(
withNavigation,
withLocalize,
withWindowDimensions,
withOnyx({
allPolicies: {
key: ONYXKEYS.COLLECTION.POLICY,
},
betas: {
key: ONYXKEYS.BETAS,
},
isCreatingWorkspace: {
key: ONYXKEYS.IS_CREATING_WORKSPACE,
},
}),
)(SidebarScreen);
BaseSidebarScreen.propTypes = propTypes;
BaseSidebarScreen.defaultProps = defaultProps;

export default BaseSidebarScreen;
57 changes: 57 additions & 0 deletions src/pages/home/sidebar/SidebarScreen/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
import React from 'react';
import {withNavigation} from '@react-navigation/compat';
import {withOnyx} from 'react-native-onyx';
import compose from '../../../../libs/compose';
import withWindowDimensions from '../../../../components/withWindowDimensions';
import withLocalize from '../../../../components/withLocalize';
import ONYXKEYS from '../../../../ONYXKEYS';
import {sidebarPropTypes, sidebarDefaultProps} from './sidebarPropTypes';
import BaseSidebarScreen from './BaseSidebarScreen';

const SidebarScreen = (props) => {
let baseSidebarScreen = null;

/**
* Method create event listener
*/
const createDragoverListener = () => {
document.addEventListener('dragover', baseSidebarScreen.hideCreateMenu);
};

/**
* Method remove event listener.
*/
const removeDragoverListener = () => {
document.removeEventListener('dragover', baseSidebarScreen.hideCreateMenu);
};
return (
<BaseSidebarScreen
ref={el => baseSidebarScreen = el}
onShowCreateMenu={createDragoverListener}
onHideCreateMenu={removeDragoverListener}
// eslint-disable-next-line react/jsx-props-no-spreading
{...props}
/>
);
};

SidebarScreen.propTypes = sidebarPropTypes;
SidebarScreen.defaultProps = sidebarDefaultProps;
SidebarScreen.displayName = 'SidebarScreen';

export default compose(
withNavigation,
withLocalize,
withWindowDimensions,
withOnyx({
allPolicies: {
key: ONYXKEYS.COLLECTION.POLICY,
},
betas: {
key: ONYXKEYS.BETAS,
},
isCreatingWorkspace: {
key: ONYXKEYS.IS_CREATING_WORKSPACE,
},
}),
)(SidebarScreen);
33 changes: 33 additions & 0 deletions src/pages/home/sidebar/SidebarScreen/index.native.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import React from 'react';
import {withNavigation} from '@react-navigation/compat';
import {withOnyx} from 'react-native-onyx';
import compose from '../../../../libs/compose';
import withWindowDimensions from '../../../../components/withWindowDimensions';
import withLocalize from '../../../../components/withLocalize';
import ONYXKEYS from '../../../../ONYXKEYS';
import {sidebarPropTypes, sidebarDefaultProps} from './sidebarPropTypes';
import BaseSidebarScreen from './BaseSidebarScreen';

// eslint-disable-next-line react/jsx-props-no-spreading
const SidebarScreen = props => <BaseSidebarScreen {...props} />;

SidebarScreen.propTypes = sidebarPropTypes;
SidebarScreen.defaultProps = sidebarDefaultProps;
SidebarScreen.displayName = 'SidebarScreen';

export default compose(
withNavigation,
withLocalize,
withWindowDimensions,
withOnyx({
allPolicies: {
key: ONYXKEYS.COLLECTION.POLICY,
},
betas: {
key: ONYXKEYS.BETAS,
},
isCreatingWorkspace: {
key: ONYXKEYS.IS_CREATING_WORKSPACE,
},
}),
)(SidebarScreen);
28 changes: 28 additions & 0 deletions src/pages/home/sidebar/SidebarScreen/sidebarPropTypes.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import PropTypes from 'prop-types';
import {windowDimensionsPropTypes} from '../../../../components/withWindowDimensions';
import {withLocalizePropTypes} from '../../../../components/withLocalize';

const sidebarPropTypes = {

/** The list of policies the user has access to. */
allPolicies: PropTypes.shape({
/** The policy name */
name: PropTypes.string,
}).isRequired,

/* Beta features list */
betas: PropTypes.arrayOf(PropTypes.string).isRequired,

/* Is workspace is being created by the user? */
isCreatingWorkspace: PropTypes.bool,

...windowDimensionsPropTypes,

...withLocalizePropTypes,
};

const sidebarDefaultProps = {
isCreatingWorkspace: false,
};

export {sidebarPropTypes, sidebarDefaultProps};

0 comments on commit 1fc4089

Please sign in to comment.