From e85a568e6eaf14f9da851647867f8d693ce04e37 Mon Sep 17 00:00:00 2001
From: Chubby Granny Chaser
Date: Mon, 3 Feb 2025 13:50:34 +0000
Subject: [PATCH 01/11] fix: fixing seeding on level
---
src/main/events/torrenting/pause-game-seed.ts | 1 +
src/main/events/torrenting/resume-game-seed.ts | 1 +
src/renderer/src/pages/downloads/download-group.tsx | 10 +++++-----
3 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/src/main/events/torrenting/pause-game-seed.ts b/src/main/events/torrenting/pause-game-seed.ts
index b19da525..fb628ee1 100644
--- a/src/main/events/torrenting/pause-game-seed.ts
+++ b/src/main/events/torrenting/pause-game-seed.ts
@@ -15,6 +15,7 @@ const pauseGameSeed = async (
await downloadsSublevel.put(downloadKey, {
...download,
+ status: "complete",
shouldSeed: false,
});
diff --git a/src/main/events/torrenting/resume-game-seed.ts b/src/main/events/torrenting/resume-game-seed.ts
index 63bab952..322e3c5d 100644
--- a/src/main/events/torrenting/resume-game-seed.ts
+++ b/src/main/events/torrenting/resume-game-seed.ts
@@ -14,6 +14,7 @@ const resumeGameSeed = async (
await downloadsSublevel.put(levelKeys.game(shop, objectId), {
...download,
+ status: "seeding",
shouldSeed: true,
});
diff --git a/src/renderer/src/pages/downloads/download-group.tsx b/src/renderer/src/pages/downloads/download-group.tsx
index 8c61672c..5bfe2948 100644
--- a/src/renderer/src/pages/downloads/download-group.tsx
+++ b/src/renderer/src/pages/downloads/download-group.tsx
@@ -173,7 +173,7 @@ export function DownloadGroup({
const deleting = isGameDeleting(game.id);
- if (download?.progress === 1) {
+ if (game.download?.progress === 1) {
return [
{
label: t("install"),
@@ -188,8 +188,8 @@ export function DownloadGroup({
disabled: deleting,
icon: ,
show:
- download.status === "seeding" &&
- download.downloader === Downloader.Torrent,
+ game.download?.status === "seeding" &&
+ game.download?.downloader === Downloader.Torrent,
onClick: () => {
pauseSeeding(game.shop, game.objectId);
},
@@ -199,8 +199,8 @@ export function DownloadGroup({
disabled: deleting,
icon: ,
show:
- download.status !== "seeding" &&
- download.downloader === Downloader.Torrent,
+ game.download?.status !== "seeding" &&
+ game.download?.downloader === Downloader.Torrent,
onClick: () => {
resumeSeeding(game.shop, game.objectId);
},
From 1b0606027295e59463ab5ae656d044698ab9338c Mon Sep 17 00:00:00 2001
From: Chubby Granny Chaser
Date: Mon, 3 Feb 2025 13:54:03 +0000
Subject: [PATCH 02/11] fix: fixing seeding on level
---
src/renderer/src/pages/downloads/download-group.tsx | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/src/renderer/src/pages/downloads/download-group.tsx b/src/renderer/src/pages/downloads/download-group.tsx
index 5bfe2948..be640bb3 100644
--- a/src/renderer/src/pages/downloads/download-group.tsx
+++ b/src/renderer/src/pages/downloads/download-group.tsx
@@ -280,11 +280,7 @@ export function DownloadGroup({
- {
- DOWNLOADER_NAME[
- game?.download?.downloader as Downloader
- ]
- }
+ {DOWNLOADER_NAME[game.download?.downloader as Downloader]}
From 0e88300747c1b08a741983f690220754294070a6 Mon Sep 17 00:00:00 2001
From: Hachi-R
Date: Mon, 3 Feb 2025 12:55:40 -0300
Subject: [PATCH 03/11] fix: improve download and seeding logic in main process
---
.../events/torrenting/resume-game-seed.ts | 5 +++--
src/main/main.ts | 20 +++++++++----------
2 files changed, 12 insertions(+), 13 deletions(-)
diff --git a/src/main/events/torrenting/resume-game-seed.ts b/src/main/events/torrenting/resume-game-seed.ts
index 322e3c5d..ae098450 100644
--- a/src/main/events/torrenting/resume-game-seed.ts
+++ b/src/main/events/torrenting/resume-game-seed.ts
@@ -8,11 +8,12 @@ const resumeGameSeed = async (
shop: GameShop,
objectId: string
) => {
- const download = await downloadsSublevel.get(levelKeys.game(shop, objectId));
+ const downloadKey = levelKeys.game(shop, objectId);
+ const download = await downloadsSublevel.get(downloadKey);
if (!download) return;
- await downloadsSublevel.put(levelKeys.game(shop, objectId), {
+ await downloadsSublevel.put(downloadKey, {
...download,
status: "seeding",
shouldSeed: true,
diff --git a/src/main/main.ts b/src/main/main.ts
index 4824a1a5..68d4684b 100644
--- a/src/main/main.ts
+++ b/src/main/main.ts
@@ -57,23 +57,21 @@ export const loadState = async () => {
.values()
.all()
.then((games) => {
- return sortBy(
- games.filter((game) => game.queued),
- "timestamp",
- "DESC"
- );
+ return sortBy(games, "timestamp", "DESC");
});
- const [nextItemOnQueue] = downloads;
+ const [nextItemOnQueue] = downloads.filter((game) => game.queued);
const downloadsToSeed = downloads.filter(
- (download) =>
- download.shouldSeed &&
- download.downloader === Downloader.Torrent &&
- download.progress === 1 &&
- download.uri !== null
+ (game) =>
+ game.shouldSeed &&
+ game.downloader === Downloader.Torrent &&
+ game.progress === 1 &&
+ game.uri !== null
);
+ console.log("downloadsToSeed", downloadsToSeed);
+
await DownloadManager.startRPC(nextItemOnQueue, downloadsToSeed);
startMainLoop();
From 90cb35db40d91ec784fb7c33ab25f918aa1941d2 Mon Sep 17 00:00:00 2001
From: Hachi-R
Date: Mon, 3 Feb 2025 16:50:02 -0300
Subject: [PATCH 04/11] fix: improve aria2x download path detection
---
scripts/postinstall.cjs | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/scripts/postinstall.cjs b/scripts/postinstall.cjs
index 70768a7d..fc3f69dd 100644
--- a/scripts/postinstall.cjs
+++ b/scripts/postinstall.cjs
@@ -107,7 +107,10 @@ const copyAria2Macos = async () => {
};
const copyAria2 = () => {
- if (fs.existsSync("aria2")) {
+ const aria2Path =
+ process.platform === "win32" ? "aria2/aria2c.exe" : "aria2/aria2c";
+
+ if (fs.existsSync(aria2Path)) {
console.log("Aria2 already exists, skipping download...");
return;
}
From 52771d5a00d04c3d93c4c41255fc66cfb26735c2 Mon Sep 17 00:00:00 2001
From: Chubby Granny Chaser
Date: Mon, 3 Feb 2025 20:07:12 +0000
Subject: [PATCH 05/11] feat: adding articles for seeding and peers
---
python_rpc/main.py | 2 ++
.../events/torrenting/cancel-game-download.ts | 9 +++++-
.../services/download/download-manager.ts | 6 ++--
src/renderer/src/hooks/use-download.ts | 2 +-
.../src/pages/downloads/download-group.scss | 8 +++++
.../src/pages/downloads/download-group.tsx | 18 +++++++++--
.../src/pages/downloads/downloads.tsx | 32 +++++++++----------
.../modals/download-settings-modal.tsx | 6 ++--
8 files changed, 58 insertions(+), 25 deletions(-)
diff --git a/python_rpc/main.py b/python_rpc/main.py
index 2deb2029..94c34e17 100644
--- a/python_rpc/main.py
+++ b/python_rpc/main.py
@@ -159,6 +159,8 @@ def action():
downloader = downloads.get(game_id)
if downloader:
downloader.pause_download()
+
+ if downloading_game_id == game_id:
downloading_game_id = -1
elif action == 'cancel':
downloader = downloads.get(game_id)
diff --git a/src/main/events/torrenting/cancel-game-download.ts b/src/main/events/torrenting/cancel-game-download.ts
index 5d80337f..860d33bb 100644
--- a/src/main/events/torrenting/cancel-game-download.ts
+++ b/src/main/events/torrenting/cancel-game-download.ts
@@ -13,7 +13,14 @@ const cancelGameDownload = async (
await DownloadManager.cancelDownload(downloadKey);
- await downloadsSublevel.del(downloadKey);
+ const download = await downloadsSublevel.get(downloadKey);
+
+ if (!download) return;
+
+ await downloadsSublevel.put(downloadKey, {
+ ...download,
+ status: "removed",
+ });
};
registerEvent("cancelGameDownload", cancelGameDownload);
diff --git a/src/main/services/download/download-manager.ts b/src/main/services/download/download-manager.ts
index 247d5c75..789a3010 100644
--- a/src/main/services/download/download-manager.ts
+++ b/src/main/services/download/download-manager.ts
@@ -219,8 +219,10 @@ export class DownloadManager {
} as PauseDownloadPayload)
.catch(() => {});
- WindowManager.mainWindow?.setProgressBar(-1);
- this.downloadingGameId = null;
+ if (downloadKey === this.downloadingGameId) {
+ WindowManager.mainWindow?.setProgressBar(-1);
+ this.downloadingGameId = null;
+ }
}
static async resumeDownload(download: Download) {
diff --git a/src/renderer/src/hooks/use-download.ts b/src/renderer/src/hooks/use-download.ts
index 49a033c9..6d9e04d3 100644
--- a/src/renderer/src/hooks/use-download.ts
+++ b/src/renderer/src/hooks/use-download.ts
@@ -39,7 +39,7 @@ export function useDownload() {
const pauseDownload = async (shop: GameShop, objectId: string) => {
await window.electron.pauseGameDownload(shop, objectId);
await updateLibrary();
- dispatch(clearDownload());
+ if (lastPacket?.gameId === `${shop}:${objectId}`) dispatch(clearDownload());
};
const resumeDownload = async (shop: GameShop, objectId: string) => {
diff --git a/src/renderer/src/pages/downloads/download-group.scss b/src/renderer/src/pages/downloads/download-group.scss
index 2c5e9701..4a67e857 100644
--- a/src/renderer/src/pages/downloads/download-group.scss
+++ b/src/renderer/src/pages/downloads/download-group.scss
@@ -5,6 +5,14 @@
flex-direction: column;
gap: calc(globals.$spacing-unit * 2);
+ &__details-with-article {
+ display: flex;
+ align-items: center;
+ gap: calc(globals.$spacing-unit / 2);
+ align-self: flex-start;
+ cursor: pointer;
+ }
+
&__header {
display: flex;
align-items: center;
diff --git a/src/renderer/src/pages/downloads/download-group.tsx b/src/renderer/src/pages/downloads/download-group.tsx
index 66416471..6d581683 100644
--- a/src/renderer/src/pages/downloads/download-group.tsx
+++ b/src/renderer/src/pages/downloads/download-group.tsx
@@ -24,6 +24,7 @@ import {
DownloadIcon,
LinkIcon,
PlayIcon,
+ QuestionIcon,
ThreeBarsIcon,
TrashIcon,
UnlinkIcon,
@@ -122,8 +123,12 @@ export function DownloadGroup({
{download.downloader === Downloader.Torrent && (
-
+
{lastPacket?.numPeers} peers / {lastPacket?.numSeeds} seeds
+
)}
>
@@ -136,7 +141,14 @@ export function DownloadGroup({
return download.status === "seeding" &&
download.downloader === Downloader.Torrent ? (
<>
- {t("seeding")}
+
+ {t("seeding")}
+
+
+
{uploadSpeed && {uploadSpeed}/s
}
>
) : (
@@ -217,7 +229,7 @@ export function DownloadGroup({
];
}
- if (isGameDownloading || download?.status === "active") {
+ if (isGameDownloading) {
return [
{
label: t("pause"),
diff --git a/src/renderer/src/pages/downloads/downloads.tsx b/src/renderer/src/pages/downloads/downloads.tsx
index eb38c6f5..8b0e5576 100644
--- a/src/renderer/src/pages/downloads/downloads.tsx
+++ b/src/renderer/src/pages/downloads/downloads.tsx
@@ -8,7 +8,7 @@ import "./downloads.scss";
import { DeleteGameModal } from "./delete-game-modal";
import { DownloadGroup } from "./download-group";
import type { GameShop, LibraryGame, SeedingStatus } from "@types";
-import { orderBy, sortBy } from "lodash-es";
+import { orderBy } from "lodash-es";
import { ArrowDownIcon } from "@primer/octicons-react";
export default function Downloads() {
@@ -58,24 +58,24 @@ export default function Downloads() {
complete: [],
};
- const result = sortBy(library, (game) => game.download?.timestamp).reduce(
- (prev, next) => {
- /* Game has been manually added to the library or has been canceled */
- if (!next.download?.status || next.download?.status === "removed")
- return prev;
+ const result = orderBy(
+ library,
+ (game) => game.download?.timestamp,
+ "desc"
+ ).reduce((prev, next) => {
+ /* Game has been manually added to the library */
+ if (!next.download) return prev;
- /* Is downloading */
- if (lastPacket?.gameId === next.id)
- return { ...prev, downloading: [...prev.downloading, next] };
+ /* Is downloading */
+ if (lastPacket?.gameId === next.id)
+ return { ...prev, downloading: [...prev.downloading, next] };
- /* Is either queued or paused */
- if (next.download.queued || next.download?.status === "paused")
- return { ...prev, queued: [...prev.queued, next] };
+ /* Is either queued or paused */
+ if (next.download.queued || next.download?.status === "paused")
+ return { ...prev, queued: [...prev.queued, next] };
- return { ...prev, complete: [...prev.complete, next] };
- },
- initialValue
- );
+ return { ...prev, complete: [...prev.complete, next] };
+ }, initialValue);
const queued = orderBy(result.queued, (game) => game.download?.timestamp, [
"desc",
diff --git a/src/renderer/src/pages/game-details/modals/download-settings-modal.tsx b/src/renderer/src/pages/game-details/modals/download-settings-modal.tsx
index 214af1d1..0892d0cf 100644
--- a/src/renderer/src/pages/game-details/modals/download-settings-modal.tsx
+++ b/src/renderer/src/pages/game-details/modals/download-settings-modal.tsx
@@ -163,8 +163,10 @@ export function DownloadSettingsModal({
selectedDownloader === downloader ? "primary" : "outline"
}
disabled={
- downloader === Downloader.RealDebrid &&
- !userPreferences?.realDebridApiToken
+ (downloader === Downloader.RealDebrid &&
+ !userPreferences?.realDebridApiToken) ||
+ (downloader === Downloader.TorBox &&
+ !userPreferences?.torBoxApiToken)
}
onClick={() => setSelectedDownloader(downloader)}
>
From f4c1d2e7b73c47ec7748c92b99b55c4fd2a3b5ee Mon Sep 17 00:00:00 2001
From: Hachi-R
Date: Mon, 3 Feb 2025 17:15:17 -0300
Subject: [PATCH 06/11] style: fix sidebar layout
---
src/renderer/src/components/sidebar/sidebar.scss | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/renderer/src/components/sidebar/sidebar.scss b/src/renderer/src/components/sidebar/sidebar.scss
index 0640b3c5..b626835f 100644
--- a/src/renderer/src/components/sidebar/sidebar.scss
+++ b/src/renderer/src/components/sidebar/sidebar.scss
@@ -23,6 +23,7 @@
&__content {
display: flex;
flex-direction: column;
+ flex: 1;
padding: calc(globals.$spacing-unit * 2);
gap: calc(globals.$spacing-unit * 2);
width: 100%;
@@ -54,6 +55,7 @@
display: flex;
color: globals.$muted-color;
border-radius: 4px;
+
&:hover {
background-color: rgba(255, 255, 255, 0.15);
}
@@ -104,13 +106,14 @@
&__container {
display: flex;
flex-direction: column;
+ flex: 1;
overflow: hidden;
}
&__section {
- gap: calc(globals.$spacing-unit * 2);
display: flex;
flex-direction: column;
+ gap: calc(globals.$spacing-unit * 2);
padding-bottom: globals.$spacing-unit;
}
From 2ed18996df00d7d07a4d7030b17b8bb49219d502 Mon Sep 17 00:00:00 2001
From: Zamitto <167933696+zamitto@users.noreply.github.com>
Date: Mon, 3 Feb 2025 17:41:34 -0300
Subject: [PATCH 07/11] fix: not saving unlocked achievements correctly
---
.../events/library/add-game-to-library.ts | 6 ++--
.../events/user/get-unlocked-achievements.ts | 6 ++--
.../achievements/merge-achievements.ts | 30 +++++++++----------
.../update-local-unlocked-achivements.ts | 2 +-
.../library-sync/merge-with-remote-games.ts | 4 +--
5 files changed, 23 insertions(+), 25 deletions(-)
diff --git a/src/main/events/library/add-game-to-library.ts b/src/main/events/library/add-game-to-library.ts
index 62993348..c59f6ac8 100644
--- a/src/main/events/library/add-game-to-library.ts
+++ b/src/main/events/library/add-game-to-library.ts
@@ -5,7 +5,7 @@ import type { Game, GameShop } from "@types";
import { steamGamesWorker } from "@main/workers";
import { createGame } from "@main/services/library-sync";
import { steamUrlBuilder } from "@shared";
-import { updateLocalUnlockedAchivements } from "@main/services/achievements/update-local-unlocked-achivements";
+import { updateLocalUnlockedAchievements } from "@main/services/achievements/update-local-unlocked-achivements";
import { downloadsSublevel, gamesSublevel, levelKeys } from "@main/level";
const addGameToLibrary = async (
@@ -46,9 +46,9 @@ const addGameToLibrary = async (
await gamesSublevel.put(levelKeys.game(shop, objectId), game);
- updateLocalUnlockedAchivements(game);
+ await createGame(game).catch(() => {});
- createGame(game).catch(() => {});
+ updateLocalUnlockedAchievements(game);
}
};
diff --git a/src/main/events/user/get-unlocked-achievements.ts b/src/main/events/user/get-unlocked-achievements.ts
index 6deecbad..21aad7a0 100644
--- a/src/main/events/user/get-unlocked-achievements.ts
+++ b/src/main/events/user/get-unlocked-achievements.ts
@@ -32,7 +32,7 @@ export const getUnlockedAchievements = async (
return achievementsData
.map((achievementData) => {
- const unlockedAchiementData = unlockedAchievements.find(
+ const unlockedAchievementData = unlockedAchievements.find(
(localAchievement) => {
return (
localAchievement.name.toUpperCase() ==
@@ -45,11 +45,11 @@ export const getUnlockedAchievements = async (
? achievementData.icon
: achievementData.icongray;
- if (unlockedAchiementData) {
+ if (unlockedAchievementData) {
return {
...achievementData,
unlocked: true,
- unlockTime: unlockedAchiementData.unlockTime,
+ unlockTime: unlockedAchievementData.unlockTime,
};
}
diff --git a/src/main/services/achievements/merge-achievements.ts b/src/main/services/achievements/merge-achievements.ts
index 7e6ebf0a..e173af27 100644
--- a/src/main/services/achievements/merge-achievements.ts
+++ b/src/main/services/achievements/merge-achievements.ts
@@ -23,23 +23,21 @@ const saveAchievementsOnLocal = async (
return gameAchievementsSublevel
.get(levelKey)
.then(async (gameAchievement) => {
- if (gameAchievement) {
- await gameAchievementsSublevel.put(levelKey, {
- ...gameAchievement,
- unlockedAchievements: unlockedAchievements,
- });
+ await gameAchievementsSublevel.put(levelKey, {
+ achievements: gameAchievement?.achievements ?? [],
+ unlockedAchievements: unlockedAchievements,
+ });
- if (!sendUpdateEvent) return;
+ if (!sendUpdateEvent) return;
- return getUnlockedAchievements(objectId, shop, true)
- .then((achievements) => {
- WindowManager.mainWindow?.webContents.send(
- `on-update-achievements-${objectId}-${shop}`,
- achievements
- );
- })
- .catch(() => {});
- }
+ return getUnlockedAchievements(objectId, shop, true)
+ .then((achievements) => {
+ WindowManager.mainWindow?.webContents.send(
+ `on-update-achievements-${objectId}-${shop}`,
+ achievements
+ );
+ })
+ .catch(() => {});
});
};
@@ -133,7 +131,7 @@ export const mergeAchievements = async (
);
})
.catch((err) => {
- if (err! instanceof SubscriptionRequiredError) {
+ if (err instanceof SubscriptionRequiredError) {
achievementsLogger.log(
"Achievements not synchronized on API due to lack of subscription",
game.objectId,
diff --git a/src/main/services/achievements/update-local-unlocked-achivements.ts b/src/main/services/achievements/update-local-unlocked-achivements.ts
index 8832a475..44f2693a 100644
--- a/src/main/services/achievements/update-local-unlocked-achivements.ts
+++ b/src/main/services/achievements/update-local-unlocked-achivements.ts
@@ -6,7 +6,7 @@ import { parseAchievementFile } from "./parse-achievement-file";
import { mergeAchievements } from "./merge-achievements";
import type { Game, UnlockedAchievement } from "@types";
-export const updateLocalUnlockedAchivements = async (game: Game) => {
+export const updateLocalUnlockedAchievements = async (game: Game) => {
const gameAchievementFiles = findAchievementFiles(game);
const achievementFileInsideDirectory =
diff --git a/src/main/services/library-sync/merge-with-remote-games.ts b/src/main/services/library-sync/merge-with-remote-games.ts
index c3f57c53..f98fb0d3 100644
--- a/src/main/services/library-sync/merge-with-remote-games.ts
+++ b/src/main/services/library-sync/merge-with-remote-games.ts
@@ -24,7 +24,7 @@ export const mergeWithRemoteGames = async () => {
? game.playTimeInMilliseconds
: localGame.playTimeInMilliseconds;
- gamesSublevel.put(levelKeys.game(game.shop, game.objectId), {
+ await gamesSublevel.put(levelKeys.game(game.shop, game.objectId), {
...localGame,
remoteId: game.id,
lastTimePlayed: updatedLastTimePlayed,
@@ -39,7 +39,7 @@ export const mergeWithRemoteGames = async () => {
? steamUrlBuilder.icon(game.objectId, steamGame.clientIcon)
: null;
- gamesSublevel.put(levelKeys.game(game.shop, game.objectId), {
+ await gamesSublevel.put(levelKeys.game(game.shop, game.objectId), {
objectId: game.objectId,
title: steamGame?.name,
remoteId: game.id,
From 543528bcce780478bab8dd47ae209962dde54ef3 Mon Sep 17 00:00:00 2001
From: Zamitto <167933696+zamitto@users.noreply.github.com>
Date: Sat, 15 Feb 2025 22:59:59 -0300
Subject: [PATCH 08/11] feat: i18n
---
src/locales/en/translation.json | 6 +++---
src/locales/pt-BR/translation.json | 6 +++---
.../pages/settings/aparence/components/theme-actions.tsx | 2 +-
.../src/pages/settings/aparence/modals/add-theme-modal.tsx | 6 +++---
4 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/src/locales/en/translation.json b/src/locales/en/translation.json
index e05159c7..1f4c0104 100644
--- a/src/locales/en/translation.json
+++ b/src/locales/en/translation.json
@@ -310,9 +310,9 @@
"editor_tab_save": "Save",
"web_store": "Web store",
"clear_themes": "Clear",
- "add_theme": "Add",
- "add_theme_modal_title": "Create custom theme",
- "add_theme_modal_description": "Create a new theme to customize Hydra's appearance",
+ "create_theme": "Create",
+ "create_theme_modal_title": "Create custom theme",
+ "create_theme_modal_description": "Create a new theme to customize Hydra's appearance",
"theme_name": "Name",
"insert_theme_name": "Insert theme name",
"set_theme": "Set theme",
diff --git a/src/locales/pt-BR/translation.json b/src/locales/pt-BR/translation.json
index 3bc54a43..5b8bfedf 100644
--- a/src/locales/pt-BR/translation.json
+++ b/src/locales/pt-BR/translation.json
@@ -300,9 +300,9 @@
"editor_tab_save": "Salvar",
"web_store": "Loja de temas",
"clear_themes": "Limpar",
- "add_theme": "Adicionar",
- "add_theme_modal_title": "Criar tema customizado",
- "add_theme_modal_description": "Criar novo tema para customizar a aparĂȘncia do Hydra",
+ "create_theme": "Criar",
+ "create_theme_modal_title": "Criar tema customizado",
+ "create_theme_modal_description": "Criar novo tema para customizar a aparĂȘncia do Hydra",
"theme_name": "Nome",
"insert_theme_name": "Insira o nome do tema",
"set_theme": "Habilitar tema",
diff --git a/src/renderer/src/pages/settings/aparence/components/theme-actions.tsx b/src/renderer/src/pages/settings/aparence/components/theme-actions.tsx
index 842823b5..3f98d8cc 100644
--- a/src/renderer/src/pages/settings/aparence/components/theme-actions.tsx
+++ b/src/renderer/src/pages/settings/aparence/components/theme-actions.tsx
@@ -67,7 +67,7 @@ export const ThemeActions = ({
onClick={() => setAddThemeModalVisible(true)}
>
- {t("add_theme")}
+ {t("create_theme")}
diff --git a/src/renderer/src/pages/settings/aparence/modals/add-theme-modal.tsx b/src/renderer/src/pages/settings/aparence/modals/add-theme-modal.tsx
index ac50eed9..9b5a912f 100644
--- a/src/renderer/src/pages/settings/aparence/modals/add-theme-modal.tsx
+++ b/src/renderer/src/pages/settings/aparence/modals/add-theme-modal.tsx
@@ -56,8 +56,8 @@ export const AddThemeModal = ({
return (
@@ -72,7 +72,7 @@ export const AddThemeModal = ({
/>
From 0511cc08c733004ddf3f681bd3561eaa895446a3 Mon Sep 17 00:00:00 2001
From: Zamitto <167933696+zamitto@users.noreply.github.com>
Date: Sat, 15 Feb 2025 23:27:18 -0300
Subject: [PATCH 09/11] fix: editor window use correct dev tools
---
src/main/services/window-manager.ts | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/main/services/window-manager.ts b/src/main/services/window-manager.ts
index 296ad4c1..45fd1097 100644
--- a/src/main/services/window-manager.ts
+++ b/src/main/services/window-manager.ts
@@ -251,18 +251,18 @@ export class WindowManager {
editorWindow.once("ready-to-show", () => {
editorWindow.show();
- WindowManager.mainWindow?.webContents.openDevTools();
+ editorWindow.webContents.openDevTools();
});
editorWindow.webContents.on("before-input-event", (event, input) => {
if (input.key === "F12") {
event.preventDefault();
- this.mainWindow?.webContents.toggleDevTools();
+ editorWindow.webContents.toggleDevTools();
}
});
editorWindow.on("close", () => {
- WindowManager.mainWindow?.webContents.closeDevTools();
+ editorWindow.webContents.closeDevTools();
this.editorWindows.delete(themeId);
});
}
From 3271de09f891d7618c0caa8c884abad2df69a82c Mon Sep 17 00:00:00 2001
From: Zamitto <167933696+zamitto@users.noreply.github.com>
Date: Sat, 15 Feb 2025 23:42:14 -0300
Subject: [PATCH 10/11] fix: dev tools
---
src/main/services/window-manager.ts | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/src/main/services/window-manager.ts b/src/main/services/window-manager.ts
index 45fd1097..3da47644 100644
--- a/src/main/services/window-manager.ts
+++ b/src/main/services/window-manager.ts
@@ -251,18 +251,21 @@ export class WindowManager {
editorWindow.once("ready-to-show", () => {
editorWindow.show();
- editorWindow.webContents.openDevTools();
+ this.mainWindow?.webContents.openDevTools();
+ if (isStaging) {
+ editorWindow.webContents.openDevTools();
+ }
});
editorWindow.webContents.on("before-input-event", (event, input) => {
if (input.key === "F12") {
event.preventDefault();
- editorWindow.webContents.toggleDevTools();
+ this.mainWindow?.webContents.toggleDevTools();
}
});
editorWindow.on("close", () => {
- editorWindow.webContents.closeDevTools();
+ this.mainWindow?.webContents.closeDevTools();
this.editorWindows.delete(themeId);
});
}
From 39ceb8ee6e8047e3cb3e3586fee5f5d1ae640b50 Mon Sep 17 00:00:00 2001
From: Zamitto <167933696+zamitto@users.noreply.github.com>
Date: Sat, 15 Feb 2025 23:54:22 -0300
Subject: [PATCH 11/11] fix: editor window hash path
---
src/main/services/window-manager.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/main/services/window-manager.ts b/src/main/services/window-manager.ts
index 3da47644..f51d0e39 100644
--- a/src/main/services/window-manager.ts
+++ b/src/main/services/window-manager.ts
@@ -245,7 +245,7 @@ export class WindowManager {
);
} else {
editorWindow.loadFile(path.join(__dirname, "../renderer/index.html"), {
- hash: `editor?themeId=${themeId}`,
+ hash: `theme-editor?themeId=${themeId}`,
});
}