diff --git a/locales/en.json b/locales/en.json index e3d1181a4..7024a0c36 100644 --- a/locales/en.json +++ b/locales/en.json @@ -795,6 +795,7 @@ "views.Settings.POS.Category.noCategoriesDefined": "No categories defined yet", "views.Settings.POS.saveCategory": "Save category", "views.Settings.POS.Products": "Products", + "views.Settings.POS.Keypad": "POS Keypad", "views.Settings.POS.Product": "Product", "views.Settings.POS.Product.name": "Product name", "views.Settings.POS.Product.noProductsDefined": "No products defined yet", diff --git a/stores/SettingsStore.ts b/stores/SettingsStore.ts index 6edb16e41..8813255f2 100644 --- a/stores/SettingsStore.ts +++ b/stores/SettingsStore.ts @@ -64,6 +64,7 @@ interface PosSettings { showKeypad?: boolean; taxPercentage?: string; enablePrinter?: boolean; + defaultView?: string; } interface PaymentsSettings { @@ -933,6 +934,19 @@ export const DEFAULT_VIEW_KEYS = [ } ]; +export const DEFAULT_VIEW_KEYS_POS = [ + { + key: 'Products', + translateKey: 'views.Settings.POS.Products', + value: 'Products' + }, + { + key: 'POS Keypad', + translateKey: 'views.Settings.POS.Keypad', + value: 'POS Keypad' + } +]; + export const DEFAULT_THEME = 'kyriaki'; export const DEFAULT_FIAT = 'USD'; export const DEFAULT_FIAT_RATES_SOURCE = 'Zeus'; @@ -1076,7 +1090,8 @@ export default class SettingsStore { squareDevMode: false, showKeypad: true, taxPercentage: '0', - enablePrinter: false + enablePrinter: false, + defaultView: 'Products' }, payments: { defaultFeeMethod: 'fixed', // deprecated diff --git a/views/Settings/PointOfSale.tsx b/views/Settings/PointOfSale.tsx index 7a0a30b28..9183296d6 100644 --- a/views/Settings/PointOfSale.tsx +++ b/views/Settings/PointOfSale.tsx @@ -19,6 +19,7 @@ import Switch from '../../components/Switch'; import TextInput from '../../components/TextInput'; import SettingsStore, { + DEFAULT_VIEW_KEYS_POS, POS_CONF_PREF_KEYS, POS_ENABLED_KEYS, PosEnabled @@ -40,6 +41,7 @@ interface PointOfSaleState { showKeypad: boolean; taxPercentage: string; enablePrinter: boolean; + defaultView: string; } @inject('SettingsStore') @@ -58,7 +60,8 @@ export default class PointOfSale extends React.Component< squareDevMode: false, showKeypad: true, taxPercentage: '0', - enablePrinter: false + enablePrinter: false, + defaultView: 'Products' }; async UNSAFE_componentWillMount() { @@ -77,7 +80,9 @@ export default class PointOfSale extends React.Component< squareDevMode: settings?.pos?.squareDevMode || false, showKeypad: settings?.pos?.showKeypad || false, taxPercentage: settings?.pos?.taxPercentage || '0', - enablePrinter: settings?.pos?.enablePrinter || false + enablePrinter: settings?.pos?.enablePrinter || false, + defaultView: + (settings?.pos && settings?.pos?.defaultView) || 'Products' }); } @@ -102,7 +107,8 @@ export default class PointOfSale extends React.Component< squareDevMode, showKeypad, taxPercentage, - enablePrinter + enablePrinter, + defaultView } = this.state; const { updateSettings, settings }: any = SettingsStore; const { passphrase, pin, fiatEnabled } = settings; @@ -182,7 +188,8 @@ export default class PointOfSale extends React.Component< squareDevMode, showKeypad, taxPercentage, - enablePrinter + enablePrinter, + defaultView } }); }} @@ -219,7 +226,8 @@ export default class PointOfSale extends React.Component< squareDevMode, showKeypad, taxPercentage, - enablePrinter + enablePrinter, + defaultView } }); }} @@ -253,7 +261,8 @@ export default class PointOfSale extends React.Component< squareDevMode, showKeypad, taxPercentage, - enablePrinter + enablePrinter, + defaultView } }); }} @@ -302,7 +311,8 @@ export default class PointOfSale extends React.Component< !squareDevMode, showKeypad, taxPercentage, - enablePrinter + enablePrinter, + defaultView } }); }} @@ -342,7 +352,8 @@ export default class PointOfSale extends React.Component< squareDevMode, showKeypad, taxPercentage, - enablePrinter + enablePrinter, + defaultView } }); }} @@ -366,12 +377,43 @@ export default class PointOfSale extends React.Component< disableTips, squareDevMode, showKeypad, - taxPercentage + taxPercentage, + defaultView } }); }} values={POS_CONF_PREF_KEYS} /> + {posEnabled === PosEnabled.Standalone && ( + { + this.setState({ + defaultView: value + }); + await updateSettings({ + pos: { + posEnabled, + squareAccessToken, + squareLocationId, + merchantName, + confirmationPreference, + disableTips, + squareDevMode, + showKeypad, + taxPercentage, + defaultView: value + } + }); + }} + values={DEFAULT_VIEW_KEYS_POS} + /> + )} { initialRouteName={ posEnabled !== PosEnabled.Disabled && posStatus === 'active' - ? 'POS' + ? (settings.pos && + settings.pos.defaultView) || + 'Products' : isSyncing ? 'Balance' : (settings.display && @@ -720,7 +722,7 @@ export default class Wallet extends React.Component { if (route.name === 'Balance') { return ; } - if (route.name === 'POS') { + if (route.name === 'Products') { return ; } if (route.name === 'POS Keypad') {