Skip to content

Commit 111921e

Browse files
authored
Merge pull request #6 from devsakae/audiosinlocalstorage
Array de áudios no localstorage para não repetir mais
2 parents 1991c7b + 05c669d commit 111921e

File tree

1 file changed

+42
-20
lines changed

1 file changed

+42
-20
lines changed

Diff for: src/components/Timer.jsx

+42-20
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,41 @@ import React, { Component } from 'react';
33
import falta1min from '../conteudo/audios-falta1min';
44
import fimdotempo from '../conteudo/audios-fimdotempo';
55

6+
const ls1minkey = 'vaidartempo_1minaudios';
7+
const lstimeupkey = 'vaidartempo_timeupaudios';
8+
9+
// Pega do LS o array de áudios ainda disponíveis para tocar. Se não existir, inclui todos os áudios.
10+
const allAudios1Min = falta1min.map((audio) => audio.substring(26).split('.')[0]);
11+
let audiosOf1minRemaining = JSON.parse(localStorage.getItem(ls1minkey)) || allAudios1Min;
12+
if (audiosOf1minRemaining.length < 1) audiosOf1minRemaining = allAudios1Min;
13+
14+
const allAudiosTimeup = fimdotempo.map((audio) => audio.substring(26).split('.')[0]);
15+
let audiosOfTimeupRemaining = JSON.parse(localStorage.getItem(lstimeupkey)) || allAudiosTimeup;
16+
if (audiosOfTimeupRemaining.length < 1) audiosOfTimeupRemaining = allAudiosTimeup;
17+
18+
// Sorteia um número limitado as opções do tamanho dos arrays (pa = primeiro audio, sa = segundo audio)
19+
const a1Random = Math.floor(Math.random() * audiosOf1minRemaining.length);
20+
const a2Random = Math.floor(Math.random() * audiosOfTimeupRemaining.length);
21+
22+
const getAudio = (audiosArray, audiosRemaining, audioPicked) => {
23+
const audioSearched = audiosRemaining[audioPicked];
24+
const audioFile = audiosArray.filter((a) => a.includes(audioSearched))[0];
25+
return audioFile;
26+
};
27+
28+
const saveToLocal = (audiosRemaining, audioPicked, key) => {
29+
audiosRemaining.splice(audioPicked, 1);
30+
localStorage.setItem(key, JSON.stringify(audiosRemaining));
31+
}
32+
33+
// Pega o áudio sorteado
34+
let a1Picked = getAudio(falta1min, audiosOf1minRemaining, +a1Random)
35+
let a2Picked = getAudio(fimdotempo, audiosOfTimeupRemaining, +a2Random)
36+
37+
// Cria um áudio pra ele
38+
const a1File = new Audio(a1Picked);
39+
const a2File = new Audio(a2Picked);
40+
641
export default class Timer extends Component {
742
state = {
843
minutos: 0,
@@ -15,18 +50,7 @@ export default class Timer extends Component {
1550

1651
componentDidMount() {
1752
const { minutos, segundos } = this.props;
18-
19-
// Sorteia um número limitado as opções do tamanho dos arrays (pa = primeiro audio, sa = segundo audio)
20-
const paRandom = Math.floor(Math.random() * falta1min.length);
21-
const saRandom = Math.floor(Math.random() * fimdotempo.length);
22-
23-
// Pega o áudio sorteado
24-
const paSorteado = falta1min[paRandom];
25-
const saSorteado = fimdotempo[saRandom];
26-
27-
// Cria um áudio pra ele
28-
const paFile = new Audio(paSorteado);
29-
const saFile = new Audio(saSorteado);
53+
3054
this.setState({
3155
minutos,
3256
segundos,
@@ -38,24 +62,22 @@ export default class Timer extends Component {
3862
segundos: segundos - 1
3963
}))
4064
}
41-
if (minutos === 1 && segundos === 20) {
42-
this.thankYou(paSorteado, saSorteado);
65+
if (minutos === 1 && segundos === 29) {
66+
this.thankYou(a1Picked, a2Picked);
4367
}
4468
if (minutos === 1 && segundos === 2) {
45-
paFile.play();
69+
a1File.play();
70+
saveToLocal(audiosOf1minRemaining, +a1Random, ls1minkey);
4671
this.setState({
4772
checkUserOne: true,
4873
})
49-
if (!this.state.showUsers) {
50-
console.log('execute')
51-
}
5274
}
5375
if (minutos === 0 && segundos === 2) {
54-
saFile.play();
76+
a2File.play();
77+
saveToLocal(audiosOfTimeupRemaining, +a2Random, lstimeupkey);
5578
this.setState({
5679
checkUserTwo: true,
5780
})
58-
window.alert('Lembrar de colocar a aula pra gravar!');
5981
}
6082
if (segundos === 0) {
6183
if (minutos === 0) {

0 commit comments

Comments
 (0)