fixed bug
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
import { type Beat, createBeat, deserialise as deserialiseBeat, type BeatManager } from "@/Beat";
|
import { type Beat, createBeat, deserialise as deserialiseBeat, type BeatManager } from "@/Beat";
|
||||||
import { inject, computed, type InjectionKey, ref, shallowRef, triggerRef, watch, onScopeDispose } from "vue";
|
import { inject, computed, type InjectionKey, ref, shallowRef, triggerRef, watch, onScopeDispose, nextTick } from "vue";
|
||||||
|
|
||||||
function defaultMainBeatGroup(manager: BeatManager): Beat {
|
function defaultMainBeatGroup(manager: BeatManager): Beat {
|
||||||
const defaultSettings = {
|
const defaultSettings = {
|
||||||
@@ -28,7 +28,6 @@ export function createBeatStore() {
|
|||||||
const beats = shallowRef<Beat[]>([ defaultMainBeatGroup(manager) ]);
|
const beats = shallowRef<Beat[]>([ defaultMainBeatGroup(manager) ]);
|
||||||
const activeBeatIndex = ref(0);
|
const activeBeatIndex = ref(0);
|
||||||
const activeBeat = computed<Beat | null>(() => beats.value[activeBeatIndex.value] ?? null);
|
const activeBeat = computed<Beat | null>(() => beats.value[activeBeatIndex.value] ?? null);
|
||||||
const autoSave = ref(true);
|
|
||||||
const orientation = ref<"horizontal" | "vertical">("horizontal");
|
const orientation = ref<"horizontal" | "vertical">("horizontal");
|
||||||
|
|
||||||
function resetActiveBeat(): void {
|
function resetActiveBeat(): void {
|
||||||
@@ -48,9 +47,6 @@ export function createBeatStore() {
|
|||||||
function addNewBeat(): void {
|
function addNewBeat(): void {
|
||||||
const newBeat = defaultMainBeatGroup(manager);
|
const newBeat = defaultMainBeatGroup(manager);
|
||||||
beats.value.push(newBeat);
|
beats.value.push(newBeat);
|
||||||
if (autoSave.value) {
|
|
||||||
save("localStorage");
|
|
||||||
}
|
|
||||||
triggerRef(beats);
|
triggerRef(beats);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -83,7 +79,7 @@ export function createBeatStore() {
|
|||||||
} else {
|
} else {
|
||||||
resetActiveBeat();
|
resetActiveBeat();
|
||||||
}
|
}
|
||||||
saveDirty.value = false;
|
nextTick(() => saveDirty.value = false);
|
||||||
}
|
}
|
||||||
|
|
||||||
function bakeAll(): void {
|
function bakeAll(): void {
|
||||||
@@ -91,7 +87,18 @@ export function createBeatStore() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
watch([activeBeatIndex, orientation, beats], () => {
|
watch([activeBeatIndex, orientation, beats], () => {
|
||||||
save("localStorage");
|
saveDirty.value = true;
|
||||||
|
});
|
||||||
|
|
||||||
|
const saveInterval = setInterval(() => saveDirty && save("localStorage"), 5 * 60 * 1000);
|
||||||
|
|
||||||
|
onScopeDispose(() => clearInterval(saveInterval));
|
||||||
|
|
||||||
|
window.addEventListener("beforeunload", (e) => {
|
||||||
|
if (saveDirty.value) {
|
||||||
|
e.preventDefault();
|
||||||
|
e.returnValue = true;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const savedItem = localStorage.getItem("drum-slayer-save");
|
const savedItem = localStorage.getItem("drum-slayer-save");
|
||||||
@@ -101,24 +108,10 @@ export function createBeatStore() {
|
|||||||
loadFromSave(serial);
|
loadFromSave(serial);
|
||||||
}
|
}
|
||||||
|
|
||||||
const saveInterval = setInterval(() => saveDirty && save("localStorage"), 5 * 60 * 1000);
|
|
||||||
|
|
||||||
watch(saveDirty, () => console.log(saveDirty.value));
|
|
||||||
|
|
||||||
onScopeDispose(() => clearInterval(saveInterval));
|
|
||||||
|
|
||||||
window.addEventListener("beforeunload", (e) => {
|
|
||||||
if (saveDirty) {
|
|
||||||
e.preventDefault();
|
|
||||||
e.returnValue = true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
beats,
|
beats,
|
||||||
activeBeatIndex,
|
activeBeatIndex,
|
||||||
activeBeat,
|
activeBeat,
|
||||||
autoSave,
|
|
||||||
saveDirty,
|
saveDirty,
|
||||||
orientation,
|
orientation,
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user