From 2f8fe67f9fcacb3c55a8cbebe1227902ec17e6cb Mon Sep 17 00:00:00 2001 From: Hachi-R Date: Wed, 6 Nov 2024 02:57:52 -0300 Subject: [PATCH 1/4] feat: add option to disable NSFW warning --- src/main/entity/user-preferences.entity.ts | 3 +++ src/main/knex-client.ts | 2 ++ ...41106053733_add_disable_nsfw_popup_column.ts | 17 +++++++++++++++++ .../game-details/game-details.context.tsx | 2 +- .../src/pages/settings/settings-behavior.tsx | 10 ++++++++++ src/types/index.ts | 1 + 6 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 src/main/migrations/20241106053733_add_disable_nsfw_popup_column.ts diff --git a/src/main/entity/user-preferences.entity.ts b/src/main/entity/user-preferences.entity.ts index b43d463e..97adfd18 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: false }) + disableNsfwPopup: boolean; + @CreateDateColumn() createdAt: Date; diff --git a/src/main/knex-client.ts b/src/main/knex-client.ts index eec5b054..e1d13b58 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 { AddDisableNsfwPopupColumn } from "./migrations/20241106053733_add_disable_nsfw_popup_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, + AddDisableNsfwPopupColumn, ]); } getMigrationName(migration: HydraMigration): string { diff --git a/src/main/migrations/20241106053733_add_disable_nsfw_popup_column.ts b/src/main/migrations/20241106053733_add_disable_nsfw_popup_column.ts new file mode 100644 index 00000000..8fa41930 --- /dev/null +++ b/src/main/migrations/20241106053733_add_disable_nsfw_popup_column.ts @@ -0,0 +1,17 @@ +import type { HydraMigration } from "@main/knex-client"; +import type { Knex } from "knex"; + +export const AddDisableNsfwPopupColumn: HydraMigration = { + name: "AddDisableNsfwPopupColumn", + up: (knex: Knex) => { + return knex.schema.alterTable("user_preferences", (table) => { + return table.boolean("disableNsfwPopup").notNullable().defaultTo(0); + }); + }, + + down: async (knex: Knex) => { + return knex.schema.alterTable("user_preferences", (table) => { + return table.dropColumn("disableNsfwPopup"); + }); + }, +}; diff --git a/src/renderer/src/context/game-details/game-details.context.tsx b/src/renderer/src/context/game-details/game-details.context.tsx index 77aaab5d..b432ae26 100644 --- a/src/renderer/src/context/game-details/game-details.context.tsx +++ b/src/renderer/src/context/game-details/game-details.context.tsx @@ -147,7 +147,7 @@ export function GameDetailsContextProvider({ if ( result?.content_descriptors.ids.includes( SteamContentDescriptor.AdultOnlySexualContent - ) + ) && !userPreferences?.disableNsfwPopup ) { setHasNSFWContentBlocked(true); } diff --git a/src/renderer/src/pages/settings/settings-behavior.tsx b/src/renderer/src/pages/settings/settings-behavior.tsx index 4e3ef2f3..8e90b3c2 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, + disableNsfwPopup: false, }); const { t } = useTranslation("settings"); @@ -28,6 +29,7 @@ export function SettingsBehavior() { preferQuitInsteadOfHiding: userPreferences.preferQuitInsteadOfHiding, runAtStartup: userPreferences.runAtStartup, startMinimized: userPreferences.startMinimized, + disableNsfwPopup: userPreferences.disableNsfwPopup, }); } }, [userPreferences]); @@ -86,6 +88,14 @@ export function SettingsBehavior() { /> )} + + + handleChange({ disableNsfwPopup: !form.disableNsfwPopup }) + } + /> ); } diff --git a/src/types/index.ts b/src/types/index.ts index 58e5beb7..7b6321fe 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -161,6 +161,7 @@ export interface UserPreferences { preferQuitInsteadOfHiding: boolean; runAtStartup: boolean; startMinimized: boolean; + disableNsfwPopup: boolean; } export interface Steam250Game { From 56b15bf52a30a9b09c59cdaa20978895de8e3b16 Mon Sep 17 00:00:00 2001 From: Hachi-R Date: Wed, 6 Nov 2024 02:58:10 -0300 Subject: [PATCH 2/4] lint --- src/renderer/src/context/game-details/game-details.context.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/renderer/src/context/game-details/game-details.context.tsx b/src/renderer/src/context/game-details/game-details.context.tsx index b432ae26..c1f4d068 100644 --- a/src/renderer/src/context/game-details/game-details.context.tsx +++ b/src/renderer/src/context/game-details/game-details.context.tsx @@ -147,7 +147,8 @@ export function GameDetailsContextProvider({ if ( result?.content_descriptors.ids.includes( SteamContentDescriptor.AdultOnlySexualContent - ) && !userPreferences?.disableNsfwPopup + ) && + !userPreferences?.disableNsfwPopup ) { setHasNSFWContentBlocked(true); } From e7acce2dfc1d290f7be60987e1815e9f31f0012e Mon Sep 17 00:00:00 2001 From: Hachi-R Date: Wed, 6 Nov 2024 03:01:28 -0300 Subject: [PATCH 3/4] feat: add localization strings --- src/locales/en/translation.json | 3 ++- src/locales/pt-BR/translation.json | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/locales/en/translation.json b/src/locales/en/translation.json index e70eb519..9d080d8d 100644 --- a/src/locales/en/translation.json +++ b/src/locales/en/translation.json @@ -255,7 +255,8 @@ "blocked_users": "Blocked users", "user_unblocked": "User has been unblocked", "enable_achievement_notifications": "When an achievement is unlocked", - "launch_minimized": "Launch Hydra minimized" + "launch_minimized": "Launch Hydra minimized", + "disable_nsfw_popup": "Disable NSFW warning popup" }, "notifications": { "download_complete": "Download complete", diff --git a/src/locales/pt-BR/translation.json b/src/locales/pt-BR/translation.json index b61a08be..4a1edffb 100644 --- a/src/locales/pt-BR/translation.json +++ b/src/locales/pt-BR/translation.json @@ -251,7 +251,8 @@ "blocked_users": "Usuários bloqueados", "user_unblocked": "Usuário desbloqueado", "enable_achievement_notifications": "Quando uma conquista é desbloqueada", - "launch_minimized": "Iniciar o Hydra minimizado" + "launch_minimized": "Iniciar o Hydra minimizado", + "disable_nsfw_popup": "Desativar popup de conteúdo impróprio" }, "notifications": { "download_complete": "Download concluído", From aaee27732d56786e28709c8e3d2e3e6712ba7576 Mon Sep 17 00:00:00 2001 From: Hachi-R Date: Wed, 6 Nov 2024 20:44:56 -0300 Subject: [PATCH 4/4] refactor: rename all "popup" strings to "alert" --- src/locales/en/translation.json | 2 +- src/locales/pt-BR/translation.json | 2 +- src/main/entity/user-preferences.entity.ts | 2 +- src/main/knex-client.ts | 4 ++-- ...=> 20241106053733_add_disable_nsfw_alert_column.ts} | 8 ++++---- .../src/context/game-details/game-details.context.tsx | 2 +- src/renderer/src/pages/settings/settings-behavior.tsx | 10 +++++----- src/types/index.ts | 2 +- 8 files changed, 16 insertions(+), 16 deletions(-) rename src/main/migrations/{20241106053733_add_disable_nsfw_popup_column.ts => 20241106053733_add_disable_nsfw_alert_column.ts} (60%) diff --git a/src/locales/en/translation.json b/src/locales/en/translation.json index 9d080d8d..fa47e507 100644 --- a/src/locales/en/translation.json +++ b/src/locales/en/translation.json @@ -256,7 +256,7 @@ "user_unblocked": "User has been unblocked", "enable_achievement_notifications": "When an achievement is unlocked", "launch_minimized": "Launch Hydra minimized", - "disable_nsfw_popup": "Disable NSFW warning popup" + "disable_nsfw_alert": "Disable NSFW alert" }, "notifications": { "download_complete": "Download complete", diff --git a/src/locales/pt-BR/translation.json b/src/locales/pt-BR/translation.json index 4a1edffb..43c18a48 100644 --- a/src/locales/pt-BR/translation.json +++ b/src/locales/pt-BR/translation.json @@ -252,7 +252,7 @@ "user_unblocked": "Usuário desbloqueado", "enable_achievement_notifications": "Quando uma conquista é desbloqueada", "launch_minimized": "Iniciar o Hydra minimizado", - "disable_nsfw_popup": "Desativar popup de conteúdo impróprio" + "disable_nsfw_alert": "Desativar alerta de conteúdo inapropriado" }, "notifications": { "download_complete": "Download concluído", diff --git a/src/main/entity/user-preferences.entity.ts b/src/main/entity/user-preferences.entity.ts index 97adfd18..357dfb50 100644 --- a/src/main/entity/user-preferences.entity.ts +++ b/src/main/entity/user-preferences.entity.ts @@ -39,7 +39,7 @@ export class UserPreferences { startMinimized: boolean; @Column("boolean", { default: false }) - disableNsfwPopup: boolean; + disableNsfwAlert: boolean; @CreateDateColumn() createdAt: Date; diff --git a/src/main/knex-client.ts b/src/main/knex-client.ts index e1d13b58..988d42da 100644 --- a/src/main/knex-client.ts +++ b/src/main/knex-client.ts @@ -12,7 +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 { AddDisableNsfwPopupColumn } from "./migrations/20241106053733_add_disable_nsfw_popup_column"; +import { AddDisableNsfwAlertColumn } from "./migrations/20241106053733_add_disable_nsfw_alert_column"; export type HydraMigration = Knex.Migration & { name: string }; class MigrationSource implements Knex.MigrationSource { @@ -29,7 +29,7 @@ class MigrationSource implements Knex.MigrationSource { AddBackgroundImageUrl, AddWinePrefixToGame, AddStartMinimizedColumn, - AddDisableNsfwPopupColumn, + AddDisableNsfwAlertColumn, ]); } getMigrationName(migration: HydraMigration): string { diff --git a/src/main/migrations/20241106053733_add_disable_nsfw_popup_column.ts b/src/main/migrations/20241106053733_add_disable_nsfw_alert_column.ts similarity index 60% rename from src/main/migrations/20241106053733_add_disable_nsfw_popup_column.ts rename to src/main/migrations/20241106053733_add_disable_nsfw_alert_column.ts index 8fa41930..a248dd2b 100644 --- a/src/main/migrations/20241106053733_add_disable_nsfw_popup_column.ts +++ b/src/main/migrations/20241106053733_add_disable_nsfw_alert_column.ts @@ -1,17 +1,17 @@ import type { HydraMigration } from "@main/knex-client"; import type { Knex } from "knex"; -export const AddDisableNsfwPopupColumn: HydraMigration = { - name: "AddDisableNsfwPopupColumn", +export const AddDisableNsfwAlertColumn: HydraMigration = { + name: "AddDisableNsfwAlertColumn", up: (knex: Knex) => { return knex.schema.alterTable("user_preferences", (table) => { - return table.boolean("disableNsfwPopup").notNullable().defaultTo(0); + return table.boolean("disableNsfwAlert").notNullable().defaultTo(0); }); }, down: async (knex: Knex) => { return knex.schema.alterTable("user_preferences", (table) => { - return table.dropColumn("disableNsfwPopup"); + return table.dropColumn("disableNsfwAlert"); }); }, }; diff --git a/src/renderer/src/context/game-details/game-details.context.tsx b/src/renderer/src/context/game-details/game-details.context.tsx index c1f4d068..398d6c27 100644 --- a/src/renderer/src/context/game-details/game-details.context.tsx +++ b/src/renderer/src/context/game-details/game-details.context.tsx @@ -148,7 +148,7 @@ export function GameDetailsContextProvider({ result?.content_descriptors.ids.includes( SteamContentDescriptor.AdultOnlySexualContent ) && - !userPreferences?.disableNsfwPopup + !userPreferences?.disableNsfwAlert ) { setHasNSFWContentBlocked(true); } diff --git a/src/renderer/src/pages/settings/settings-behavior.tsx b/src/renderer/src/pages/settings/settings-behavior.tsx index 8e90b3c2..b4b91dd2 100644 --- a/src/renderer/src/pages/settings/settings-behavior.tsx +++ b/src/renderer/src/pages/settings/settings-behavior.tsx @@ -18,7 +18,7 @@ export function SettingsBehavior() { preferQuitInsteadOfHiding: false, runAtStartup: false, startMinimized: false, - disableNsfwPopup: false, + disableNsfwAlert: false, }); const { t } = useTranslation("settings"); @@ -29,7 +29,7 @@ export function SettingsBehavior() { preferQuitInsteadOfHiding: userPreferences.preferQuitInsteadOfHiding, runAtStartup: userPreferences.runAtStartup, startMinimized: userPreferences.startMinimized, - disableNsfwPopup: userPreferences.disableNsfwPopup, + disableNsfwAlert: userPreferences.disableNsfwAlert, }); } }, [userPreferences]); @@ -90,10 +90,10 @@ export function SettingsBehavior() { )} - handleChange({ disableNsfwPopup: !form.disableNsfwPopup }) + handleChange({ disableNsfwAlert: !form.disableNsfwAlert }) } /> diff --git a/src/types/index.ts b/src/types/index.ts index 7b6321fe..c0269cd3 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -161,7 +161,7 @@ export interface UserPreferences { preferQuitInsteadOfHiding: boolean; runAtStartup: boolean; startMinimized: boolean; - disableNsfwPopup: boolean; + disableNsfwAlert: boolean; } export interface Steam250Game {