mirror of
https://github.com/hydralauncher/hydra.git
synced 2026-01-28 21:31:03 +00:00
Merge branch 'main' into quick-add-to-library-button
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Hydra</title>
|
||||
<title>Hydra Launcher</title>
|
||||
<meta
|
||||
http-equiv="Content-Security-Policy"
|
||||
content="default-src 'self' 'unsafe-inline' * data: local:;"
|
||||
|
||||
@@ -74,6 +74,6 @@
|
||||
}
|
||||
|
||||
&__error-label {
|
||||
color: globals.$danger-color;
|
||||
color: globals.$error-color;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -182,11 +182,6 @@ export function GameDetailsContextProvider({
|
||||
})
|
||||
.catch(() => {});
|
||||
}
|
||||
|
||||
window.electron.syncGameByObjectId(shop, objectId).then(() => {
|
||||
if (abortController.signal.aborted) return;
|
||||
updateGame();
|
||||
});
|
||||
}, [
|
||||
updateGame,
|
||||
dispatch,
|
||||
|
||||
1
src/renderer/src/declaration.d.ts
vendored
1
src/renderer/src/declaration.d.ts
vendored
@@ -155,7 +155,6 @@ declare global {
|
||||
shop: GameShop,
|
||||
objectId: string
|
||||
) => Promise<LibraryGame | null>;
|
||||
syncGameByObjectId: (shop: GameShop, objectId: string) => Promise<void>;
|
||||
onGamesRunning: (
|
||||
cb: (
|
||||
gamesRunning: Pick<GameRunning, "id" | "sessionDurationInMillis">[]
|
||||
|
||||
@@ -12,7 +12,6 @@ import type {
|
||||
UpdateProfileRequest,
|
||||
UserDetails,
|
||||
} from "@types";
|
||||
import * as Sentry from "@sentry/react";
|
||||
import { UserFriendModalTab } from "@renderer/pages/shared-modals/user-friend-modal";
|
||||
|
||||
export function useUserDetails() {
|
||||
@@ -29,8 +28,6 @@ export function useUserDetails() {
|
||||
} = useAppSelector((state) => state.userDetails);
|
||||
|
||||
const clearUserDetails = useCallback(async () => {
|
||||
Sentry.setUser(null);
|
||||
|
||||
dispatch(setUserDetails(null));
|
||||
dispatch(setProfileBackground(null));
|
||||
|
||||
@@ -45,12 +42,6 @@ export function useUserDetails() {
|
||||
|
||||
const updateUserDetails = useCallback(
|
||||
async (userDetails: UserDetails) => {
|
||||
Sentry.setUser({
|
||||
id: userDetails.id,
|
||||
username: userDetails.username,
|
||||
email: userDetails.email ?? undefined,
|
||||
});
|
||||
|
||||
dispatch(setUserDetails(userDetails));
|
||||
window.localStorage.setItem("userDetails", JSON.stringify(userDetails));
|
||||
},
|
||||
|
||||
@@ -21,7 +21,6 @@ import resources from "@locales";
|
||||
|
||||
import { logger } from "./logger";
|
||||
import { addCookieInterceptor } from "./cookies";
|
||||
import * as Sentry from "@sentry/react";
|
||||
import Catalogue from "./pages/catalogue/catalogue";
|
||||
import Home from "./pages/home/home";
|
||||
import Downloads from "./pages/downloads/downloads";
|
||||
@@ -32,18 +31,6 @@ import Achievements from "./pages/achievements/achievements";
|
||||
import ThemeEditor from "./pages/theme-editor/theme-editor";
|
||||
import { AchievementNotification } from "./pages/achievements/notification/achievement-notification";
|
||||
|
||||
Sentry.init({
|
||||
dsn: import.meta.env.RENDERER_VITE_SENTRY_DSN,
|
||||
integrations: [
|
||||
Sentry.browserTracingIntegration(),
|
||||
Sentry.replayIntegration(),
|
||||
],
|
||||
tracesSampleRate: 1.0,
|
||||
replaysSessionSampleRate: 0.1,
|
||||
replaysOnErrorSampleRate: 1.0,
|
||||
release: await window.electron.getVersion(),
|
||||
});
|
||||
|
||||
console.log = logger.log;
|
||||
|
||||
const isStaging = await window.electron.isStaging();
|
||||
|
||||
@@ -158,8 +158,8 @@ $logo-max-width: 200px;
|
||||
&-points {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: end;
|
||||
gap: 4px;
|
||||
margin-right: 4px;
|
||||
font-weight: 600;
|
||||
|
||||
&--locked {
|
||||
|
||||
@@ -55,7 +55,6 @@ export function AchievementNotification() {
|
||||
isHidden: false,
|
||||
isRare: false,
|
||||
isPlatinum: false,
|
||||
points: 0,
|
||||
iconUrl: "https://cdn.losbroxas.org/favicon.svg",
|
||||
},
|
||||
]);
|
||||
|
||||
@@ -72,6 +72,11 @@ export function GameItem({ game }: GameItemProps) {
|
||||
);
|
||||
|
||||
if (index !== undefined && steamGenres[language] && steamGenres[language][index]) {
|
||||
if (
|
||||
index !== undefined &&
|
||||
steamGenres[language] &&
|
||||
steamGenres[language][index]
|
||||
) {
|
||||
return steamGenres[language][index];
|
||||
}
|
||||
|
||||
|
||||
@@ -9,5 +9,16 @@
|
||||
opacity: 1;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
&--with-tooltip {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
gap: 8px;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
&--tooltip {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import { CheckboxField } from "@renderer/components";
|
||||
import { useAppSelector } from "@renderer/hooks";
|
||||
import { settingsContext } from "@renderer/context";
|
||||
import "./settings-behavior.scss";
|
||||
import { QuestionIcon } from "@primer/octicons-react";
|
||||
|
||||
export function SettingsBehavior() {
|
||||
const userPreferences = useAppSelector(
|
||||
@@ -25,6 +26,7 @@ export function SettingsBehavior() {
|
||||
showHiddenAchievementsDescription: false,
|
||||
showDownloadSpeedInMegabytes: false,
|
||||
extractFilesByDefault: true,
|
||||
enableSteamAchievements: false,
|
||||
});
|
||||
|
||||
const { t } = useTranslation("settings");
|
||||
@@ -45,6 +47,8 @@ export function SettingsBehavior() {
|
||||
showDownloadSpeedInMegabytes:
|
||||
userPreferences.showDownloadSpeedInMegabytes ?? false,
|
||||
extractFilesByDefault: userPreferences.extractFilesByDefault ?? true,
|
||||
enableSteamAchievements:
|
||||
userPreferences.enableSteamAchievements ?? false,
|
||||
});
|
||||
}
|
||||
}, [userPreferences]);
|
||||
@@ -164,6 +168,25 @@ export function SettingsBehavior() {
|
||||
})
|
||||
}
|
||||
/>
|
||||
|
||||
<div className={`settings-behavior__checkbox-container--with-tooltip`}>
|
||||
<CheckboxField
|
||||
label={t("enable_steam_achievements")}
|
||||
checked={form.enableSteamAchievements}
|
||||
onChange={() =>
|
||||
handleChange({
|
||||
enableSteamAchievements: !form.enableSteamAchievements,
|
||||
})
|
||||
}
|
||||
/>
|
||||
|
||||
<small
|
||||
className="settings-behavior__checkbox-container--tooltip"
|
||||
data-open-article="steam-achievements"
|
||||
>
|
||||
<QuestionIcon size={12} />
|
||||
</small>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -51,6 +51,14 @@ export const UserFriendModalAddFriend = ({
|
||||
}
|
||||
};
|
||||
|
||||
const validateFriendCode = (callback: () => void) => {
|
||||
if (friendCode.length === 8) {
|
||||
return callback();
|
||||
}
|
||||
|
||||
showErrorToast(t("friend_code_length_error"));
|
||||
};
|
||||
|
||||
const handleCancelFriendRequest = (userId: string) => {
|
||||
updateFriendRequestState(userId, "CANCEL").catch(() => {
|
||||
showErrorToast(t("try_again"));
|
||||
@@ -91,13 +99,13 @@ export const UserFriendModalAddFriend = ({
|
||||
disabled={isAddingFriend}
|
||||
className="user-friend-modal-add-friend__button"
|
||||
type="button"
|
||||
onClick={handleClickAddFriend}
|
||||
onClick={() => validateFriendCode(handleClickAddFriend)}
|
||||
>
|
||||
{isAddingFriend ? t("sending") : t("add")}
|
||||
</Button>
|
||||
|
||||
<Button
|
||||
onClick={handleClickSeeProfile}
|
||||
onClick={() => validateFriendCode(handleClickSeeProfile)}
|
||||
disabled={isAddingFriend}
|
||||
className="user-friend-modal-add-friend__button"
|
||||
type="button"
|
||||
|
||||
@@ -7,6 +7,7 @@ $body-color: #8e919b;
|
||||
$border-color: rgba(255, 255, 255, 0.15);
|
||||
$success-color: #1c9749;
|
||||
$danger-color: #801d1e;
|
||||
$error-color: #e11d48;
|
||||
$warning-color: #ffc107;
|
||||
|
||||
$brand-teal: #16b195;
|
||||
|
||||
Reference in New Issue
Block a user