diff --git a/src/locales/en/translation.json b/src/locales/en/translation.json index e70eb519..fa47e507 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_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 b61a08be..43c18a48 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_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 b43d463e..357dfb50 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 }) + disableNsfwAlert: boolean; + @CreateDateColumn() createdAt: Date; diff --git a/src/main/knex-client.ts b/src/main/knex-client.ts index eec5b054..988d42da 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 { AddDisableNsfwAlertColumn } from "./migrations/20241106053733_add_disable_nsfw_alert_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, + AddDisableNsfwAlertColumn, ]); } getMigrationName(migration: HydraMigration): string { diff --git a/src/main/migrations/20241106053733_add_disable_nsfw_alert_column.ts b/src/main/migrations/20241106053733_add_disable_nsfw_alert_column.ts new file mode 100644 index 00000000..a248dd2b --- /dev/null +++ b/src/main/migrations/20241106053733_add_disable_nsfw_alert_column.ts @@ -0,0 +1,17 @@ +import type { HydraMigration } from "@main/knex-client"; +import type { Knex } from "knex"; + +export const AddDisableNsfwAlertColumn: HydraMigration = { + name: "AddDisableNsfwAlertColumn", + up: (knex: Knex) => { + return knex.schema.alterTable("user_preferences", (table) => { + return table.boolean("disableNsfwAlert").notNullable().defaultTo(0); + }); + }, + + down: async (knex: Knex) => { + return knex.schema.alterTable("user_preferences", (table) => { + 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 77aaab5d..398d6c27 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?.disableNsfwAlert ) { setHasNSFWContentBlocked(true); } diff --git a/src/renderer/src/pages/settings/settings-behavior.tsx b/src/renderer/src/pages/settings/settings-behavior.tsx index 4e3ef2f3..b4b91dd2 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, + disableNsfwAlert: false, }); const { t } = useTranslation("settings"); @@ -28,6 +29,7 @@ export function SettingsBehavior() { preferQuitInsteadOfHiding: userPreferences.preferQuitInsteadOfHiding, runAtStartup: userPreferences.runAtStartup, startMinimized: userPreferences.startMinimized, + disableNsfwAlert: userPreferences.disableNsfwAlert, }); } }, [userPreferences]); @@ -86,6 +88,14 @@ export function SettingsBehavior() { /> )} + + + handleChange({ disableNsfwAlert: !form.disableNsfwAlert }) + } + /> ); } diff --git a/src/types/index.ts b/src/types/index.ts index 58e5beb7..c0269cd3 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -161,6 +161,7 @@ export interface UserPreferences { preferQuitInsteadOfHiding: boolean; runAtStartup: boolean; startMinimized: boolean; + disableNsfwAlert: boolean; } export interface Steam250Game {