From a12e5a15faede2a7f1dfcfac237cce9404c52310 Mon Sep 17 00:00:00 2001 From: Chubby Granny Chaser Date: Fri, 18 Apr 2025 22:57:28 +0100 Subject: [PATCH] chore: bumping version --- package.json | 3 +- .../events/cloud-save/upload-save-game.ts | 7 +--- src/main/index.ts | 3 +- src/main/services/cloud-sync.ts | 38 +++++++++++++++---- src/main/services/process-watcher.ts | 12 +----- src/renderer/src/hooks/use-date.ts | 5 +-- src/shared/index.ts | 4 +- yarn.lock | 22 +---------- 8 files changed, 40 insertions(+), 54 deletions(-) diff --git a/package.json b/package.json index 1e1ca933..0cefd271 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hydralauncher", - "version": "3.4.3", + "version": "3.4.4", "description": "Hydra", "main": "./out/main/index.js", "author": "Los Broxas", @@ -59,7 +59,6 @@ "i18next-browser-languagedetector": "^7.2.1", "jsdom": "^24.0.0", "jsonwebtoken": "^9.0.2", - "kill-port": "^2.0.1", "lodash-es": "^4.17.21", "parse-torrent": "^11.0.17", "piscina": "^4.7.0", diff --git a/src/main/events/cloud-save/upload-save-game.ts b/src/main/events/cloud-save/upload-save-game.ts index 629ac127..d2942cb4 100644 --- a/src/main/events/cloud-save/upload-save-game.ts +++ b/src/main/events/cloud-save/upload-save-game.ts @@ -1,8 +1,6 @@ import { CloudSync } from "@main/services"; import { registerEvent } from "../register-event"; import type { GameShop } from "@types"; -import { t } from "i18next"; -import { formatDate } from "date-fns"; const uploadSaveGame = async ( _event: Electron.IpcMainInvokeEvent, @@ -14,10 +12,7 @@ const uploadSaveGame = async ( objectId, shop, downloadOptionTitle, - t("backup_from", { - ns: "game_details", - date: formatDate(new Date(), "yyyy-MM-dd"), - }) + CloudSync.getBackupLabel(false) ); }; diff --git a/src/main/index.ts b/src/main/index.ts index 7d9ad0a2..6999cf42 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -3,7 +3,6 @@ import updater from "electron-updater"; import i18n from "i18next"; import path from "node:path"; import url from "node:url"; -import kill from "kill-port"; import { electronApp, optimizer } from "@electron-toolkit/utils"; import { logger, WindowManager } from "@main/services"; import resources from "@locales"; @@ -58,7 +57,7 @@ app.whenReady().then(async () => { return net.fetch(url.pathToFileURL(decodeURI(filePath)).toString()); }); - await kill(PythonRPC.RPC_PORT).finally(() => loadState()); + await loadState(); const language = await db.get(levelKeys.language, { valueEncoding: "utf-8", diff --git a/src/main/services/cloud-sync.ts b/src/main/services/cloud-sync.ts index aa0f5ff7..bc2ef0c1 100644 --- a/src/main/services/cloud-sync.ts +++ b/src/main/services/cloud-sync.ts @@ -13,9 +13,28 @@ import { logger } from "./logger"; import { WindowManager } from "./window-manager"; import axios from "axios"; import { Ludusavi } from "./ludusavi"; -import { SubscriptionRequiredError } from "@shared"; +import { formatDate, SubscriptionRequiredError } from "@shared"; +import i18next, { t } from "i18next"; export class CloudSync { + public static getBackupLabel(automatic: boolean) { + const language = i18next.language; + + const date = formatDate(new Date(), language); + + if (automatic) { + return t("automatic_backup_from", { + ns: "game_details", + date, + }); + } + + return t("backup_from", { + ns: "game_details", + date, + }); + } + private static async bundleBackup( shop: GameShop, objectId: string, @@ -25,7 +44,11 @@ export class CloudSync { // Remove existing backup if (fs.existsSync(backupPath)) { - fs.rmSync(backupPath, { recursive: true }); + try { + await fs.promises.rm(backupPath, { recursive: true }); + } catch (error) { + logger.error("Failed to remove backup path", error); + } } await Ludusavi.backupGame(shop, objectId, backupPath, winePrefix); @@ -101,11 +124,10 @@ export class CloudSync { true ); - fs.rm(bundleLocation, (err) => { - if (err) { - logger.error("Failed to remove tar file", err); - throw err; - } - }); + try { + await fs.promises.unlink(bundleLocation); + } catch (error) { + logger.error("Failed to remove tar file", error); + } } } diff --git a/src/main/services/process-watcher.ts b/src/main/services/process-watcher.ts index 24ab45ea..fd3987df 100644 --- a/src/main/services/process-watcher.ts +++ b/src/main/services/process-watcher.ts @@ -6,9 +6,7 @@ import axios from "axios"; import { exec } from "child_process"; import { ProcessPayload } from "./download/types"; import { gamesSublevel, levelKeys } from "@main/level"; -import { t } from "i18next"; import { CloudSync } from "./cloud-sync"; -import { formatDate } from "date-fns"; const commands = { findWineDir: `lsof -c wine 2>/dev/null | grep '/drive_c/windows$' | head -n 1 | awk '{for(i=9;i<=NF;i++) printf "%s ", $i; print ""}'`, @@ -234,10 +232,7 @@ function onOpenGame(game: Game) { game.objectId, game.shop, null, - t("automatic_backup_from", { - ns: "game_details", - date: formatDate(new Date(), "yyyy-MM-dd"), - }) + CloudSync.getBackupLabel(true) ); } } else { @@ -308,10 +303,7 @@ const onCloseGame = (game: Game) => { game.objectId, game.shop, null, - t("automatic_backup_from", { - ns: "game_details", - date: formatDate(new Date(), "yyyy-MM-dd"), - }) + CloudSync.getBackupLabel(true) ); } } else { diff --git a/src/renderer/src/hooks/use-date.ts b/src/renderer/src/hooks/use-date.ts index e0b3322a..d00d3ba3 100644 --- a/src/renderer/src/hooks/use-date.ts +++ b/src/renderer/src/hooks/use-date.ts @@ -1,7 +1,6 @@ import { formatDate, getDateLocale } from "@shared"; import { format, formatDistance, subMilliseconds } from "date-fns"; import type { FormatDistanceOptions } from "date-fns"; -import { enUS } from "date-fns/locale"; import { useTranslation } from "react-i18next"; export function useDate() { @@ -41,10 +40,10 @@ export function useDate() { }, formatDateTime: (date: number | Date | string): string => { - const locale = getDateLocale(language); return format( date, - locale == enUS ? "MM/dd/yyyy - HH:mm" : "dd/MM/yyyy HH:mm" + language == "en" ? "MM-dd-yyyy - hh:mm a" : "dd/MM/yyyy HH:mm", + { locale: getDateLocale(language) } ); }, diff --git a/src/shared/index.ts b/src/shared/index.ts index 39b035ff..a7d0a8dc 100644 --- a/src/shared/index.ts +++ b/src/shared/index.ts @@ -173,7 +173,5 @@ export const formatDate = ( language: string ): string => { if (isNaN(new Date(date).getDate())) return "N/A"; - - const locale = getDateLocale(language); - return format(date, locale == enUS ? "MM/dd/yyyy" : "dd/MM/yyyy"); + return format(date, language == "en" ? "MM-dd-yyyy" : "dd/MM/yyyy"); }; diff --git a/yarn.lock b/yarn.lock index f6eeecae..4a3727ef 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1460,9 +1460,9 @@ optionalDependencies: global-agent "^3.0.0" -"@electron/node-gyp@git+https://github.com/electron/node-gyp.git#06b29aafb7708acef8b3669835c8a7857ebc92d2": +"@electron/node-gyp@https://github.com/electron/node-gyp#06b29aafb7708acef8b3669835c8a7857ebc92d2": version "10.2.0-electron.1" - resolved "git+https://github.com/electron/node-gyp.git#06b29aafb7708acef8b3669835c8a7857ebc92d2" + resolved "https://github.com/electron/node-gyp#06b29aafb7708acef8b3669835c8a7857ebc92d2" dependencies: env-paths "^2.2.0" exponential-backoff "^3.1.1" @@ -5814,11 +5814,6 @@ get-symbol-description@^1.1.0: es-errors "^1.3.0" get-intrinsic "^1.2.6" -get-them-args@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/get-them-args/-/get-them-args-1.3.2.tgz#74a20ba8a4abece5ae199ad03f2bcc68fdfc9ba5" - integrity sha512-LRn8Jlk+DwZE4GTlDbT3Hikd1wSHgLMme/+7ddlqKd7ldwR6LjJgTVWzBnR01wnYGe4KgrXjg287RaI22UHmAw== - git-raw-commits@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-4.0.0.tgz#b212fd2bff9726d27c1283a1157e829490593285" @@ -6826,14 +6821,6 @@ keyv@^4.0.0, keyv@^4.5.3: dependencies: json-buffer "3.0.1" -kill-port@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/kill-port/-/kill-port-2.0.1.tgz#e5e18e2706b13d54320938be42cb7d40609b15cf" - integrity sha512-e0SVOV5jFo0mx8r7bS29maVWp17qGqLBZ5ricNSajON6//kmb7qqqNnml4twNE8Dtj97UQD+gNFOaipS/q1zzQ== - dependencies: - get-them-args "1.3.2" - shell-exec "1.0.2" - language-subtag-registry@^0.3.20: version "0.3.23" resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz#23529e04d9e3b74679d70142df3fd2eb6ec572e7" @@ -8459,11 +8446,6 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shell-exec@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/shell-exec/-/shell-exec-1.0.2.tgz#2e9361b0fde1d73f476c4b6671fa17785f696756" - integrity sha512-jyVd+kU2X+mWKMmGhx4fpWbPsjvD53k9ivqetutVW/BQ+WIZoDoP4d8vUMGezV6saZsiNoW2f9GIhg9Dondohg== - side-channel-list@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.0.tgz#10cb5984263115d3b7a0e336591e290a830af8ad"