mirror of
https://github.com/jeffvli/sonixd.git
synced 2026-04-29 02:32:37 -04:00
Update api
This commit is contained in:
10
src/renderer/api/albumsApi.ts
Normal file
10
src/renderer/api/albumsApi.ts
Normal file
@@ -0,0 +1,10 @@
|
||||
import axios from 'renderer/lib/axios';
|
||||
|
||||
const getAlbum = async (albumId: number) => {
|
||||
const { data } = await axios.get(`/albums/${albumId}`);
|
||||
return data;
|
||||
};
|
||||
|
||||
export const albumsApi = {
|
||||
getAlbum,
|
||||
};
|
||||
@@ -1,29 +1,29 @@
|
||||
import axios from 'axios';
|
||||
|
||||
import axios from 'renderer/lib/axios';
|
||||
import getServerUrl from 'renderer/utils/getServerUrl';
|
||||
import { PingResponse, UserResponse } from './types';
|
||||
|
||||
const login = async (options: {
|
||||
server: string;
|
||||
username: string;
|
||||
password: string;
|
||||
}) => {
|
||||
const { server, username, password } = options;
|
||||
const url = getServerUrl(server);
|
||||
|
||||
const { data } = await axios.post(
|
||||
`${url}/auth/login`,
|
||||
{ username, password },
|
||||
{ withCredentials: true }
|
||||
const login = async (
|
||||
server: string,
|
||||
body: {
|
||||
password: string;
|
||||
username: string;
|
||||
}
|
||||
) => {
|
||||
const serverUrl = getServerUrl(server);
|
||||
const { data } = await axios.post<UserResponse>(
|
||||
`${serverUrl}/auth/login`,
|
||||
body,
|
||||
{
|
||||
withCredentials: true,
|
||||
}
|
||||
);
|
||||
|
||||
return data;
|
||||
};
|
||||
|
||||
const ping = async (options: { server: string }) => {
|
||||
const { server } = options;
|
||||
const url = getServerUrl(server);
|
||||
|
||||
const { data } = await axios.get(`${url}/auth/ping`, {
|
||||
const ping = async (server: string) => {
|
||||
const serverUrl = getServerUrl(server);
|
||||
const { data } = await axios.get<PingResponse>(`${serverUrl}/auth/ping`, {
|
||||
timeout: 2000,
|
||||
});
|
||||
|
||||
|
||||
@@ -1,2 +1,5 @@
|
||||
export * from './authApi';
|
||||
export * from './usersApi';
|
||||
export * from './serversApi';
|
||||
export * from './queries/useAlbum';
|
||||
export * from './queries/queryKeys';
|
||||
|
||||
4
src/renderer/api/queries/queryKeys.ts
Normal file
4
src/renderer/api/queries/queryKeys.ts
Normal file
@@ -0,0 +1,4 @@
|
||||
export const queryKeys = {
|
||||
album: (albumId: number) => ['album', albumId] as const,
|
||||
servers: ['servers'] as const,
|
||||
};
|
||||
10
src/renderer/api/queries/useAlbum.ts
Normal file
10
src/renderer/api/queries/useAlbum.ts
Normal file
@@ -0,0 +1,10 @@
|
||||
import { useQuery } from 'react-query';
|
||||
import { albumsApi } from '../albumsApi';
|
||||
import { queryKeys } from './queryKeys';
|
||||
|
||||
export const useAlbum = (albumId: number) => {
|
||||
return useQuery({
|
||||
queryFn: () => albumsApi.getAlbum(albumId),
|
||||
queryKey: queryKeys.album(albumId),
|
||||
});
|
||||
};
|
||||
23
src/renderer/api/serversApi.ts
Normal file
23
src/renderer/api/serversApi.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
import axios from 'renderer/lib/axios';
|
||||
import { ServerResponse, ServersResponse } from './types';
|
||||
|
||||
const getServers = async () => {
|
||||
const { data } = await axios.get<ServersResponse>('/servers');
|
||||
return data;
|
||||
};
|
||||
|
||||
const create = async (body: {
|
||||
name: string;
|
||||
remoteUserId: string;
|
||||
token: string;
|
||||
url: string;
|
||||
username: string;
|
||||
}) => {
|
||||
const { data } = await axios.post<ServerResponse>('/servers', body);
|
||||
return data;
|
||||
};
|
||||
|
||||
export const serversApi = {
|
||||
create,
|
||||
getServers,
|
||||
};
|
||||
56
src/renderer/api/types.ts
Normal file
56
src/renderer/api/types.ts
Normal file
@@ -0,0 +1,56 @@
|
||||
export type BaseResponse = {
|
||||
data: any;
|
||||
error?: any;
|
||||
response: 'Success' | 'Error';
|
||||
statusCode: number;
|
||||
};
|
||||
|
||||
export type ServerResponse = Server;
|
||||
|
||||
export type ServersResponse = Server[];
|
||||
|
||||
export type UserResponse = User;
|
||||
|
||||
export type UsersResponse = User[];
|
||||
|
||||
export type PingResponse = Ping;
|
||||
|
||||
export interface Server {
|
||||
createdAt: string;
|
||||
id: number;
|
||||
name: string;
|
||||
remoteUserId: string;
|
||||
serverFolder?: ServerFolder[];
|
||||
serverType: string;
|
||||
token: string;
|
||||
updatedAt: string;
|
||||
url: string;
|
||||
username: string;
|
||||
}
|
||||
|
||||
export interface ServerFolder {
|
||||
createdAt: string;
|
||||
enabled: boolean;
|
||||
id: number;
|
||||
isPublic: boolean;
|
||||
name: string;
|
||||
remoteId: string;
|
||||
serverId: number;
|
||||
updatedAt: string;
|
||||
}
|
||||
|
||||
export interface User {
|
||||
createdAt: string;
|
||||
enabled: boolean;
|
||||
id: number;
|
||||
isAdmin: boolean;
|
||||
password: string;
|
||||
updatedAt: string;
|
||||
username: string;
|
||||
}
|
||||
|
||||
export interface Ping {
|
||||
description: string;
|
||||
name: string;
|
||||
version: string;
|
||||
}
|
||||
@@ -1,14 +1,11 @@
|
||||
import axios from 'renderer/lib/axios';
|
||||
import useStore from 'store/useStore';
|
||||
|
||||
const { serverUrl } = useStore.getState();
|
||||
|
||||
const get = async () => {
|
||||
const { data } = await axios.get('/users', { baseURL: serverUrl });
|
||||
import { UserResponse } from './types';
|
||||
|
||||
const getUsers = async () => {
|
||||
const { data } = await axios.get<UserResponse>('/users');
|
||||
return data;
|
||||
};
|
||||
|
||||
export const usersApi = {
|
||||
get,
|
||||
getUsers,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user