mirror of
https://github.com/hydralauncher/hydra.git
synced 2026-01-10 21:36:17 +00:00
139 lines
3.7 KiB
TypeScript
139 lines
3.7 KiB
TypeScript
import type { Downloader } from "@shared";
|
|
import type {
|
|
GameShop,
|
|
SteamAchievement,
|
|
UnlockedAchievement,
|
|
} from "./game.types";
|
|
import type { DownloadStatus } from "./download.types";
|
|
|
|
export type SubscriptionStatus = "active" | "pending" | "cancelled";
|
|
|
|
export interface Subscription {
|
|
id: string;
|
|
status: SubscriptionStatus;
|
|
plan: { id: string; name: string };
|
|
expiresAt: string | null;
|
|
paymentMethod: "pix" | "paypal";
|
|
}
|
|
|
|
export interface Auth {
|
|
accessToken: string;
|
|
refreshToken: string;
|
|
tokenExpirationTimestamp: number;
|
|
featurebaseJwt: string;
|
|
workwondersJwt: string;
|
|
}
|
|
|
|
export interface User {
|
|
id: string;
|
|
displayName: string;
|
|
profileImageUrl: string | null;
|
|
backgroundImageUrl: string | null;
|
|
subscription: Subscription | null;
|
|
}
|
|
|
|
export interface Game {
|
|
title: string;
|
|
iconUrl: string | null;
|
|
libraryHeroImageUrl: string | null;
|
|
logoImageUrl: string | null;
|
|
customIconUrl?: string | null;
|
|
customLogoImageUrl?: string | null;
|
|
customHeroImageUrl?: string | null;
|
|
originalIconPath?: string | null;
|
|
originalLogoPath?: string | null;
|
|
originalHeroPath?: string | null;
|
|
customOriginalIconPath?: string | null;
|
|
customOriginalLogoPath?: string | null;
|
|
customOriginalHeroPath?: string | null;
|
|
playTimeInMilliseconds: number;
|
|
unsyncedDeltaPlayTimeInMilliseconds?: number;
|
|
lastTimePlayed: Date | null;
|
|
objectId: string;
|
|
shop: GameShop;
|
|
remoteId: string | null;
|
|
isDeleted: boolean;
|
|
winePrefixPath?: string | null;
|
|
executablePath?: string | null;
|
|
launchOptions?: string | null;
|
|
favorite?: boolean;
|
|
isPinned?: boolean;
|
|
achievementCount?: number;
|
|
unlockedAchievementCount?: number;
|
|
pinnedDate?: Date | null;
|
|
automaticCloudSync?: boolean;
|
|
hasManuallyUpdatedPlaytime?: boolean;
|
|
newDownloadOptionsCount?: number;
|
|
}
|
|
|
|
export interface Download {
|
|
shop: GameShop;
|
|
objectId: string;
|
|
uri: string;
|
|
folderName: string | null;
|
|
downloadPath: string;
|
|
progress: number;
|
|
downloader: Downloader;
|
|
bytesDownloaded: number;
|
|
fileSize: number | null;
|
|
shouldSeed: boolean;
|
|
status: DownloadStatus | null;
|
|
queued: boolean;
|
|
timestamp: number;
|
|
extracting: boolean;
|
|
automaticallyExtract: boolean;
|
|
extractionProgress: number;
|
|
}
|
|
|
|
export interface GameAchievement {
|
|
achievements: SteamAchievement[];
|
|
unlockedAchievements: UnlockedAchievement[];
|
|
updatedAt: number | undefined;
|
|
language: string | undefined;
|
|
}
|
|
|
|
export type AchievementCustomNotificationPosition =
|
|
| "top-left"
|
|
| "top-center"
|
|
| "top-right"
|
|
| "bottom-left"
|
|
| "bottom-center"
|
|
| "bottom-right";
|
|
|
|
export interface UserPreferences {
|
|
downloadsPath?: string | null;
|
|
ggDealsApiKey?: string | null;
|
|
language?: string;
|
|
realDebridApiToken?: string | null;
|
|
torBoxApiToken?: string | null;
|
|
preferQuitInsteadOfHiding?: boolean;
|
|
runAtStartup?: boolean;
|
|
startMinimized?: boolean;
|
|
disableNsfwAlert?: boolean;
|
|
enableAutoInstall?: boolean;
|
|
seedAfterDownloadComplete?: boolean;
|
|
showHiddenAchievementsDescription?: boolean;
|
|
showDownloadSpeedInMegabits?: boolean;
|
|
downloadNotificationsEnabled?: boolean;
|
|
repackUpdatesNotificationsEnabled?: boolean;
|
|
achievementNotificationsEnabled?: boolean;
|
|
achievementCustomNotificationsEnabled?: boolean;
|
|
achievementCustomNotificationPosition?: AchievementCustomNotificationPosition;
|
|
achievementSoundVolume?: number;
|
|
friendRequestNotificationsEnabled?: boolean;
|
|
friendStartGameNotificationsEnabled?: boolean;
|
|
showDownloadSpeedInMegabytes?: boolean;
|
|
extractFilesByDefault?: boolean;
|
|
enableSteamAchievements?: boolean;
|
|
autoplayGameTrailers?: boolean;
|
|
hideToTrayOnGameStart?: boolean;
|
|
}
|
|
|
|
export interface ScreenState {
|
|
x?: number;
|
|
y?: number;
|
|
height: number;
|
|
width: number;
|
|
isMaximized: boolean;
|
|
}
|