Skip to content

Commit

Permalink
Merge branch 'master' into pr/RodriSanchez1/1686
Browse files Browse the repository at this point in the history
  • Loading branch information
RodriSanchez1 committed May 20, 2024
2 parents 0e62bc4 + ea75804 commit ed80599
Show file tree
Hide file tree
Showing 7 changed files with 64 additions and 12 deletions.
1 change: 1 addition & 0 deletions src/components/App/App.reducer.js
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ const initialState = {
quickUnlockActive: false,
removeOutputActive: false,
vocalizeFolders: false,
quietBuilderMode: false,
liveMode: false,
improvePhraseActive: false
},
Expand Down
2 changes: 2 additions & 0 deletions src/components/App/__tests__/App.reducer.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ describe('reducer', () => {
quickUnlockActive: false,
removeOutputActive: false,
vocalizeFolders: false,
quietBuilderMode: false,
improvePhraseActive: false
},
symbolsSettings: {
Expand Down Expand Up @@ -77,6 +78,7 @@ describe('reducer', () => {
quickUnlockActive: false,
removeOutputActive: false,
vocalizeFolders: false,
quietBuilderMode: false,
improvePhraseActive: false
},
userData: uData
Expand Down
35 changes: 24 additions & 11 deletions src/components/Board/Board.container.js
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,7 @@ export class BoardContainer extends Component {

const {
board,
boards,
communicator,
changeBoard,
userData,
Expand All @@ -230,11 +231,9 @@ export class BoardContainer extends Component {
window.gtag('set', { user_id: userData.id });
//synchronize communicator and boards with API
this.setState({ isGettingApiObjects: true });
await getApiObjects();
this.setState({ isGettingApiObjects: false });
getApiObjects().then(() => this.setState({ isGettingApiObjects: false }));
}

const boards = this.props.boards; //see board from redux state after get ApiObjets
let boardExists = null;

if (id && board && id === board.id) {
Expand Down Expand Up @@ -894,7 +893,9 @@ export class BoardContainer extends Component {
}
} else {
clickSymbol(tile.label);
say();
if (!navigationSettings.quietBuilderMode) {
say();
}
if (isLiveMode) {
const liveTile = {
backgroundColor: 'rgb(255, 241, 118)',
Expand Down Expand Up @@ -1167,8 +1168,8 @@ export class BoardContainer extends Component {
)
.then(parentBoardId => {
if (createParentBoard) {
/* Here the parentBoardData is not updated with the values
that updatedApiObjects store on the API. Inside the boards are already updated
/* Here the parentBoardData is not updated with the values
that updatedApiObjects store on the API. Inside the boards are already updated
an the value is not replaced because the oldboard Id was replaced on the updateApiObjects inside createApiBoardSuccess */
replaceBoard(
{ ...parentBoardData },
Expand Down Expand Up @@ -1427,7 +1428,7 @@ export class BoardContainer extends Component {
};
if (tile.loadBoard) {
createTile(newTile, board.id);
await this.pasteBoardsRecursively(newTile, board.id);
await this.pasteBoardsRecursively(newTile, board.id, tile.loadBoard);
} else {
await this.handleAddTileEditorSubmit(newTile);
}
Expand All @@ -1441,7 +1442,7 @@ export class BoardContainer extends Component {
}
};

async pasteBoardsRecursively(folderTile, parentBoardId) {
async pasteBoardsRecursively(folderTile, parentBoardId, firstPastedFolderId) {
const {
createBoard,
userData,
Expand All @@ -1464,6 +1465,14 @@ export class BoardContainer extends Component {
author: '',
email: ''
};

const tilesWithFatherRemoved = newBoard.tiles?.reduce((newTiles, tile) => {
if (firstPastedFolderId !== tile.loadBoard) newTiles.push(tile);
return newTiles;
}, []);

newBoard.tiles = tilesWithFatherRemoved;

if (!newBoard.name) {
newBoard.name = newBoard.nameKey
? intl.formatMessage({ id: newBoard.nameKey })
Expand Down Expand Up @@ -1515,15 +1524,19 @@ export class BoardContainer extends Component {
}

//return condition
newBoard.tiles.forEach(async tile => {
for await (const tile of newBoard.tiles) {
if (tile && tile.loadBoard && !tile.linkedBoard) {
//look for this board in available boards
const newBoardToCopy = boards.find(b => b.id === tile.loadBoard);
if (newBoardToCopy) {
this.pasteBoardsRecursively(tile, newBoard.id);
await this.pasteBoardsRecursively(
tile,
newBoard.id,
firstPastedFolderId
);
}
}
});
}
return;
}

Expand Down
24 changes: 24 additions & 0 deletions src/components/Settings/Navigation/Navigation.component.js
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,12 @@ class Navigation extends React.Component {
});
};

toggleQuietBuilderMode = () => {
this.setState({
quietBuilderMode: !this.state.quietBuilderMode
});
};

toggleLiveMode = () => {
this.setState({
liveMode: !this.state.liveMode
Expand Down Expand Up @@ -277,6 +283,24 @@ class Navigation extends React.Component {
</ListItemSecondaryAction>
</ListItem>
<Divider />
<ListItem>
<ListItemText
className="Navigation__ListItemText"
primary={<FormattedMessage {...messages.quietBuilderMode} />}
secondary={
<FormattedMessage {...messages.quietBuilderModeSecondary} />
}
/>
<ListItemSecondaryAction>
<Switch
checked={this.state.enableQuietBuilderMode}
onChange={this.toggleQuietBuilderMode}
value="active"
color="secondary"
/>
</ListItemSecondaryAction>
</ListItem>
<Divider />
<ResetToursItem />
<Divider />
<ListItem>
Expand Down
9 changes: 9 additions & 0 deletions src/components/Settings/Navigation/Navigation.messages.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,15 @@ export default defineMessages({
id: 'cboard.components.Settings.Navigation.vocalizeFoldersSecondary',
defaultMessage: "Reads a folder's name out loud when clicked"
},
quietBuilderMode: {
id: 'cboard.components.Settings.Navigation.quietBuilderMode',
defaultMessage: 'Enable Quiet Builder mode'
},
quietBuilderModeSecondary: {
id: 'cboard.components.Settings.Navigation.quietBuilderModeSecondary',
defaultMessage:
'Disables vocalization of tiles when they are clicked as you build a sentence. Click output bar to hear the constructed sentence.'
},
showLiveMode: {
id: 'cboard.components.Settings.Navigation.showLiveMode',
defaultMessage: 'Use the Live Mode'
Expand Down
3 changes: 2 additions & 1 deletion src/components/Settings/Navigation/Navigation.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ const INITIAL_NAVIGATION_SETTINGS = {
navigationButtonsStyle: NAVIGATION_BUTTONS_STYLE_SIDES,
quickUnlockActive: false,
removeOutputActive: false,
vocalizeFolders: false
vocalizeFolders: false,
quietBuilderMode: false
};

let navigationSettings = INITIAL_NAVIGATION_SETTINGS;
Expand Down
2 changes: 2 additions & 0 deletions src/translations/src/cboard.json
Original file line number Diff line number Diff line change
Expand Up @@ -430,6 +430,8 @@
"cboard.components.Settings.Navigation.outputRemoveSecondary": "Shows a \"x\" buttton on each symbol in order to remove it",
"cboard.components.Settings.Navigation.vocalizeFolders": "Enable folder vocalization",
"cboard.components.Settings.Navigation.vocalizeFoldersSecondary": "Reads folders name out loud when clicked",
"cboard.components.Settings.Navigation.quietBuilderMode": "Enable Quiet Builder mode",
"cboard.components.Settings.Navigation.quietBuilderModeSecondary": "Disables vocalization of tiles when they are clicked as you build a sentence. Click output bar to hear the constructed sentence.",
"cboard.components.Settings.Navigation.showLiveMode": "Use the Live Mode",
"cboard.components.Settings.Navigation.showLiveModeSecondary": "Live mode allows you to write text directly into the output bar and quickly play the sound. It is intended for users that can write.",
"cboard.components.Settings.Navigation.activeImprovePhrase": "Use the Improve Phrase",
Expand Down

0 comments on commit ed80599

Please sign in to comment.