ci: updating build to support ws url

This commit is contained in:
Chubby Granny Chaser
2025-05-09 20:52:03 +01:00
parent aa18b57ada
commit 6c44cc0cc4
83 changed files with 1810 additions and 3040 deletions

View File

@@ -20,7 +20,6 @@ import {
setUserDetails,
setProfileBackground,
setGameRunning,
setFriendRequestCount,
} from "@renderer/features";
import { useTranslation } from "react-i18next";
import { UserFriendModal } from "./pages/shared-modals/user-friend-modal";
@@ -155,16 +154,6 @@ export function App() {
});
}, [fetchUserDetails, t, showSuccessToast, updateUserDetails]);
useEffect(() => {
const unsubscribe = window.electron.onSyncFriendRequests((result) => {
dispatch(setFriendRequestCount(result.friendRequestCount));
});
return () => {
unsubscribe();
};
}, [dispatch]);
useEffect(() => {
const unsubscribe = window.electron.onGamesRunning((gamesRunning) => {
if (gamesRunning.length) {

View File

@@ -85,5 +85,6 @@
white-space: nowrap;
width: 100%;
text-align: left;
line-height: 1.15;
}
}

View File

@@ -23,6 +23,8 @@ import { sortBy } from "lodash-es";
import cn from "classnames";
import { CommentDiscussionIcon } from "@primer/octicons-react";
import { SidebarGameItem } from "./sidebar-game-item";
import { setFriendRequestCount } from "@renderer/features/user-details-slice";
import { useDispatch } from "react-redux";
const SIDEBAR_MIN_WIDTH = 200;
const SIDEBAR_INITIAL_WIDTH = 250;
@@ -33,6 +35,8 @@ const initialSidebarWidth = window.localStorage.getItem("sidebarWidth");
export function Sidebar() {
const filterRef = useRef<HTMLInputElement>(null);
const dispatch = useDispatch();
const { t } = useTranslation("sidebar");
const { library, updateLibrary } = useLibrary();
const navigate = useNavigate();
@@ -60,6 +64,16 @@ export function Sidebar() {
updateLibrary();
}, [lastPacket?.gameId, updateLibrary]);
useEffect(() => {
const unsubscribe = window.electron.onSyncFriendRequests((result) => {
dispatch(setFriendRequestCount(result.friendRequestCount));
});
return () => {
unsubscribe();
};
}, [dispatch]);
const sidebarRef = useRef<HTMLElement>(null);
const cursorPos = useRef({ x: 0 });

View File

@@ -32,6 +32,7 @@ import type {
Theme,
Badge,
Auth,
ShortcutLocation,
} from "@types";
import type { AxiosProgressEvent } from "axios";
import type disk from "diskusage";
@@ -101,7 +102,11 @@ declare global {
objectId: string,
title: string
) => Promise<void>;
createGameShortcut: (shop: GameShop, objectId: string) => Promise<boolean>;
createGameShortcut: (
shop: GameShop,
objectId: string,
location: ShortcutLocation
) => Promise<boolean>;
updateExecutablePath: (
shop: GameShop,
objectId: string,

View File

@@ -26,7 +26,7 @@ export const toastSlice = createSlice({
state.title = action.payload.title;
state.message = action.payload.message;
state.type = action.payload.type;
state.duration = action.payload.duration ?? 2000;
state.duration = action.payload.duration ?? 3000;
state.visible = true;
},
closeToast: (state) => {

View File

@@ -34,13 +34,18 @@ export function DownloadSettingsModal({
}: Readonly<DownloadSettingsModalProps>) {
const { t } = useTranslation("game_details");
const userPreferences = useAppSelector(
(state) => state.userPreferences.value
);
const { showErrorToast } = useToast();
const [diskFreeSpace, setDiskFreeSpace] = useState<number | null>(null);
const [selectedPath, setSelectedPath] = useState("");
const [downloadStarting, setDownloadStarting] = useState(false);
const [automaticExtractionEnabled, setAutomaticExtractionEnabled] =
useState(true);
const [automaticExtractionEnabled, setAutomaticExtractionEnabled] = useState(
userPreferences?.extractFilesByDefault ?? true
);
const [selectedDownloader, setSelectedDownloader] =
useState<Downloader | null>(null);
const [hasWritePermission, setHasWritePermission] = useState<boolean | null>(
@@ -49,10 +54,6 @@ export function DownloadSettingsModal({
const { isFeatureEnabled, Feature } = useFeature();
const userPreferences = useAppSelector(
(state) => state.userPreferences.value
);
const getDiskFreeSpace = async (path: string) => {
const result = await window.electron.getDiskFreeSpace(path);
setDiskFreeSpace(result.free);
@@ -83,6 +84,8 @@ export function DownloadSettingsModal({
const getDefaultDownloader = useCallback(
(availableDownloaders: Downloader[]) => {
if (availableDownloaders.length === 0) return null;
if (availableDownloaders.includes(Downloader.Hydra)) {
return Downloader.Hydra;
}

View File

@@ -1,7 +1,7 @@
import { useContext, useRef, useState } from "react";
import { useTranslation } from "react-i18next";
import { Button, CheckboxField, Modal, TextField } from "@renderer/components";
import type { LibraryGame } from "@types";
import type { LibraryGame, ShortcutLocation } from "@types";
import { gameDetailsContext } from "@renderer/context";
import { DeleteGameModal } from "@renderer/pages/downloads/delete-game-modal";
import { useDownload, useToast, useUserDetails } from "@renderer/hooks";
@@ -107,15 +107,18 @@ export function GameOptionsModal({
}
};
const handleCreateShortcut = async () => {
const handleCreateShortcut = async (location: ShortcutLocation) => {
window.electron
.createGameShortcut(game.shop, game.objectId)
.createGameShortcut(game.shop, game.objectId, location)
.then((success) => {
if (success) {
showSuccessToast(t("create_shortcut_success"));
} else {
showErrorToast(t("create_shortcut_error"));
}
})
.catch(() => {
showErrorToast(t("create_shortcut_error"));
});
};
@@ -176,6 +179,9 @@ export function GameOptionsModal({
const shouldShowWinePrefixConfiguration =
window.electron.platform === "linux";
const shouldShowCreateStartMenuShortcut =
window.electron.platform === "win32";
const handleResetAchievements = async () => {
setIsDeletingAchievements(true);
try {
@@ -278,9 +284,20 @@ export function GameOptionsModal({
>
{t("open_folder")}
</Button>
<Button onClick={handleCreateShortcut} theme="outline">
<Button
onClick={() => handleCreateShortcut("desktop")}
theme="outline"
>
{t("create_shortcut")}
</Button>
{shouldShowCreateStartMenuShortcut && (
<Button
onClick={() => handleCreateShortcut("start_menu")}
theme="outline"
>
{t("create_start_menu_shortcut")}
</Button>
)}
</div>
)}
</div>
@@ -362,7 +379,7 @@ export function GameOptionsModal({
<div className="game-options-modal__downloads">
<div className="game-options-modal__header">
<h2>{t("downloads_secion_title")}</h2>
<h2>{t("downloads_section_title")}</h2>
<h4 className="game-options-modal__header-description">
{t("downloads_section_description")}
</h4>

View File

@@ -24,6 +24,7 @@ export function SettingsBehavior() {
seedAfterDownloadComplete: false,
showHiddenAchievementsDescription: false,
showDownloadSpeedInMegabytes: false,
extractFilesByDefault: true,
});
const { t } = useTranslation("settings");
@@ -43,6 +44,7 @@ export function SettingsBehavior() {
userPreferences.showHiddenAchievementsDescription ?? false,
showDownloadSpeedInMegabytes:
userPreferences.showDownloadSpeedInMegabytes ?? false,
extractFilesByDefault: userPreferences.extractFilesByDefault ?? true,
});
}
}, [userPreferences]);
@@ -152,6 +154,16 @@ export function SettingsBehavior() {
})
}
/>
<CheckboxField
label={t("extract_files_by_default")}
checked={form.extractFilesByDefault}
onChange={() =>
handleChange({
extractFilesByDefault: !form.extractFilesByDefault,
})
}
/>
</>
);
}