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 {