From e331b9b24653e607d46b0a991ac9a5e553c97aac Mon Sep 17 00:00:00 2001 From: Hachi-R Date: Thu, 31 Oct 2024 23:02:23 -0300 Subject: [PATCH 1/2] feat: add option in user preferences to seed after download completes --- src/locales/en/translation.json | 3 ++- src/main/entity/user-preferences.entity.ts | 3 +++ src/main/knex-client.ts | 2 ++ ..._add_seed_after_download_completes_column.ts | 17 +++++++++++++++++ .../src/pages/settings/settings-behavior.tsx | 12 ++++++++++++ src/types/index.ts | 1 + 6 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 src/main/migrations/20241101012727_add_seed_after_download_completes_column.ts diff --git a/src/locales/en/translation.json b/src/locales/en/translation.json index a17875ad..348e54dd 100644 --- a/src/locales/en/translation.json +++ b/src/locales/en/translation.json @@ -254,7 +254,8 @@ "blocked_users": "Blocked users", "user_unblocked": "User has been unblocked", "enable_achievement_notifications": "When an achievement in unlocked", - "launch_minimized": "Launch Hydra minimized" + "launch_minimized": "Launch Hydra minimized", + "seed_after_download_completes": "Seed after download completes" }, "notifications": { "download_complete": "Download complete", diff --git a/src/main/entity/user-preferences.entity.ts b/src/main/entity/user-preferences.entity.ts index b43d463e..3c80a183 100644 --- a/src/main/entity/user-preferences.entity.ts +++ b/src/main/entity/user-preferences.entity.ts @@ -38,6 +38,9 @@ export class UserPreferences { @Column("boolean", { default: false }) startMinimized: boolean; + @Column("boolean", { default: true }) + seedAfterDownloadCompletes: boolean; + @CreateDateColumn() createdAt: Date; diff --git a/src/main/knex-client.ts b/src/main/knex-client.ts index eec5b054..6ddc79e7 100644 --- a/src/main/knex-client.ts +++ b/src/main/knex-client.ts @@ -12,6 +12,7 @@ import { CreateUserSubscription } from "./migrations/20241015235142_create_user_ import { AddBackgroundImageUrl } from "./migrations/20241016100249_add_background_image_url"; import { AddWinePrefixToGame } from "./migrations/20241019081648_add_wine_prefix_to_game"; import { AddStartMinimizedColumn } from "./migrations/20241030171454_add_start_minimized_column"; +import { AddSeedAfterDownloadCompletesColumn } from "./migrations/20241101012727_add_seed_after_download_completes_column"; export type HydraMigration = Knex.Migration & { name: string }; class MigrationSource implements Knex.MigrationSource { @@ -28,6 +29,7 @@ class MigrationSource implements Knex.MigrationSource { AddBackgroundImageUrl, AddWinePrefixToGame, AddStartMinimizedColumn, + AddSeedAfterDownloadCompletesColumn, ]); } getMigrationName(migration: HydraMigration): string { diff --git a/src/main/migrations/20241101012727_add_seed_after_download_completes_column.ts b/src/main/migrations/20241101012727_add_seed_after_download_completes_column.ts new file mode 100644 index 00000000..5856d3e9 --- /dev/null +++ b/src/main/migrations/20241101012727_add_seed_after_download_completes_column.ts @@ -0,0 +1,17 @@ +import type { HydraMigration } from "@main/knex-client"; +import type { Knex } from "knex"; + +export const AddSeedAfterDownloadCompletesColumn: HydraMigration = { + name: "AddSeedAfterDownloadCompletesColumn", + up: (knex: Knex) => { + return knex.schema.alterTable("user_preferences", (table) => { + return table.boolean("seedAfterDownloadCompletes").notNullable().defaultTo(1); + }); + }, + + down: async (knex: Knex) => { + return knex.schema.alterTable("user_preferences", (table) => { + return table.dropColumn("seedAfterDownloadCompletes"); + }); + }, +}; diff --git a/src/renderer/src/pages/settings/settings-behavior.tsx b/src/renderer/src/pages/settings/settings-behavior.tsx index 4e3ef2f3..78551473 100644 --- a/src/renderer/src/pages/settings/settings-behavior.tsx +++ b/src/renderer/src/pages/settings/settings-behavior.tsx @@ -18,6 +18,7 @@ export function SettingsBehavior() { preferQuitInsteadOfHiding: false, runAtStartup: false, startMinimized: false, + seedAfterDownloadCompletes: true, }); const { t } = useTranslation("settings"); @@ -28,6 +29,7 @@ export function SettingsBehavior() { preferQuitInsteadOfHiding: userPreferences.preferQuitInsteadOfHiding, runAtStartup: userPreferences.runAtStartup, startMinimized: userPreferences.startMinimized, + seedAfterDownloadCompletes: userPreferences.seedAfterDownloadCompletes, }); } }, [userPreferences]); @@ -86,6 +88,16 @@ export function SettingsBehavior() { /> )} + + + handleChange({ + seedAfterDownloadCompletes: !form.seedAfterDownloadCompletes, + }) + } + /> ); } diff --git a/src/types/index.ts b/src/types/index.ts index 9bb25e3f..1ad6e6a1 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -161,6 +161,7 @@ export interface UserPreferences { preferQuitInsteadOfHiding: boolean; runAtStartup: boolean; startMinimized: boolean; + seedAfterDownloadCompletes: boolean; } export interface Steam250Game { From fd7f2403da0f71c9f37394e842e14f6554d3d333 Mon Sep 17 00:00:00 2001 From: Hachi-R Date: Thu, 31 Oct 2024 23:02:44 -0300 Subject: [PATCH 2/2] lint --- ...0241101012727_add_seed_after_download_completes_column.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/migrations/20241101012727_add_seed_after_download_completes_column.ts b/src/main/migrations/20241101012727_add_seed_after_download_completes_column.ts index 5856d3e9..908227f1 100644 --- a/src/main/migrations/20241101012727_add_seed_after_download_completes_column.ts +++ b/src/main/migrations/20241101012727_add_seed_after_download_completes_column.ts @@ -5,7 +5,10 @@ export const AddSeedAfterDownloadCompletesColumn: HydraMigration = { name: "AddSeedAfterDownloadCompletesColumn", up: (knex: Knex) => { return knex.schema.alterTable("user_preferences", (table) => { - return table.boolean("seedAfterDownloadCompletes").notNullable().defaultTo(1); + return table + .boolean("seedAfterDownloadCompletes") + .notNullable() + .defaultTo(1); }); },