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/constants.ts b/src/main/constants.ts index 2b92b719..b98b5935 100644 --- a/src/main/constants.ts +++ b/src/main/constants.ts @@ -5,12 +5,12 @@ export const LUDUSAVI_MANIFEST_URL = "https://cdn.losbroxas.org/manifest.yaml"; export const defaultDownloadsPath = app.getPath("downloads"); +export const isStaging = import.meta.env.MAIN_VITE_API_URL.includes("staging"); + export const databaseDirectory = path.join(app.getPath("appData"), "hydra"); export const databasePath = path.join( databaseDirectory, - import.meta.env.MAIN_VITE_API_URL.includes("staging") - ? "hydra_test.db" - : "hydra.db" + isStaging ? "hydra_test.db" : "hydra.db" ); export const logsPath = path.join(app.getPath("appData"), "hydra", "logs"); @@ -25,4 +25,4 @@ export const achievementSoundPath = app.isPackaged export const backupsPath = path.join(app.getPath("userData"), "Backups"); -export const appVersion = app.getVersion(); +export const appVersion = app.getVersion() + (isStaging ? "-staging" : ""); 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/events/misc/open-checkout.ts b/src/main/events/misc/open-checkout.ts index ba48f03b..5d087be0 100644 --- a/src/main/events/misc/open-checkout.ts +++ b/src/main/events/misc/open-checkout.ts @@ -1,10 +1,16 @@ import { shell } from "electron"; import { registerEvent } from "../register-event"; -import { userAuthRepository } from "@main/repository"; +import { + userAuthRepository, + userPreferencesRepository, +} from "@main/repository"; import { HydraApi } from "@main/services"; const openCheckout = async (_event: Electron.IpcMainInvokeEvent) => { - const userAuth = await userAuthRepository.findOne({ where: { id: 1 } }); + const [userAuth, userPreferences] = await Promise.all([ + userAuthRepository.findOne({ where: { id: 1 } }), + userPreferencesRepository.findOne({ where: { id: 1 } }), + ]); if (!userAuth) { return; @@ -16,6 +22,7 @@ const openCheckout = async (_event: Electron.IpcMainInvokeEvent) => { const params = new URLSearchParams({ token: paymentToken, + lng: userPreferences?.language || "en", }); shell.openExternal( 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/main/services/hydra-api.ts b/src/main/services/hydra-api.ts index e3e772e8..b2125ac4 100644 --- a/src/main/services/hydra-api.ts +++ b/src/main/services/hydra-api.ts @@ -112,6 +112,8 @@ export class HydraApi { expirationTimestamp: 0, subscription: null, }; + + this.post("/auth/logout", {}, { needsAuth: false }).catch(() => {}); } static async setupApi() { diff --git a/src/renderer/src/app.tsx b/src/renderer/src/app.tsx index bf726e31..5a479879 100644 --- a/src/renderer/src/app.tsx +++ b/src/renderer/src/app.tsx @@ -36,8 +36,6 @@ export interface AppProps { children: React.ReactNode; } -console.log(import.meta.env); - Intercom({ app_id: import.meta.env.RENDERER_VITE_INTERCOM_APP_ID, }); diff --git a/src/renderer/src/assets/lottie/downloading.json b/src/renderer/src/assets/lottie/downloading.json deleted file mode 100644 index 1ef705de..00000000 --- a/src/renderer/src/assets/lottie/downloading.json +++ /dev/null @@ -1,843 +0,0 @@ -{ - "v": "4.8.0", - "meta": { "g": "LottieFiles AE 3.5.6", "a": "", "k": "", "d": "", "tc": "" }, - "fr": 60, - "ip": 0, - "op": 120, - "w": 714, - "h": 678, - "nm": "Pre-comp 1", - "ddd": 0, - "assets": [ - { - "id": "comp_0", - "layers": [ - { - "ddd": 0, - "ind": 1, - "ty": 4, - "nm": "centro", - "sr": 1, - "ks": { - "o": { "a": 0, "k": 100, "ix": 11 }, - "r": { "a": 0, "k": 0, "ix": 10 }, - "p": { - "a": 1, - "k": [ - { - "i": { "x": 0.214, "y": 1 }, - "o": { "x": 0.462, "y": 0 }, - "t": 0, - "s": [450, 907, 0], - "to": [0, 0, 0], - "ti": [0, 0, 0] - }, - { "t": 30, "s": [450, 1513, 0] } - ], - "ix": 2 - }, - "a": { "a": 0, "k": [-348, -169, 0], "ix": 1 }, - "s": { "a": 0, "k": [100, 100, 100], "ix": 6 } - }, - "ao": 0, - "shapes": [ - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [0, 0], - [0, 0] - ], - "o": [ - [0, 0], - [0, 0] - ], - "v": [ - [-348, -420], - [-348, -30] - ], - "c": false - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "st", - "c": { - "a": 0, - "k": [0.854901960784, 0.858823529412, 0.882352941176, 1], - "ix": 3 - }, - "o": { "a": 0, "k": 100, "ix": 4 }, - "w": { "a": 0, "k": 77, "ix": 5 }, - "lc": 2, - "lj": 1, - "ml": 4, - "bm": 0, - "nm": "Stroke 1", - "mn": "ADBE Vector Graphic - Stroke", - "hd": false - }, - { - "ty": "tr", - "p": { "a": 0, "k": [-348, -164], "ix": 2 }, - "a": { "a": 0, "k": [-348, -156], "ix": 1 }, - "s": { "a": 0, "k": [100, 100], "ix": 3 }, - "r": { "a": 0, "k": 0, "ix": 6 }, - "o": { "a": 0, "k": 100, "ix": 7 }, - "sk": { "a": 0, "k": 0, "ix": 4 }, - "sa": { "a": 0, "k": 0, "ix": 5 }, - "nm": "Transform" - } - ], - "nm": "Shape 1", - "np": 3, - "cix": 2, - "bm": 0, - "ix": 1, - "mn": "ADBE Vector Group", - "hd": false - } - ], - "ip": 0, - "op": 120, - "st": 0, - "bm": 0 - }, - { - "ddd": 0, - "ind": 2, - "ty": 4, - "nm": "esquerdo", - "parent": 1, - "sr": 1, - "ks": { - "o": { "a": 0, "k": 100, "ix": 11 }, - "r": { - "a": 1, - "k": [ - { - "i": { "x": [0.298], "y": [1] }, - "o": { "x": [0.448], "y": [0] }, - "t": 6, - "s": [43.5] - }, - { "t": 36, "s": [-1] } - ], - "ix": 10 - }, - "p": { "a": 0, "k": [-348.39, -36.55, 0], "ix": 2 }, - "a": { "a": 0, "k": [-2, 84, 0], "ix": 1 }, - "s": { "a": 0, "k": [100, 100, 100], "ix": 6 } - }, - "ao": 0, - "shapes": [ - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [0, 0], - [0, 0] - ], - "o": [ - [0, 0], - [0, 0] - ], - "v": [ - [-178, -102], - [-2, 84] - ], - "c": false - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "st", - "c": { - "a": 0, - "k": [0.854901960784, 0.858823529412, 0.882352941176, 1], - "ix": 3 - }, - "o": { "a": 0, "k": 100, "ix": 4 }, - "w": { "a": 0, "k": 77, "ix": 5 }, - "lc": 2, - "lj": 1, - "ml": 4, - "bm": 0, - "nm": "Stroke 1", - "mn": "ADBE Vector Graphic - Stroke", - "hd": false - }, - { - "ty": "tr", - "p": { "a": 0, "k": [0, 0], "ix": 2 }, - "a": { "a": 0, "k": [0, 0], "ix": 1 }, - "s": { "a": 0, "k": [100, 100], "ix": 3 }, - "r": { "a": 0, "k": 0, "ix": 6 }, - "o": { "a": 0, "k": 100, "ix": 7 }, - "sk": { "a": 0, "k": 0, "ix": 4 }, - "sa": { "a": 0, "k": 0, "ix": 5 }, - "nm": "Transform" - } - ], - "nm": "Shape 1", - "np": 3, - "cix": 2, - "bm": 0, - "ix": 1, - "mn": "ADBE Vector Group", - "hd": false - }, - { - "ty": "tm", - "s": { "a": 0, "k": 8, "ix": 1 }, - "e": { "a": 0, "k": 100, "ix": 2 }, - "o": { "a": 0, "k": 0, "ix": 3 }, - "m": 1, - "ix": 2, - "nm": "Trim Paths 1", - "mn": "ADBE Vector Filter - Trim", - "hd": false - } - ], - "ip": 0, - "op": 120, - "st": 0, - "bm": 0 - }, - { - "ddd": 0, - "ind": 3, - "ty": 4, - "nm": "direito", - "parent": 1, - "sr": 1, - "ks": { - "o": { "a": 0, "k": 100, "ix": 11 }, - "r": { - "a": 1, - "k": [ - { - "i": { "x": [0.265], "y": [1] }, - "o": { "x": [0.53], "y": [0] }, - "t": 6, - "s": [-43.5] - }, - { "t": 36, "s": [1] } - ], - "ix": 10 - }, - "p": { "a": 0, "k": [-348.39, -36.55, 0], "ix": 2 }, - "a": { "a": 0, "k": [-2, 84, 0], "ix": 1 }, - "s": { "a": 0, "k": [-100, 100, 100], "ix": 6 } - }, - "ao": 0, - "shapes": [ - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [0, 0], - [0, 0] - ], - "o": [ - [0, 0], - [0, 0] - ], - "v": [ - [-178, -102], - [-2, 84] - ], - "c": false - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "tm", - "s": { "a": 0, "k": 8, "ix": 1 }, - "e": { "a": 0, "k": 100, "ix": 2 }, - "o": { "a": 0, "k": 0, "ix": 3 }, - "m": 1, - "ix": 2, - "nm": "Trim Paths 1", - "mn": "ADBE Vector Filter - Trim", - "hd": false - }, - { - "ty": "st", - "c": { - "a": 0, - "k": [0.854901960784, 0.858823529412, 0.882352941176, 1], - "ix": 3 - }, - "o": { "a": 0, "k": 100, "ix": 4 }, - "w": { "a": 0, "k": 77, "ix": 5 }, - "lc": 2, - "lj": 1, - "ml": 4, - "bm": 0, - "nm": "Stroke 1", - "mn": "ADBE Vector Graphic - Stroke", - "hd": false - }, - { - "ty": "tr", - "p": { "a": 0, "k": [0, 0], "ix": 2 }, - "a": { "a": 0, "k": [0, 0], "ix": 1 }, - "s": { "a": 0, "k": [100, 100], "ix": 3 }, - "r": { "a": 0, "k": 0, "ix": 6 }, - "o": { "a": 0, "k": 100, "ix": 7 }, - "sk": { "a": 0, "k": 0, "ix": 4 }, - "sa": { "a": 0, "k": 0, "ix": 5 }, - "nm": "Transform" - } - ], - "nm": "Shape 1", - "np": 4, - "cix": 2, - "bm": 0, - "ix": 1, - "mn": "ADBE Vector Group", - "hd": false - } - ], - "ip": 0, - "op": 120, - "st": 0, - "bm": 0 - } - ] - }, - { - "id": "comp_1", - "layers": [ - { - "ddd": 0, - "ind": 1, - "ty": 4, - "nm": "centro", - "sr": 1, - "ks": { - "o": { "a": 0, "k": 100, "ix": 11 }, - "r": { "a": 0, "k": 0, "ix": 10 }, - "p": { - "a": 1, - "k": [ - { - "i": { "x": 0.569, "y": 1 }, - "o": { "x": 0.809, "y": 0 }, - "t": 0, - "s": [450, 391, 0], - "to": [0, 0, 0], - "ti": [0, 0, 0] - }, - { "t": 30, "s": [450, 997, 0] } - ], - "ix": 2 - }, - "a": { "a": 0, "k": [-348, -169, 0], "ix": 1 }, - "s": { "a": 0, "k": [100, 100, 100], "ix": 6 } - }, - "ao": 0, - "shapes": [ - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [0, 0], - [0, 0] - ], - "o": [ - [0, 0], - [0, 0] - ], - "v": [ - [-348, -420], - [-348, -30] - ], - "c": false - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "st", - "c": { - "a": 0, - "k": [0.854901960784, 0.858823529412, 0.882352941176, 1], - "ix": 3 - }, - "o": { "a": 0, "k": 100, "ix": 4 }, - "w": { "a": 0, "k": 77, "ix": 5 }, - "lc": 2, - "lj": 1, - "ml": 4, - "bm": 0, - "nm": "Stroke 1", - "mn": "ADBE Vector Graphic - Stroke", - "hd": false - }, - { - "ty": "tr", - "p": { "a": 0, "k": [-348, -164], "ix": 2 }, - "a": { "a": 0, "k": [-348, -156], "ix": 1 }, - "s": { "a": 0, "k": [100, 100], "ix": 3 }, - "r": { "a": 0, "k": 0, "ix": 6 }, - "o": { "a": 0, "k": 100, "ix": 7 }, - "sk": { "a": 0, "k": 0, "ix": 4 }, - "sa": { "a": 0, "k": 0, "ix": 5 }, - "nm": "Transform" - } - ], - "nm": "Shape 1", - "np": 3, - "cix": 2, - "bm": 0, - "ix": 1, - "mn": "ADBE Vector Group", - "hd": false - } - ], - "ip": 0, - "op": 120, - "st": 0, - "bm": 0 - }, - { - "ddd": 0, - "ind": 2, - "ty": 4, - "nm": "esquerdo", - "parent": 1, - "sr": 1, - "ks": { - "o": { "a": 0, "k": 100, "ix": 11 }, - "r": { - "a": 1, - "k": [ - { - "i": { "x": [0.552], "y": [1] }, - "o": { "x": [0.702], "y": [0] }, - "t": 0, - "s": [-1] - }, - { "t": 30, "s": [43.5] } - ], - "ix": 10 - }, - "p": { "a": 0, "k": [-348.39, -36.55, 0], "ix": 2 }, - "a": { "a": 0, "k": [-2, 84, 0], "ix": 1 }, - "s": { "a": 0, "k": [100, 100, 100], "ix": 6 } - }, - "ao": 0, - "shapes": [ - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [0, 0], - [0, 0] - ], - "o": [ - [0, 0], - [0, 0] - ], - "v": [ - [-178, -102], - [-2, 84] - ], - "c": false - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "st", - "c": { - "a": 0, - "k": [0.854901960784, 0.858823529412, 0.882352941176, 1], - "ix": 3 - }, - "o": { "a": 0, "k": 100, "ix": 4 }, - "w": { "a": 0, "k": 77, "ix": 5 }, - "lc": 2, - "lj": 1, - "ml": 4, - "bm": 0, - "nm": "Stroke 1", - "mn": "ADBE Vector Graphic - Stroke", - "hd": false - }, - { - "ty": "tr", - "p": { "a": 0, "k": [0, 0], "ix": 2 }, - "a": { "a": 0, "k": [0, 0], "ix": 1 }, - "s": { "a": 0, "k": [100, 100], "ix": 3 }, - "r": { "a": 0, "k": 0, "ix": 6 }, - "o": { "a": 0, "k": 100, "ix": 7 }, - "sk": { "a": 0, "k": 0, "ix": 4 }, - "sa": { "a": 0, "k": 0, "ix": 5 }, - "nm": "Transform" - } - ], - "nm": "Shape 1", - "np": 3, - "cix": 2, - "bm": 0, - "ix": 1, - "mn": "ADBE Vector Group", - "hd": false - }, - { - "ty": "tm", - "s": { "a": 0, "k": 8, "ix": 1 }, - "e": { "a": 0, "k": 100, "ix": 2 }, - "o": { "a": 0, "k": 0, "ix": 3 }, - "m": 1, - "ix": 2, - "nm": "Trim Paths 1", - "mn": "ADBE Vector Filter - Trim", - "hd": false - } - ], - "ip": 0, - "op": 120, - "st": 0, - "bm": 0 - }, - { - "ddd": 0, - "ind": 3, - "ty": 4, - "nm": "direito", - "parent": 1, - "sr": 1, - "ks": { - "o": { "a": 0, "k": 100, "ix": 11 }, - "r": { - "a": 1, - "k": [ - { - "i": { "x": [0.47], "y": [1] }, - "o": { "x": [0.735], "y": [0] }, - "t": 0, - "s": [1] - }, - { "t": 30, "s": [-43.5] } - ], - "ix": 10 - }, - "p": { "a": 0, "k": [-348.39, -36.55, 0], "ix": 2 }, - "a": { "a": 0, "k": [-2, 84, 0], "ix": 1 }, - "s": { "a": 0, "k": [-100, 100, 100], "ix": 6 } - }, - "ao": 0, - "shapes": [ - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [0, 0], - [0, 0] - ], - "o": [ - [0, 0], - [0, 0] - ], - "v": [ - [-178, -102], - [-2, 84] - ], - "c": false - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "tm", - "s": { "a": 0, "k": 8, "ix": 1 }, - "e": { "a": 0, "k": 100, "ix": 2 }, - "o": { "a": 0, "k": 0, "ix": 3 }, - "m": 1, - "ix": 2, - "nm": "Trim Paths 1", - "mn": "ADBE Vector Filter - Trim", - "hd": false - }, - { - "ty": "st", - "c": { - "a": 0, - "k": [0.854901960784, 0.858823529412, 0.882352941176, 1], - "ix": 3 - }, - "o": { "a": 0, "k": 100, "ix": 4 }, - "w": { "a": 0, "k": 77, "ix": 5 }, - "lc": 2, - "lj": 1, - "ml": 4, - "bm": 0, - "nm": "Stroke 1", - "mn": "ADBE Vector Graphic - Stroke", - "hd": false - }, - { - "ty": "tr", - "p": { "a": 0, "k": [0, 0], "ix": 2 }, - "a": { "a": 0, "k": [0, 0], "ix": 1 }, - "s": { "a": 0, "k": [100, 100], "ix": 3 }, - "r": { "a": 0, "k": 0, "ix": 6 }, - "o": { "a": 0, "k": 100, "ix": 7 }, - "sk": { "a": 0, "k": 0, "ix": 4 }, - "sa": { "a": 0, "k": 0, "ix": 5 }, - "nm": "Transform" - } - ], - "nm": "Shape 1", - "np": 4, - "cix": 2, - "bm": 0, - "ix": 1, - "mn": "ADBE Vector Group", - "hd": false - } - ], - "ip": 0, - "op": 120, - "st": 0, - "bm": 0 - } - ] - } - ], - "layers": [ - { - "ddd": 0, - "ind": 1, - "ty": 0, - "nm": "seta 2", - "refId": "comp_0", - "sr": 1, - "ks": { - "o": { "a": 0, "k": 100, "ix": 11 }, - "r": { "a": 0, "k": 0, "ix": 10 }, - "p": { "a": 0, "k": [357, -247, 0], "ix": 2 }, - "a": { "a": 0, "k": [450, 960, 0], "ix": 1 }, - "s": { "a": 0, "k": [100, 100, 100], "ix": 6 } - }, - "ao": 0, - "w": 900, - "h": 1920, - "ip": 30, - "op": 120, - "st": 30, - "bm": 0 - }, - { - "ddd": 0, - "ind": 2, - "ty": 0, - "nm": "seta", - "refId": "comp_1", - "sr": 1, - "ks": { - "o": { "a": 0, "k": 100, "ix": 11 }, - "r": { "a": 0, "k": 0, "ix": 10 }, - "p": { "a": 0, "k": [357, 258, 0], "ix": 2 }, - "a": { "a": 0, "k": [450, 345, 0], "ix": 1 }, - "s": { "a": 0, "k": [100, 100, 100], "ix": 6 } - }, - "ao": 0, - "w": 900, - "h": 690, - "ip": 0, - "op": 120, - "st": 0, - "bm": 0 - }, - { - "ddd": 0, - "ind": 3, - "ty": 4, - "nm": "base Outlines", - "sr": 1, - "ks": { - "o": { "a": 0, "k": 100, "ix": 11 }, - "r": { "a": 0, "k": 0, "ix": 10 }, - "p": { "a": 0, "k": [357, 548.713, 0], "ix": 2 }, - "a": { "a": 0, "k": [357.81, 129.934, 0], "ix": 1 }, - "s": { "a": 0, "k": [100, 100, 100], "ix": 6 } - }, - "ao": 0, - "shapes": [ - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [0, 0], - [0, 50.043], - [0, 0], - [-21.158, 0], - [0, -21.447], - [0, 0], - [-7.049, 0], - [0, 0], - [0, 7.149], - [0, 0], - [-21.158, 0], - [0, -21.447], - [0, 0], - [49.368, 0] - ], - "o": [ - [-49.369, 0], - [0, 0], - [0, -21.447], - [21.158, 0], - [0, 0], - [0, 7.145], - [0, 0], - [7.053, 0], - [0, 0], - [0, -21.447], - [21.158, 0], - [0, 0], - [0, 50.043], - [0, 0] - ], - "v": [ - [-268.169, 129.445], - [-357.559, 38.834], - [-357.559, -90.61], - [-319.249, -129.445], - [-280.939, -90.61], - [-280.939, 38.834], - [-268.169, 51.778], - [268.169, 51.778], - [280.939, 38.834], - [280.939, -90.61], - [319.249, -129.445], - [357.559, -90.61], - [357.559, 38.834], - [268.169, 129.445] - ], - "c": true - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "fl", - "c": { - "a": 0, - "k": [0.865977448108, 0.86824388691, 0.890449075138, 1], - "ix": 4 - }, - "o": { "a": 0, "k": 100, "ix": 5 }, - "r": 1, - "bm": 0, - "nm": "Fill 1", - "mn": "ADBE Vector Graphic - Fill", - "hd": false - }, - { - "ty": "tr", - "p": { "a": 0, "k": [357.809, 129.695], "ix": 2 }, - "a": { "a": 0, "k": [0, 0], "ix": 1 }, - "s": { "a": 0, "k": [100, 100], "ix": 3 }, - "r": { "a": 0, "k": 0, "ix": 6 }, - "o": { "a": 0, "k": 100, "ix": 7 }, - "sk": { "a": 0, "k": 0, "ix": 4 }, - "sa": { "a": 0, "k": 0, "ix": 5 }, - "nm": "Transform" - } - ], - "nm": "Group 1", - "np": 2, - "cix": 2, - "bm": 0, - "ix": 1, - "mn": "ADBE Vector Group", - "hd": false - } - ], - "ip": 0, - "op": 120, - "st": 0, - "bm": 0 - } - ], - "markers": [] -} diff --git a/src/renderer/src/components/sidebar/sidebar.tsx b/src/renderer/src/components/sidebar/sidebar.tsx index b43c216a..75bd1b78 100644 --- a/src/renderer/src/components/sidebar/sidebar.tsx +++ b/src/renderer/src/components/sidebar/sidebar.tsx @@ -57,6 +57,7 @@ export function Sidebar() { update({ name: userDetails.displayName, Username: userDetails.username, + email: userDetails.email ?? undefined, Email: userDetails.email, "Subscription expiration date": userDetails?.subscription?.expiresAt, "Payment status": userDetails?.subscription?.status, 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 {