diff --git a/src/components/saves/Save.vue b/src/components/saves/Save.vue index d8af7d0..93cfee2 100644 --- a/src/components/saves/Save.vue +++ b/src/components/saves/Save.vue @@ -53,6 +53,9 @@
+ cloud @@ -80,6 +83,7 @@ import DangerButton from "../fields/DangerButton.vue"; import FeedbackButton from "../fields/FeedbackButton.vue"; import Text from "../fields/Text.vue"; import type { LoadablePlayerData } from "./SavesManager.vue"; +import { galaxy, syncedSaves } from "util/galaxy"; const _props = defineProps<{ save: LoadablePlayerData; @@ -115,6 +119,9 @@ const isActive = computed( const currentTime = computed(() => isActive.value ? player.time : (save.value != null && save.value.time) ?? 0 ); +const synced = computed( + () => !unref(readonly) && galaxy.value?.loggedIn && syncedSaves.value.includes(save.value.id) +); function changeName() { emit("editName", newName.value); @@ -196,6 +203,13 @@ function changeName() { .time { font-size: small; } + +.synced { + font-size: 100%; + margin-right: 0.5em; + vertical-align: middle; + cursor: default; +} diff --git a/src/util/galaxy.ts b/src/util/galaxy.ts index d74d17b..ab79d82 100644 --- a/src/util/galaxy.ts +++ b/src/util/galaxy.ts @@ -10,6 +10,7 @@ export const galaxy = ref(); export const conflictingSaves = ref< { id: string; local: LoadablePlayerData; cloud: LoadablePlayerData; slot: number }[] >([]); +export const syncedSaves = ref([]); export function sync() { if (galaxy.value == null || !galaxy.value.loggedIn) { @@ -19,7 +20,13 @@ export function sync() { // Pause syncing while resolving conflicted saves return; } - galaxy.value.getSaveList().then(syncSaves).catch(console.error); + galaxy.value + .getSaveList() + .then(syncSaves) + .then(list => { + syncedSaves.value = list.map(s => s.content.id); + }) + .catch(console.error); } // Setup Galaxy API