Misc fixes with vibrate and sound
This commit is contained in:
parent
0f9544bf16
commit
194c4cf3d7
@ -15,6 +15,7 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"es6-promise": "^4.2.4",
|
"es6-promise": "^4.2.4",
|
||||||
|
"howler": "^2.0.14",
|
||||||
"isomorphic-fetch": "^2.2.1",
|
"isomorphic-fetch": "^2.2.1",
|
||||||
"leaflet": "^1.3.1",
|
"leaflet": "^1.3.1",
|
||||||
"leaflet-tracksymbol": "^1.0.8",
|
"leaflet-tracksymbol": "^1.0.8",
|
||||||
|
@ -50,6 +50,7 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
|
import { Howl } from 'howler';
|
||||||
|
|
||||||
import { REPORT_TYPES, REPORT_ALARM_VIBRATION_SEQUENCE } from '@/constants';
|
import { REPORT_TYPES, REPORT_ALARM_VIBRATION_SEQUENCE } from '@/constants';
|
||||||
import beepSound from '@/assets/beep.mp3';
|
import beepSound from '@/assets/beep.mp3';
|
||||||
@ -60,10 +61,6 @@ export default {
|
|||||||
const reportID = this.$store.state.reportDetails.id;
|
const reportID = this.$store.state.reportDetails.id;
|
||||||
if (reportID != null) {
|
if (reportID != null) {
|
||||||
const report = this.$store.state.reports.find(item => item.id === reportID);
|
const report = this.$store.state.reports.find(item => item.id === reportID);
|
||||||
// If the report is automatically opened due to proximity
|
|
||||||
if (!this.$store.state.reportDetails.userAsked) {
|
|
||||||
this.notifyUser();
|
|
||||||
}
|
|
||||||
return {
|
return {
|
||||||
fromNow: moment(report.attributes.datetime).fromNow(),
|
fromNow: moment(report.attributes.datetime).fromNow(),
|
||||||
icon: this.icons[report.attributes.type],
|
icon: this.icons[report.attributes.type],
|
||||||
@ -80,8 +77,12 @@ export default {
|
|||||||
Object.keys(REPORT_TYPES).forEach((type) => {
|
Object.keys(REPORT_TYPES).forEach((type) => {
|
||||||
icons[type] = REPORT_TYPES[type].image;
|
icons[type] = REPORT_TYPES[type].image;
|
||||||
});
|
});
|
||||||
|
const onplayerror = () => this.beepAudio.once('unlock', () => this.beepAudio.play());
|
||||||
return {
|
return {
|
||||||
beepAudio: new Audio(beepSound),
|
beepAudio: new Howl({
|
||||||
|
src: [beepSound],
|
||||||
|
onplayerror,
|
||||||
|
}),
|
||||||
icons,
|
icons,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
@ -105,8 +106,6 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
playBeepSound() {
|
playBeepSound() {
|
||||||
// Reset sound to the beginning
|
|
||||||
this.beepAudio.currentTime = 0;
|
|
||||||
// Force play it
|
// Force play it
|
||||||
this.beepAudio.play();
|
this.beepAudio.play();
|
||||||
},
|
},
|
||||||
@ -116,6 +115,17 @@ export default {
|
|||||||
return this.$store.dispatch('upvote', { id: reportID });
|
return this.$store.dispatch('upvote', { id: reportID });
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
watch: {
|
||||||
|
report(newReport, oldReport) {
|
||||||
|
if (newReport) {
|
||||||
|
const isDifferentReport = (oldReport === null) || (newReport.id !== oldReport.id);
|
||||||
|
// If the report is automatically opened due to proximity
|
||||||
|
if (!this.$store.state.reportDetails.userAsked && isDifferentReport) {
|
||||||
|
this.notifyUser();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -25,8 +25,11 @@ import {
|
|||||||
export function fetchReports({ commit }) {
|
export function fetchReports({ commit }) {
|
||||||
commit(IS_LOADING);
|
commit(IS_LOADING);
|
||||||
return api.getActiveReports()
|
return api.getActiveReports()
|
||||||
.then(reports => commit(STORE_REPORTS, { reports }))
|
.then((reports) => {
|
||||||
.finally(() => commit(IS_DONE_LOADING));
|
commit(STORE_REPORTS, { reports });
|
||||||
|
commit(IS_DONE_LOADING);
|
||||||
|
})
|
||||||
|
.catch(() => commit(IS_DONE_LOADING));
|
||||||
}
|
}
|
||||||
|
|
||||||
export function downvote({ commit }, { id }) {
|
export function downvote({ commit }, { id }) {
|
||||||
@ -46,8 +49,11 @@ export function upvote({ commit }, { id }) {
|
|||||||
export function saveReport({ commit }, { type, lat, lng }) {
|
export function saveReport({ commit }, { type, lat, lng }) {
|
||||||
commit(IS_LOADING);
|
commit(IS_LOADING);
|
||||||
return api.saveReport(type, lat, lng)
|
return api.saveReport(type, lat, lng)
|
||||||
.then(report => commit(PUSH_REPORT, { report }))
|
.then((report) => {
|
||||||
.finally(() => commit(IS_DONE_LOADING));
|
commit(PUSH_REPORT, { report });
|
||||||
|
commit(IS_DONE_LOADING);
|
||||||
|
})
|
||||||
|
.catch(() => commit(IS_DONE_LOADING));
|
||||||
}
|
}
|
||||||
|
|
||||||
export function saveUnsentReport({ commit }, { report }) {
|
export function saveUnsentReport({ commit }, { report }) {
|
||||||
|
@ -65,9 +65,15 @@ export default {
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
goToMap() {
|
goToMap() {
|
||||||
|
// Eventually vibrate, to ensure permission is prompted before driving
|
||||||
|
if (this.$store.state.settings.hasVibratePermission && navigator.vibrate) {
|
||||||
|
navigator.vibrate(1);
|
||||||
|
}
|
||||||
|
|
||||||
if (!this.$store.state.settings.skipOnboarding) {
|
if (!this.$store.state.settings.skipOnboarding) {
|
||||||
this.$store.dispatch('setSetting', { setting: 'skipOnboarding', value: true });
|
this.$store.dispatch('setSetting', { setting: 'skipOnboarding', value: true });
|
||||||
}
|
}
|
||||||
|
|
||||||
this.$router.push({ name: 'Map' });
|
this.$router.push({ name: 'Map' });
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -3831,6 +3831,10 @@ hosted-git-info@^2.1.4:
|
|||||||
version "2.6.0"
|
version "2.6.0"
|
||||||
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.6.0.tgz#23235b29ab230c576aab0d4f13fc046b0b038222"
|
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.6.0.tgz#23235b29ab230c576aab0d4f13fc046b0b038222"
|
||||||
|
|
||||||
|
howler@^2.0.14:
|
||||||
|
version "2.0.14"
|
||||||
|
resolved "https://registry.yarnpkg.com/howler/-/howler-2.0.14.tgz#28e37800fea002fea147a3ca033660c4f1288a99"
|
||||||
|
|
||||||
hpack.js@^2.1.6:
|
hpack.js@^2.1.6:
|
||||||
version "2.1.6"
|
version "2.1.6"
|
||||||
resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2"
|
resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2"
|
||||||
|
Loading…
Reference in New Issue
Block a user