mirror of
https://github.com/hydralauncher/hydra.git
synced 2025-03-09 15:40:26 +00:00
feat: get friends event
This commit is contained in:
parent
909e288bec
commit
d350aa950d
5 changed files with 44 additions and 9 deletions
26
src/main/events/user/get-user-friends.ts
Normal file
26
src/main/events/user/get-user-friends.ts
Normal file
|
@ -0,0 +1,26 @@
|
|||
import { registerEvent } from "../register-event";
|
||||
import { HydraApi } from "@main/services";
|
||||
import { UserFriends } from "@types";
|
||||
|
||||
export const getUserFriends = async (
|
||||
userId: string,
|
||||
take: number,
|
||||
skip: number
|
||||
): Promise<UserFriends> => {
|
||||
return HydraApi.get(`/user/${userId}/friends`, { take, skip }).catch(
|
||||
(_err) => {
|
||||
return { totalFriends: 0, friends: [] } as UserFriends;
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
const getUserFriendsEvent = async (
|
||||
_event: Electron.IpcMainInvokeEvent,
|
||||
userId: string,
|
||||
take: number,
|
||||
skip: number
|
||||
) => {
|
||||
return getUserFriends(userId, take, skip);
|
||||
};
|
||||
|
||||
registerEvent("getUserFriends", getUserFriendsEvent);
|
|
@ -4,13 +4,17 @@ import { steamGamesWorker } from "@main/workers";
|
|||
import { UserProfile } from "@types";
|
||||
import { convertSteamGameToCatalogueEntry } from "../helpers/search-games";
|
||||
import { getSteamAppAsset } from "@main/helpers";
|
||||
import { getUserFriends } from "./get-user-friends";
|
||||
|
||||
const getUser = async (
|
||||
_event: Electron.IpcMainInvokeEvent,
|
||||
userId: string
|
||||
): Promise<UserProfile | null> => {
|
||||
try {
|
||||
const profile = await HydraApi.get(`/user/${userId}`);
|
||||
const [profile, friends] = await Promise.all([
|
||||
HydraApi.get(`/user/${userId}`),
|
||||
getUserFriends(userId, 12, 0),
|
||||
]);
|
||||
|
||||
const recentGames = await Promise.all(
|
||||
profile.recentGames.map(async (game) => {
|
||||
|
@ -46,7 +50,7 @@ const getUser = async (
|
|||
})
|
||||
);
|
||||
|
||||
return { ...profile, libraryGames, recentGames };
|
||||
return { ...profile, libraryGames, recentGames, friends };
|
||||
} catch (err) {
|
||||
return null;
|
||||
}
|
||||
|
|
|
@ -72,7 +72,7 @@ export class HydraApi {
|
|||
this.instance.interceptors.request.use(
|
||||
(request) => {
|
||||
logger.log(" ---- REQUEST -----");
|
||||
logger.log(request.method, request.url, request.data);
|
||||
logger.log(request.method, request.url, request.params, request.data);
|
||||
return request;
|
||||
},
|
||||
(error) => {
|
||||
|
@ -196,12 +196,12 @@ export class HydraApi {
|
|||
throw err;
|
||||
};
|
||||
|
||||
static async get(url: string) {
|
||||
static async get(url: string, params?: any) {
|
||||
if (!this.isLoggedIn()) throw new UserNotLoggedInError();
|
||||
|
||||
await this.revalidateAccessTokenIfExpired();
|
||||
return this.instance
|
||||
.get(url, this.getAxiosConfig())
|
||||
.get(url, { params, ...this.getAxiosConfig() })
|
||||
.then((response) => response.data)
|
||||
.catch(this.handleUnauthorizedError);
|
||||
}
|
||||
|
|
|
@ -342,7 +342,7 @@ export function UserContent({
|
|||
</div>
|
||||
|
||||
{(isMe ||
|
||||
(userProfile.friends && userProfile.friends.length > 0)) && (
|
||||
(userProfile.friends && userProfile.friends.totalFriends > 0)) && (
|
||||
<div className={styles.friendsSection}>
|
||||
<button
|
||||
className={styles.friendsSectionHeader}
|
||||
|
@ -358,7 +358,7 @@ export function UserContent({
|
|||
}}
|
||||
/>
|
||||
<h3 style={{ fontWeight: "400" }}>
|
||||
{userProfile.friends.length}
|
||||
{userProfile.friends.totalFriends}
|
||||
</h3>
|
||||
</button>
|
||||
|
||||
|
@ -369,7 +369,7 @@ export function UserContent({
|
|||
gap: `${SPACING_UNIT}px`,
|
||||
}}
|
||||
>
|
||||
{userProfile.friends.map((friend) => {
|
||||
{userProfile.friends.friends.map((friend) => {
|
||||
return (
|
||||
<button
|
||||
key={friend.id}
|
||||
|
|
|
@ -277,6 +277,11 @@ export interface UserFriend {
|
|||
profileImageUrl: string | null;
|
||||
}
|
||||
|
||||
export interface UserFriends {
|
||||
totalFriends: number;
|
||||
friends: UserFriend[];
|
||||
}
|
||||
|
||||
export interface FriendRequest {
|
||||
id: string;
|
||||
displayName: string;
|
||||
|
@ -291,7 +296,7 @@ export interface UserProfile {
|
|||
totalPlayTimeInSeconds: number;
|
||||
libraryGames: UserGame[];
|
||||
recentGames: UserGame[];
|
||||
friends: UserFriend[];
|
||||
friends: UserFriends;
|
||||
}
|
||||
|
||||
export interface DownloadSource {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue