diff --git a/.gitignore b/.gitignore index 4919ddc1fdc9..0e452abecf05 100644 --- a/.gitignore +++ b/.gitignore @@ -84,6 +84,7 @@ storybook-static # GitHub GPG Keys .github/workflows/OSBotify-private-key.asc +.gitconfig *.asc # Jest coverage report diff --git a/src/CONST.js b/src/CONST.js index 619a28cc9f0e..fa8d1d651688 100755 --- a/src/CONST.js +++ b/src/CONST.js @@ -278,8 +278,8 @@ const CONST = { }, type: KEYBOARD_SHORTCUT_NAVIGATION_TYPE, }, - NEW_GROUP: { - descriptionKey: 'newGroup', + NEW_CHAT: { + descriptionKey: 'newChat', shortcutKey: 'K', modifiers: ['CTRL', 'SHIFT'], trigger: { @@ -2528,6 +2528,9 @@ const CONST = { RECEIPT_TAB_ID: 'ReceiptTab', MANUAL: 'manual', SCAN: 'scan', + NEW_CHAT_TAB_ID: 'NewChatTab', + NEW_CHAT: 'chat', + NEW_ROOM: 'room', DISTANCE: 'distance', }, STATUS_TEXT_MAX_LENGTH: 100, diff --git a/src/ROUTES.js b/src/ROUTES.js index 90d08e5b13c8..daa1532b74f4 100644 --- a/src/ROUTES.js +++ b/src/ROUTES.js @@ -7,7 +7,6 @@ import * as Url from './libs/Url'; const REPORT = 'r'; const IOU_REQUEST = 'request/new'; -const IOU_BILL = 'split/new'; const IOU_SEND = 'send/new'; const NEW_TASK = 'new/task'; const SETTINGS_PERSONAL_DETAILS = 'settings/profile/personal-details'; @@ -65,8 +64,9 @@ export default { SETTINGS_2FA_SUCCESS: 'settings/security/two-factor-auth/success', SETTINGS_STATUS, SETTINGS_STATUS_SET, - NEW_GROUP: 'new/group', + NEW: 'new', NEW_CHAT: 'new/chat', + NEW_ROOM: 'new/room', NEW_TASK, REPORT, REPORT_WITH_ID: 'r/:reportID?', @@ -82,7 +82,6 @@ export default { CONCIERGE: 'concierge', IOU_REQUEST, - IOU_BILL, IOU_SEND, // To see the available iouType, please refer to CONST.IOU.MONEY_REQUEST_TYPE @@ -163,7 +162,6 @@ export default { WORKSPACE_INVOICES: 'workspace/:policyID/invoices', WORKSPACE_TRAVEL: 'workspace/:policyID/travel', WORKSPACE_MEMBERS: 'workspace/:policyID/members', - WORKSPACE_NEW_ROOM: 'workspace/new-room', getWorkspaceInitialRoute: (policyID) => `workspace/${policyID}`, getWorkspaceInviteRoute: (policyID) => `workspace/${policyID}/invite`, getWorkspaceInviteMessageRoute: (policyID) => `workspace/${policyID}/invite-message`, diff --git a/src/components/OptionRow.js b/src/components/OptionRow.js index adaa4457bbd9..e525325aef0a 100644 --- a/src/components/OptionRow.js +++ b/src/components/OptionRow.js @@ -6,6 +6,7 @@ import {View, StyleSheet, InteractionManager} from 'react-native'; import styles from '../styles/styles'; import * as StyleUtils from '../styles/StyleUtils'; import optionPropTypes from './optionPropTypes'; +import Button from './Button'; import Icon from './Icon'; import * as Expensicons from './Icon/Expensicons'; import MultipleAvatars from './MultipleAvatars'; @@ -39,6 +40,15 @@ const propTypes = { /** Whether we should show the selected state */ showSelectedState: PropTypes.bool, + /** Whether to show a button pill instead of a tickbox */ + shouldShowSelectedStateAsButton: PropTypes.bool, + + /** Text for button pill */ + selectedStateButtonText: PropTypes.string, + + /** Callback to fire when the multiple selector (tickbox or button) is clicked */ + onSelectedStatePressed: PropTypes.func, + /** Whether this item is selected */ isSelected: PropTypes.bool, @@ -65,6 +75,9 @@ const propTypes = { const defaultProps = { hoverStyle: styles.sidebarLinkHover, showSelectedState: false, + shouldShowSelectedStateAsButton: false, + selectedStateButtonText: 'Select', + onSelectedStatePressed: undefined, isSelected: false, boldStyle: false, showTitleTooltip: false, @@ -248,7 +261,21 @@ class OptionRow extends Component { /> )} - {this.props.showSelectedState && } + {this.props.showSelectedState && ( + <> + {this.props.shouldShowSelectedStateAsButton && !this.props.isSelected ? ( +