Skip to content

Feat: [UEPR-165] merge native into develop with platform #220

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
122 commits
Select commit Hold shift + click to select a range
10f688e
Allow GUI consumer to receive a function for triggering saves.
paulkaplan Apr 19, 2019
76561b6
Remove file menu
paulkaplan Apr 19, 2019
1b9aefe
Add home to scratch logo
paulkaplan Apr 19, 2019
7cbea8a
Bring back the library loading through storage.
paulkaplan Apr 22, 2019
1de993d
WIP for library perf
paulkaplan May 7, 2019
a663182
add vm init fn
paulkaplan Jun 3, 2019
ea04d0c
Show spinner before loading library content
paulkaplan Jun 4, 2019
75602cf
Update scratch-vm to get scratch link config updates
paulkaplan Jun 6, 2019
5b19e60
Fix proptype sorting
paulkaplan Jun 7, 2019
928854c
Fixup spinner
paulkaplan Jun 7, 2019
0351d0f
Merge branch 'develop' into native
paulkaplan Jun 10, 2019
9ce5be1
Merge branch 'develop' into native
paulkaplan Jul 17, 2019
19d0a69
Merge from develop
paulkaplan Aug 1, 2019
054349e
Add onNewSpriteClick override
paulkaplan Aug 7, 2019
98e7747
Provide overrides for triggering costume and backdrop libraries
paulkaplan Aug 7, 2019
6d683d0
Merge branch 'develop' into native
paulkaplan Aug 14, 2019
3d9c2ef
Merge branch 'develop' into native
paulkaplan Aug 19, 2019
a12c358
Remove spanish gifs for now
paulkaplan Aug 21, 2019
a189324
Fix perf by avoiding defaultsDeep in mergeProps
paulkaplan Sep 5, 2019
678aa01
Emit projectDidSave for server saves, not just file exports
paulkaplan Sep 12, 2019
8b07431
Use a larger buffer size for recording to prevent glitching
paulkaplan Sep 13, 2019
3107da7
Force meter and waveform to separate paint layer
paulkaplan Sep 13, 2019
72b480a
Use single setState call instead of two
paulkaplan Sep 13, 2019
9832cf0
Merge branch 'develop' into native
paulkaplan Sep 17, 2019
19481c7
Merge branch 'develop' into native
paulkaplan Sep 26, 2019
ce6cce2
Allow Android to request a thumbnail generated on load
chrisgarrity Oct 2, 2019
b64cf80
Merge branch 'develop' into native
paulkaplan Oct 15, 2019
2d6ca11
Merge remote-tracking branch 'upstream/native' into native
paulkaplan Oct 15, 2019
6b556df
store project thumbnail after project loaded with id for android
chrisgarrity Nov 4, 2019
b33ed44
Merge branch 'native' of github.com:LLK/scratch-gui into native
paulkaplan Nov 4, 2019
05d6624
Merge branch 'develop' into native
paulkaplan Nov 4, 2019
26dd868
Merge branch 'develop' into native
paulkaplan Nov 20, 2019
a9a7f5c
Do not include src in npmignore
paulkaplan Dec 19, 2019
0f5dc4e
Merge branch 'native' into 0.1.0-prerelease.20200109172023
paulkaplan Jan 13, 2020
c2b0c10
Merge pull request #5383 from LLK/0.1.0-prerelease.20200109172023
paulkaplan Jan 13, 2020
47f9ef8
Merge pull request #5387 from LLK/0.1.0-prerelease.20200113203847
paulkaplan Jan 15, 2020
dc36717
Merge tag '0.1.0-prerelease.20200213175628' into native
paulkaplan Feb 26, 2020
2e8d854
Merge tag '0.1.0-prerelease.20200319183521' into native
chrisgarrity Mar 25, 2020
c7cfca8
Fix lint errors
chrisgarrity Mar 25, 2020
398eb57
Merge tag '0.1.0-prerelease.20200423001702' into native
chrisgarrity Apr 28, 2020
859fd31
Merge tag '0.1.0-prerelease.20200527204130' into native
chrisgarrity Jun 1, 2020
ce24356
Pull revert from VM
Jun 18, 2020
68c4c5a
Merge tag '0.1.0-prerelease.20200618175748' into native
chrisgarrity Jun 22, 2020
f481636
Merge tag '0.1.0-prerelease.20200722032238' into native
chrisgarrity Jul 22, 2020
6d66534
Handle user picked peripheral
Oct 15, 2020
eff9a11
Merge branch 'latest' into native
Nov 10, 2020
221abef
Merge branch 'native' into useCdm
Nov 10, 2020
f97c0e5
Merge pull request #6273 from fsih/useCdm
fsih Nov 14, 2020
23486df
Fix merge
Nov 19, 2020
78242f7
Merge branch 'native' of github.com:LLK/scratch-gui into native
Nov 24, 2020
060f472
bump scratch-vm for CDM support
cwillisf Dec 14, 2020
6ff76dc
Merge release 1/7/2021
Jan 8, 2021
caa4b30
Fix lint
Jan 8, 2021
6c7b980
Fix integration tests
Jan 8, 2021
dd3bbd7
Merge pull request #6553 from fsih/mergeDevelop
fsih Jan 8, 2021
837ed10
Fix audio context not starting
paulkaplan Feb 19, 2021
7630a76
Merge tag '0.1.0-prerelease.20210224115226' into native
Mar 3, 2021
7b7cb7f
Merge pull request #6851 from fsih/mergeTag
cwillisf Mar 4, 2021
6ec60aa
Merge branch 'fix-telemetry-dialog-selection' into native
cwillisf Mar 5, 2021
6c184ad
build(deps): bump scratch-paint
dependabot-preview[bot] Mar 19, 2021
b8ef333
Merge tag '0.1.0-prerelease.20210425034539' into native
cwillisf May 6, 2021
c092de2
Merge tag '0.1.0-prerelease.20210526041028' into native
cwillisf Jun 2, 2021
c3f7a8b
Merge tag '0.1.0-prerelease.20210621040041' into native
cwillisf Jun 27, 2021
ecf262a
fix lint error introduced by merging 8a774a2aa10c9209d852549d70f50ebd…
cwillisf Jun 27, 2021
00ffb1b
Merge tag '0.1.0-prerelease.20210727132145' into native
cwillisf Aug 2, 2021
17bb21d
fix BOOST & CDM combo
cwillisf Aug 25, 2021
3fb6833
explain USER_PICKED_PERIPHERAL and remove bad bind
cwillisf Sep 7, 2021
0ba1cc7
Merge pull request #7565 from cwillisf/fix-boost-cdm
cwillisf Sep 7, 2021
ac8e04e
Merge tag '0.1.0-prerelease.20210908105639' into native
cwillisf Sep 16, 2021
48bb276
add flag to enable 'CDM mode', force autoscan
cwillisf Oct 21, 2021
c93a035
allow extension to override prescan & pressbutton messages
cwillisf Oct 21, 2021
97901d9
add prescanMessage and scanMeginMessage for WeDo 2.0 and BOOST
cwillisf Oct 22, 2021
4b97ddb
Merge pull request #7745 from cwillisf/cdm-connection-flow-updates
cwillisf Oct 25, 2021
ab513b9
Merge tag '0.1.0-prerelease.20211103150403' into native
cwillisf Nov 4, 2021
3e52a4c
Merge tag '0.1.0-prerelease.20220118124756' into native
cwillisf Jan 27, 2022
4379dbb
Merge tag '0.1.0-prerelease.20220303152318' into native
cwillisf Mar 3, 2022
e7d6d9e
Merge tag 'v1.8.6' into native
cwillisf Apr 7, 2023
bc08006
ci: configure commitlint for native branch
cwillisf Apr 10, 2023
b076ef4
Merge branch 'develop' into tmp/native
Jul 10, 2023
06549c5
Merge branch 'develop' into native
Jul 27, 2023
ff31e32
Merge branch 'develop' into native
Aug 10, 2023
d149860
chore: update native branch with monorepo-integration branch
MiroslavDionisiev Jul 23, 2024
1dfd99a
chore: updated scratch-webpack-configuration and setup-node versions
MiroslavDionisiev Jul 31, 2024
dd61879
Merge pull request #9624 from MiroslavDionisiev/native-develop-merge
MiroslavDionisiev Jul 31, 2024
d6df22a
Revert "chore: updated scratch-webpack-configuration and setup-node v…
MiroslavDionisiev Jul 31, 2024
f42dbae
Revert "chore: update native branch with monorepo-integration branch"
MiroslavDionisiev Jul 31, 2024
e4eaf70
chore: merge develop in native
MiroslavDionisiev Aug 1, 2024
e0d8448
Revert "ci: reduce package size"
MiroslavDionisiev Aug 1, 2024
4285521
chore: resolve conflicts
MiroslavDionisiev Aug 1, 2024
4e35630
Merge pull request #9633 from MiroslavDionisiev/native-develop-merge
MiroslavDionisiev Aug 1, 2024
29f13d5
chore(deps): add scratch-gui#native as packages/scratch-gui
MiroslavDionisiev Aug 31, 2024
3c72884
chore(deps): add scratch-render#develop as packages/scratch-render
MiroslavDionisiev Aug 31, 2024
bf99f01
chore(deps): add scratch-svg-renderer#develop as packages/scratch-svg…
MiroslavDionisiev Aug 31, 2024
8de3aff
chore(deps): add scratch-vm#develop as packages/scratch-vm
MiroslavDionisiev Aug 31, 2024
0a369c2
chore: remove repo-level configuration and deps from packages/*
MiroslavDionisiev Aug 31, 2024
fe7c3e1
chore(deps): use workspace versions of all local packages
MiroslavDionisiev Aug 31, 2024
a46d0b3
refactor: fixed paths to work with new project structure
MiroslavDionisiev Aug 31, 2024
c2acb60
Merge pull request #14 from MiroslavDionisiev/scratch-android
MiroslavDionisiev Sep 5, 2024
f818fa8
Merge branch 'develop' into feat/uepr-165-merging-native
Bogomil-Stoyanov Mar 10, 2025
2ed8b64
fix: return inclusion of /src files
Bogomil-Stoyanov Mar 10, 2025
e90a5ca
feat: [UEPR-165] WIP fixing tutorial icons
Bogomil-Stoyanov Mar 11, 2025
5a86b0e
feat: [UEPR-165] Images in android work, broke browser images
Bogomil-Stoyanov Mar 12, 2025
ef66390
feat: [UEPR-165] Added check if android -> shows file from assets in …
Bogomil-Stoyanov Mar 13, 2025
f05671f
feat: [UEPR-163] Added platform reducer
Bogomil-Stoyanov Mar 13, 2025
c3185ec
feat: [UEPR-163] updates state from platform prop
Bogomil-Stoyanov Mar 14, 2025
9112f4f
feat: [UEPR-163] Added platform prop to gui component
Bogomil-Stoyanov Mar 14, 2025
ac59664
feat: [UEPR-163] Added own props
Bogomil-Stoyanov Mar 17, 2025
18d7eae
Merge branch 'feat/uepr-165-merging-native' into feat/uepr-165-merge-…
Bogomil-Stoyanov Mar 18, 2025
a3f53fd
feat: [UEPR-165] added checks for platfrom in Cards and Scratch Image
Bogomil-Stoyanov Mar 18, 2025
7c8c292
feat: [UEPR-165] Added back part of commented out test
Bogomil-Stoyanov Mar 18, 2025
156030e
feat: [UEPR-165] Changes to platfrom prop
Bogomil-Stoyanov Mar 18, 2025
c4a1775
feat: [UEPR-165] Changes to platfrom prop in Cards
Bogomil-Stoyanov Mar 18, 2025
dd6ba82
feat: [UEPR-165] Removed console log
Bogomil-Stoyanov Mar 18, 2025
51dcf15
feat: [UEPR-165] Removed ci-cd.yml from gui
Bogomil-Stoyanov Mar 20, 2025
c8edd74
feat: [UEPR-165] Omit setPlatform from props passed to DOM elements
Bogomil-Stoyanov Mar 20, 2025
f5bfce2
feat: [UEPR-165] Image translation - platform condition
Bogomil-Stoyanov Mar 21, 2025
e189ec0
feat: [UEPR-165] Removed a test, added android specific prop and chan…
Bogomil-Stoyanov Mar 21, 2025
ebd54a2
feat: [UEPR-165] Reverted change in newSpriteClick
Bogomil-Stoyanov Mar 21, 2025
dcc285b
feat: [UEPR-165] Added platfrom to Scratch img, changed shoVideos in …
Bogomil-Stoyanov Mar 24, 2025
bd723db
feat: [UEPR-165] Added onNewLibraryBackdropClick to props
Bogomil-Stoyanov Mar 25, 2025
a2dbb44
feat: [UEPR-165] Fixed cards test
Bogomil-Stoyanov Mar 25, 2025
44f4d66
feat: [UEPR-165] Removed console.log
Bogomil-Stoyanov Mar 25, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6,385 changes: 4,488 additions & 1,897 deletions package-lock.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion packages/scratch-gui/.npmignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
npm-*

# Double copies of all the static assets and tutorial gifs
/src
# /src

# Testing
/.nyc_output
Expand Down
5 changes: 3 additions & 2 deletions packages/scratch-gui/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@
"react-tabs": "2.3.1",
"react-tooltip": "4.5.1",
"react-virtualized": "9.22.6",
"react-visibility-sensor": "5.0.2",
"redux-throttle": "0.1.1",
"scratch-audio": "2.0.92",
"scratch-blocks": "1.1.206",
Expand All @@ -102,6 +103,7 @@
"startaudiocontext": "1.2.1",
"style-loader": "4.0.0",
"to-style": "1.3.3",
"text-encoding": "0.7.0",
"wav-encoder": "1.3.0",
"xhr": "2.6.0"
},
Expand Down Expand Up @@ -141,9 +143,8 @@
"html-webpack-plugin": "5.6.3",
"jest": "21.2.1",
"jest-junit": "7.0.0",
"mkdirp": "1.0.3",
"raf": "3.4.1",
"react": "16.14.0",
"react-dom": "16.14.0",
"react-test-renderer": "16.14.0",
"redux-mock-store": "1.5.5",
"rimraf": "2.7.1",
Expand Down
46 changes: 27 additions & 19 deletions packages/scratch-gui/src/components/cards/cards.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ import closeIcon from './icon--close.svg';
import {translateVideo} from '../../lib/libraries/decks/translate-video.js';
import {translateImage} from '../../lib/libraries/decks/translate-image.js';

import {PLATFORM} from '../../lib/platform.js';

const CardHeader = ({onCloseCards, onShrinkExpandCards, onShowAll, totalSteps, step, expanded}) => (
<div className={expanded ? styles.headerButtons : classNames(styles.headerButtons, styles.headerButtonsHidden)}>
<div
Expand Down Expand Up @@ -149,25 +151,25 @@ VideoStep.propTypes = {
video: PropTypes.string.isRequired
};

const ImageStep = ({title, image}) => (
<Fragment>
<div className={styles.stepTitle}>
{title}
</div>
<div className={styles.stepImageContainer}>
<img
className={styles.stepImage}
draggable={false}
key={image} /* Use src as key to prevent hanging around on slow connections */
src={image}
/>
</div>
</Fragment>
const ImageStep = ({title, image, platform}) => (<Fragment>
<div className={styles.stepTitle}>
{title}
</div>
<div className={styles.stepImageContainer}>
<img
className={styles.stepImage}
draggable={false}
key={image} /* Use src as key to prevent hanging around on slow connections */
src={platform === PLATFORM.ANDROID ? `file:///android_asset/www${image}` : image}
/>
</div>
</Fragment>
);

ImageStep.propTypes = {
image: PropTypes.string.isRequired,
title: PropTypes.node.isRequired
title: PropTypes.node.isRequired,
platform: PropTypes.string
};

const NextPrevButtons = ({isRtl, onNextStep, onPrevStep, expanded}) => (
Expand Down Expand Up @@ -218,7 +220,7 @@ CardHeader.propTypes = {
totalSteps: PropTypes.number
};

const PreviewsStep = ({deckIds, content, onActivateDeckFactory, onShowAll}) => (
const PreviewsStep = ({deckIds, content, onActivateDeckFactory, onShowAll, platform}) => (
<Fragment>
<div className={styles.stepTitle}>
<FormattedMessage
Expand All @@ -237,7 +239,7 @@ const PreviewsStep = ({deckIds, content, onActivateDeckFactory, onShowAll}) => (
<img
className={styles.deckImage}
draggable={false}
src={content[id].img}
src={platform === PLATFORM.ANDROID ? `file:///android_asset/www${content[id].img}` : content[id].img}
/>
<div className={styles.deckName}>{content[id].name}</div>
</div>
Expand Down Expand Up @@ -273,7 +275,8 @@ PreviewsStep.propTypes = {
}).isRequired,
deckIds: PropTypes.arrayOf(PropTypes.string).isRequired,
onActivateDeckFactory: PropTypes.func.isRequired,
onShowAll: PropTypes.func.isRequired
onShowAll: PropTypes.func.isRequired,
platform: PropTypes.string
};

const Cards = props => {
Expand All @@ -295,6 +298,7 @@ const Cards = props => {
showVideos,
step,
expanded,
platform,
...posProps
} = props;
let {x, y} = posProps;
Expand Down Expand Up @@ -358,10 +362,11 @@ const Cards = props => {
deckIds={steps[step].deckIds}
onActivateDeckFactory={onActivateDeckFactory}
onShowAll={onShowAll}
platform={platform}
/>
) : (
steps[step].video ? (
showVideos ? (
(platform === PLATFORM.WEB || platform === PLATFORM.ANDROID) && showVideos ? (
<VideoStep
dragging={dragging}
expanded={expanded}
Expand All @@ -371,12 +376,14 @@ const Cards = props => {
<ImageStep
image={content[activeDeckId].img}
title={content[activeDeckId].name}
platform={platform}
/>
)
) : (
<ImageStep
image={translateImage(steps[step].image, locale)}
title={steps[step].title}
platform={platform}
/>
)
)}
Expand Down Expand Up @@ -423,6 +430,7 @@ Cards.propTypes = {
onShrinkExpandCards: PropTypes.func.isRequired,
onStartDrag: PropTypes.func,
showVideos: PropTypes.bool,
platform: PropTypes.string,
step: PropTypes.number.isRequired,
x: PropTypes.number,
y: PropTypes.number
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,18 @@ const PHASES = keyMirror({
notfound: null
});

const defaultPrescanMessage = (<FormattedMessage
defaultMessage="Have your device nearby, then begin searching."
description="Prompt for beginning the search"
id="gui.connection.auto-scanning.prescan"
/>);

const defaultScanBeginMessage = (<FormattedMessage
defaultMessage="Press the button on your device."
description="Prompt for pushing the button on the device"
id="gui.connection.auto-scanning.scanBeginMessage"
/>);

const AutoScanningStep = props => {
// Offer to update both during scan and after a failed scan, as long there's an update function.
// It's possible the scan will find "some" device but not the desired device,
Expand All @@ -35,16 +47,23 @@ const AutoScanningStep = props => {
<div className={styles.activityAreaInfo}>
<div className={styles.centeredRow}>
{props.phase === PHASES.prescan && (
<React.Fragment>
props.connectionIconURL ? (
<img
className={styles.radarBig}
src={radarIcon}
src={props.connectionIconURL}
/>
<img
className={styles.bluetoothCenteredIcon}
src={bluetoothIcon}
/>
</React.Fragment>
) : (
<React.Fragment>
<img
className={styles.radarBig}
src={radarIcon}
/>
<img
className={styles.bluetoothCenteredIcon}
src={bluetoothIcon}
/>
</React.Fragment>
)
)}
{props.phase === PHASES.pressbutton && (
<React.Fragment>
Expand Down Expand Up @@ -77,20 +96,8 @@ const AutoScanningStep = props => {
</Box>
<Box className={styles.bottomArea}>
<Box className={classNames(styles.bottomAreaItem, styles.instructions)}>
{props.phase === PHASES.prescan && (
<FormattedMessage
defaultMessage="Have your device nearby, then begin searching."
description="Prompt for beginning the search"
id="gui.connection.auto-scanning.prescan"
/>
)}
{props.phase === PHASES.pressbutton && (
<FormattedMessage
defaultMessage="Press the button on your device."
description="Prompt for pushing the button on the device"
id="gui.connection.auto-scanning.pressbutton"
/>
)}
{props.phase === PHASES.prescan && props.prescanMessage}
{props.phase === PHASES.pressbutton && props.scanBeginMessage}
</Box>
{showUpdate && (
<Box className={classNames(styles.bottomAreaItem, styles.instructions)}>
Expand Down Expand Up @@ -180,15 +187,20 @@ const AutoScanningStep = props => {
};

AutoScanningStep.propTypes = {
connectionIconURL: PropTypes.string,
connectionTipIconURL: PropTypes.string,
onRefresh: PropTypes.func,
onStartScan: PropTypes.func,
onUpdatePeripheral: PropTypes.func,
phase: PropTypes.oneOf(Object.keys(PHASES))
phase: PropTypes.oneOf(Object.keys(PHASES)),
prescanMessage: PropTypes.node,
scanBeginMessage: PropTypes.node
};

AutoScanningStep.defaultProps = {
phase: PHASES.prescan
phase: PHASES.prescan,
prescanMessage: defaultPrescanMessage,
scanBeginMessage: defaultScanBeginMessage
};

export {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,23 @@ const PHASES = keyMirror({
updatePeripheral: null
});

const ConnectionModalComponent = props => (
<Modal
const ConnectionModalComponent = props => {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@MarshTheTester, we'll need to specifically check hardware extensions for the next Android release. We should include both new (CDM) and old (non-CDM) tablets.

// ScanningStep allows the user to choose a peripheral from a list.
// AutoScanningStep connects to the first peripheral found.
// Also, AutoScanningStep adds "prescan" and "pressbutton" phases before the actual scan.
// When useExternalPeripheralList is true, force the use of AutoScanningStep:
// - We want to automatically connect to the first peripheral "found" since it's actually the one selected by the
// user from the external list.
// - We want to show the "prescan" phase to inform the user before the external list appears.
// - The "pressbutton" phase doesn't hurt: it might be hidden behind the external list (especially with Android
// CDM) or it might help the user to keep the peripheral device awake.
// TODO: does forcing AutoScanningStep mean we can eliminate the `USER_PICKED_PERIPHERAL` message?
const ScanningStepContainer = (
(props.useAutoScan || props.useExternalPeripheralList) ?
AutoScanningStep :
ScanningStep
);
return (<Modal
className={styles.modalContent}
contentLabel={props.name}
headerClassName={styles.header}
Expand All @@ -35,27 +50,30 @@ const ConnectionModalComponent = props => (
onRequestClose={props.onCancel}
>
<Box className={styles.body}>
{props.phase === PHASES.scanning && !props.useAutoScan && <ScanningStep {...props} />}
{props.phase === PHASES.scanning && props.useAutoScan && <AutoScanningStep {...props} />}
{props.phase === PHASES.scanning && <ScanningStepContainer {...props} />}
{props.phase === PHASES.connecting && <ConnectingStep {...props} />}
{props.phase === PHASES.connected && <ConnectedStep {...props} />}
{props.phase === PHASES.error && <ErrorStep {...props} />}
{props.phase === PHASES.unavailable && <UnavailableStep {...props} />}
{props.phase === PHASES.updatePeripheral && <UpdatePeripheralStep {...props} />}
</Box>
</Modal>
);
</Modal>);
};

ConnectionModalComponent.propTypes = {
connectingMessage: PropTypes.node.isRequired,
connectionIconURL: PropTypes.string,
connectionSmallIconURL: PropTypes.string,
connectionTipIconURL: PropTypes.string,
name: PropTypes.node,
onCancel: PropTypes.func.isRequired,
onHelp: PropTypes.func.isRequired,
phase: PropTypes.oneOf(Object.keys(PHASES)).isRequired,
prescanMessage: PropTypes.node,
scanBeginMessage: PropTypes.node,
title: PropTypes.string.isRequired,
useAutoScan: PropTypes.bool.isRequired
useAutoScan: PropTypes.bool.isRequired,
useExternalPeripheralList: PropTypes.bool
};

ConnectionModalComponent.defaultProps = {
Expand Down
Loading
Loading