From 42af2b63d650ff1549ae6afe75249467336065d9 Mon Sep 17 00:00:00 2001 From: tobspr Date: Sun, 23 May 2021 17:28:39 +0200 Subject: [PATCH] Authorize via steam --- electron/steam.js | 30 +++++++++++++++++------------- src/js/game/achievement_proxy.js | 6 ++++++ src/js/game/game_mode.js | 5 +++++ src/js/game/modes/regular.js | 5 +++++ src/js/platform/api.js | 10 ---------- 5 files changed, 33 insertions(+), 23 deletions(-) diff --git a/electron/steam.js b/electron/steam.js index 9cf900b4..672fccae 100644 --- a/electron/steam.js +++ b/electron/steam.js @@ -47,6 +47,8 @@ function listen() { return; } + console.log("Adding listeners"); + ipcMain.handle("steam:get-achievement-names", getAchievementNames); ipcMain.handle("steam:activate-achievement", activateAchievement); @@ -56,22 +58,24 @@ function listen() { .join(""); } - ipcMain.on("steam:get-ticket", (event, arg) => { + ipcMain.handle("steam:get-ticket", (event, arg) => { console.log("Requested steam ticket ..."); - greenworks.getAuthSessionTicket( - success => { - const ticketHex = bufferToHex(success.ticket); - event.reply("steam:ticket-success", ticketHex); - }, - error => { - console.error("Failed to get steam ticket:", error); - event.reply("steam:ticket-error", "" + error); - } - ); + return new Promise((resolve, reject) => { + greenworks.getAuthSessionTicket( + success => { + const ticketHex = bufferToHex(success.ticket); + resolve(ticketHex); + }, + error => { + console.error("Failed to get steam ticket:", error); + reject(error); + } + ); + }); }); - ipcMain.on("steam:check-app-ownership", (event, appId) => { - event.reply(greenworks.isSubscribedApp(appId)); + ipcMain.handle("steam:check-app-ownership", (event, appId) => { + return Promise.resolve(greenworks.isSubscribedApp(appId)); }); } diff --git a/src/js/game/achievement_proxy.js b/src/js/game/achievement_proxy.js index ed05b700..9077b283 100644 --- a/src/js/game/achievement_proxy.js +++ b/src/js/game/achievement_proxy.js @@ -32,6 +32,12 @@ export class AchievementProxy { } onLoad() { + if (!this.root.gameMode.hasAchievements()) { + logger.log("Disabling achievements because game mode does not have achievements"); + this.disabled = true; + return; + } + this.provider .onLoad(this.root) .then(() => { diff --git a/src/js/game/game_mode.js b/src/js/game/game_mode.js index 8abeafba..5eca211a 100644 --- a/src/js/game/game_mode.js +++ b/src/js/game/game_mode.js @@ -112,6 +112,11 @@ export class GameMode extends BasicSerializableObject { return true; } + /** @returns {boolean} */ + hasAchievements() { + return false; + } + /** @returns {number} */ getMinimumZoom() { return 0.1; diff --git a/src/js/game/modes/regular.js b/src/js/game/modes/regular.js index 0b71ff39..8153dca9 100644 --- a/src/js/game/modes/regular.js +++ b/src/js/game/modes/regular.js @@ -615,4 +615,9 @@ export class RegularGameMode extends GameMode { getIsFreeplayAvailable() { return this.root.app.restrictionMgr.getHasExtendedLevelsAndFreeplay(); } + + /** @returns {boolean} */ + hasAchievements() { + return true; + } } diff --git a/src/js/platform/api.js b/src/js/platform/api.js index b803529f..2219541e 100644 --- a/src/js/platform/api.js +++ b/src/js/platform/api.js @@ -7,7 +7,6 @@ import { getIPCRenderer } from "../core/utils"; import { T } from "../translations"; const logger = createLogger("puzzle-api"); -const rusha = require("rusha"); export class ClientAPI { /** @@ -22,15 +21,6 @@ export class ClientAPI { * @type {string|null} */ this.token = null; - - this.syncToken = window.localStorage.getItem("tmp.syncToken"); - if (!this.syncToken) { - this.syncToken = rusha - .createHash() - .update(new Date().getTime() + "=" + Math.random()) - .digest("hex"); - window.localStorage.setItem("tmp.syncToken", this.syncToken); - } } getEndpoint() {