Merge branch 'hydralauncher:main' into main

This commit is contained in:
Kiwo.2
2025-09-30 14:20:47 +02:00
committed by GitHub
11 changed files with 40 additions and 38 deletions

View File

@@ -11,7 +11,7 @@ jobs:
build: build:
strategy: strategy:
matrix: matrix:
os: [windows-latest, ubuntu-latest] os: [windows-2022, ubuntu-latest]
fail-fast: false fail-fast: false
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
@@ -59,7 +59,7 @@ jobs:
RENDERER_VITE_TORBOX_REFERRAL_CODE: ${{ vars.RENDERER_VITE_TORBOX_REFERRAL_CODE }} RENDERER_VITE_TORBOX_REFERRAL_CODE: ${{ vars.RENDERER_VITE_TORBOX_REFERRAL_CODE }}
- name: Build Windows - name: Build Windows
if: matrix.os == 'windows-latest' if: matrix.os == 'windows-2022'
run: yarn build:win run: yarn build:win
env: env:
MAIN_VITE_API_URL: ${{ vars.MAIN_VITE_STAGING_API_URL }} MAIN_VITE_API_URL: ${{ vars.MAIN_VITE_STAGING_API_URL }}

View File

@@ -12,7 +12,7 @@ jobs:
build: build:
strategy: strategy:
matrix: matrix:
os: [windows-latest, ubuntu-latest] os: [windows-2022, ubuntu-latest]
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
@@ -59,7 +59,7 @@ jobs:
RENDERER_VITE_TORBOX_REFERRAL_CODE: ${{ vars.RENDERER_VITE_TORBOX_REFERRAL_CODE }} RENDERER_VITE_TORBOX_REFERRAL_CODE: ${{ vars.RENDERER_VITE_TORBOX_REFERRAL_CODE }}
- name: Build Windows - name: Build Windows
if: matrix.os == 'windows-latest' if: matrix.os == 'windows-2022'
run: yarn build:win run: yarn build:win
env: env:
MAIN_VITE_API_URL: ${{ vars.MAIN_VITE_API_URL }} MAIN_VITE_API_URL: ${{ vars.MAIN_VITE_API_URL }}

View File

@@ -555,7 +555,7 @@
"playtime": "Tempo de jogo", "playtime": "Tempo de jogo",
"played_recently": "Jogado recentemente", "played_recently": "Jogado recentemente",
"pinned": "Fixado", "pinned": "Fixado",
"amount_minutes_short": "{{amount}}h", "amount_minutes_short": "{{amount}}m",
"amount_hours_short": "{{amount}}h", "amount_hours_short": "{{amount}}h",
"game_added_to_pinned": "Jogo adicionado aos fixados", "game_added_to_pinned": "Jogo adicionado aos fixados",
"achievements_earned": "Conquistas recebidas" "achievements_earned": "Conquistas recebidas"

View File

@@ -10,7 +10,7 @@ export const requestSteam250 = async (path: string) => {
const { window } = new JSDOM(response.data); const { window } = new JSDOM(response.data);
const { document } = window; const { document } = window;
return Array.from(document.querySelectorAll(".appline .title a")) return Array.from(document.querySelectorAll("a[data-title]"))
.map(($title) => { .map(($title) => {
const steamGameUrl = ($title as HTMLAnchorElement).href; const steamGameUrl = ($title as HTMLAnchorElement).href;
if (!steamGameUrl) return null; if (!steamGameUrl) return null;

View File

@@ -1,8 +1,7 @@
@use "../../../scss/globals.scss"; @use "../../../scss/globals.scss";
.description-header { .description-header {
width: calc(100% - calc(globals.$spacing-unit * 2)); width: 100%;
margin: calc(globals.$spacing-unit * 1) calc(globals.$spacing-unit * 1);
padding: calc(globals.$spacing-unit * 1.5); padding: calc(globals.$spacing-unit * 1.5);
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
@@ -12,6 +11,7 @@
border-radius: 12px; border-radius: 12px;
border: 1px solid rgba(255, 255, 255, 0.05); border: 1px solid rgba(255, 255, 255, 0.05);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
margin-bottom: calc(globals.$spacing-unit * 1);
&__info { &__info {
display: flex; display: flex;

View File

@@ -191,14 +191,16 @@ export function GameDetailsContent() {
{renderGameLogo()} {renderGameLogo()}
<div className="game-details__hero-buttons game-details__hero-buttons--right"> <div className="game-details__hero-buttons game-details__hero-buttons--right">
<button {game && (
type="button" <button
className="game-details__edit-custom-game-button" type="button"
onClick={handleEditGameClick} className="game-details__edit-custom-game-button"
title={t("edit_game_modal_button")} onClick={handleEditGameClick}
> title={t("edit_game_modal_button")}
<PencilIcon size={16} /> >
</button> <PencilIcon size={16} />
</button>
)}
{game?.shop !== "custom" && ( {game?.shop !== "custom" && (
<button <button
@@ -240,13 +242,15 @@ export function GameDetailsContent() {
</div> </div>
</section> </section>
<EditGameModal {game && (
visible={showEditGameModal} <EditGameModal
onClose={() => setShowEditGameModal(false)} visible={showEditGameModal}
game={game} onClose={() => setShowEditGameModal(false)}
shopDetails={shopDetails} game={game}
onGameUpdated={handleGameUpdated} shopDetails={shopDetails}
/> onGameUpdated={handleGameUpdated}
/>
)}
</div> </div>
); );
} }

View File

@@ -182,6 +182,8 @@ $hero-height: 300px;
globals.$background-color 50%, globals.$background-color 50%,
globals.$dark-background-color 100% globals.$dark-background-color 100%
); );
padding: calc(globals.$spacing-unit * 1.5);
gap: calc(globals.$spacing-unit * 1.5);
} }
&__description-content { &__description-content {
@@ -196,22 +198,12 @@ $hero-height: 300px;
user-select: text; user-select: text;
line-height: 22px; line-height: 22px;
font-size: globals.$body-font-size; font-size: globals.$body-font-size;
padding: calc(globals.$spacing-unit * 2) calc(globals.$spacing-unit * 1.5);
width: 100%; width: 100%;
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
overflow-x: auto; overflow-x: auto;
min-height: auto; min-height: auto;
@media (min-width: 768px) {
padding: calc(globals.$spacing-unit * 2.5) calc(globals.$spacing-unit * 2);
}
@media (min-width: 1024px) {
padding: calc(globals.$spacing-unit * 3) calc(globals.$spacing-unit * 2);
width: 80%;
}
@media (min-width: 1280px) { @media (min-width: 1280px) {
width: 60%; width: 60%;
} }

View File

@@ -1,7 +1,7 @@
@use "../../../scss/globals.scss"; @use "../../../scss/globals.scss";
.sidebar-section { .sidebar-section {
background-color: globals.$dark-background-color; background-color: globals.$background-color;
border-radius: 12px; border-radius: 12px;
border: 1px solid rgba(255, 255, 255, 0.05); border: 1px solid rgba(255, 255, 255, 0.05);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
@@ -21,7 +21,7 @@
font-weight: bold; font-weight: bold;
&:hover { &:hover {
background-color: rgba(255, 255, 255, 0.05); background-color: rgba(255, 255, 255, 0.1);
} }
&:active { &:active {
@@ -40,6 +40,7 @@
&__content { &__content {
overflow: hidden; overflow: hidden;
transition: max-height 0.4s cubic-bezier(0, 1, 0, 1); transition: max-height 0.4s cubic-bezier(0, 1, 0, 1);
background-color: globals.$dark-background-color;
position: relative; position: relative;
} }
} }

View File

@@ -1,11 +1,12 @@
@use "../../../scss/globals.scss"; @use "../../../scss/globals.scss";
.content-sidebar { .content-sidebar {
border-left: solid 1px globals.$border-color;
background-color: globals.$dark-background-color;
height: 100%; height: 100%;
flex-shrink: 0; flex-shrink: 0;
width: 280px; width: 280px;
display: flex;
flex-direction: column;
gap: calc(globals.$spacing-unit * 1.5);
@media (min-width: 1024px) { @media (min-width: 1024px) {
width: 320px; width: 320px;

View File

@@ -177,6 +177,7 @@ export function ProfileContent() {
statIndex={statsIndex} statIndex={statsIndex}
onMouseEnter={handleOnMouseEnterGameCard} onMouseEnter={handleOnMouseEnterGameCard}
onMouseLeave={handleOnMouseLeaveGameCard} onMouseLeave={handleOnMouseLeaveGameCard}
sortBy={sortBy}
/> />
</li> </li>
))} ))}
@@ -208,6 +209,7 @@ export function ProfileContent() {
statIndex={statsIndex} statIndex={statsIndex}
onMouseEnter={handleOnMouseEnterGameCard} onMouseEnter={handleOnMouseEnterGameCard}
onMouseLeave={handleOnMouseLeaveGameCard} onMouseLeave={handleOnMouseLeaveGameCard}
sortBy={sortBy}
/> />
</li> </li>
))} ))}

View File

@@ -26,6 +26,7 @@ interface UserLibraryGameCardProps {
statIndex: number; statIndex: number;
onMouseEnter: () => void; onMouseEnter: () => void;
onMouseLeave: () => void; onMouseLeave: () => void;
sortBy?: string;
} }
export function UserLibraryGameCard({ export function UserLibraryGameCard({
@@ -33,6 +34,7 @@ export function UserLibraryGameCard({
statIndex, statIndex,
onMouseEnter, onMouseEnter,
onMouseLeave, onMouseLeave,
sortBy,
}: UserLibraryGameCardProps) { }: UserLibraryGameCardProps) {
const { userProfile, isMe, getUserLibraryGames } = const { userProfile, isMe, getUserLibraryGames } =
useContext(userProfileContext); useContext(userProfileContext);
@@ -108,7 +110,7 @@ export function UserLibraryGameCard({
!game.isPinned !game.isPinned
); );
await getUserLibraryGames(); await getUserLibraryGames(sortBy);
if (game.isPinned) { if (game.isPinned) {
showSuccessToast(t("game_removed_from_pinned")); showSuccessToast(t("game_removed_from_pinned"));