From 6c491918abcd7de801d5ab191d725245575c9040 Mon Sep 17 00:00:00 2001 From: Khafra Date: Fri, 5 Jul 2024 11:47:24 -0400 Subject: [PATCH] add cloud save loading (#608) --- src/Login.ts | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/Login.ts b/src/Login.ts index 83b94986f..752439d78 100644 --- a/src/Login.ts +++ b/src/Login.ts @@ -1,6 +1,7 @@ import i18next from 'i18next' import localforage from 'localforage' import { DOMCacheGetOrSet } from './Cache/DOM' +import { importSynergism } from './ImportExport' import { QuarkHandler, setQuarkBonus } from './Quark' import { player } from './Synergism' import { Alert } from './UpdateHTML' @@ -70,6 +71,8 @@ interface SynergismPatreonUserAPIResponse extends SynergismUserAPIResponse { type: 'patreon' } +type CloudSave = null | { save: string } + export async function handleLogin () { const subtabElement = document.querySelector('#accountSubTab > div.scrollbarX')! const currentBonus = DOMCacheGetOrSet('currentBonus') @@ -118,7 +121,7 @@ export async function handleLogin () { if (type === 'discord') { user = member?.nick ?? member?.user?.username ?? member?.user?.global_name ?? null } else { - user = member.user.username + user = member?.user.username } const boosted = type === 'discord' ? Boolean(member?.premium_since) : false @@ -169,8 +172,9 @@ export async function handleLogin () { cloudSaveElement.style.cssText = 'border: 2px solid #5865F2; height: 25px; width: 150px;' cloudSaveElement.textContent = 'Save to Cloud ☁' + loadCloudSaveElement.addEventListener('click', getCloudSave) loadCloudSaveElement.style.cssText = 'border: 2px solid #5865F2; height: 25px; width: 150px;' - loadCloudSaveElement.textContent = 'Load from Cloud ☽ [WIP]' + loadCloudSaveElement.textContent = 'Load from Cloud ☽' } const cloudSaveParent = document.createElement('div') @@ -237,6 +241,13 @@ async function saveToCloud () { } } +async function getCloudSave () { + const response = await fetch('https://synergism.cc/api/v1/saves/get') + const save = await response.json() as CloudSave + + await importSynergism(save?.save ?? null) +} + function parseDocumentCookie () { return document.cookie.split(';').reduce((obj, item) => { if (!item.includes('=')) return obj