feat(hunt): track walking distance via GPS, show live locations on map
Docker Image CI / test (push) Failing after 41s
Docker Image CI / deploy (push) Skipped
Tests / unit (push) Failing after 36s
Tests / integration (push) Successful in 1m34s

Add foreground-only GPS distance tracking for hunts
This commit is contained in:
2026-09-27 20:55:58 +02:00
parent a0fc836c05
commit 61cc516f47
43 changed files with 2313 additions and 24 deletions
+7 -1
View File
@@ -1,13 +1,19 @@
export const useHuntStore = defineStore('hunt', () => {
const huntId = ref<number>();
const isMember = ref(false);
const trackDistance = ref(false);
function setMembership(id: number, member: boolean) {
huntId.value = id;
isMember.value = member;
}
return { huntId, isMember, setMembership };
function setTrackDistance(id: number, value: boolean) {
huntId.value = id;
trackDistance.value = value;
}
return { huntId, isMember, trackDistance, setMembership, setTrackDistance };
});
if (import.meta.hot) {
import.meta.hot.accept(acceptHMRUpdate(useHuntStore, import.meta.hot));
+18 -1
View File
@@ -3,8 +3,25 @@ export const useSettingsStore = defineStore(
() => {
const hideAnswers = ref(true);
const isSidebarVisible = ref(false);
// Per-hunt, client-only consent for GPS distance tracking. Off by default;
// the server cannot prove consent, so this lives only in the client store.
const trackConsent = ref<Record<number, boolean>>({});
return { hideAnswers, isSidebarVisible };
function hasTrackConsent(huntId: number): boolean {
return trackConsent.value[huntId] ?? false;
}
function setTrackConsent(huntId: number, consent: boolean) {
trackConsent.value[huntId] = consent;
}
return {
hideAnswers,
isSidebarVisible,
trackConsent,
hasTrackConsent,
setTrackConsent
};
},
{ persist: true }
);