diff --git a/src/renderer/api/albumsApi.ts b/src/renderer/api/albumsApi.ts new file mode 100644 index 0000000..20d2bdc --- /dev/null +++ b/src/renderer/api/albumsApi.ts @@ -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, +}; diff --git a/src/renderer/api/authApi.ts b/src/renderer/api/authApi.ts index 8690f0c..911f083 100644 --- a/src/renderer/api/authApi.ts +++ b/src/renderer/api/authApi.ts @@ -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( + `${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(`${serverUrl}/auth/ping`, { timeout: 2000, }); diff --git a/src/renderer/api/index.ts b/src/renderer/api/index.ts index 1df6c69..ab32bf1 100644 --- a/src/renderer/api/index.ts +++ b/src/renderer/api/index.ts @@ -1,2 +1,5 @@ export * from './authApi'; export * from './usersApi'; +export * from './serversApi'; +export * from './queries/useAlbum'; +export * from './queries/queryKeys'; diff --git a/src/renderer/api/queries/queryKeys.ts b/src/renderer/api/queries/queryKeys.ts new file mode 100644 index 0000000..5b39982 --- /dev/null +++ b/src/renderer/api/queries/queryKeys.ts @@ -0,0 +1,4 @@ +export const queryKeys = { + album: (albumId: number) => ['album', albumId] as const, + servers: ['servers'] as const, +}; diff --git a/src/renderer/api/queries/useAlbum.ts b/src/renderer/api/queries/useAlbum.ts new file mode 100644 index 0000000..6f4dab9 --- /dev/null +++ b/src/renderer/api/queries/useAlbum.ts @@ -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), + }); +}; diff --git a/src/renderer/api/serversApi.ts b/src/renderer/api/serversApi.ts new file mode 100644 index 0000000..925eae4 --- /dev/null +++ b/src/renderer/api/serversApi.ts @@ -0,0 +1,23 @@ +import axios from 'renderer/lib/axios'; +import { ServerResponse, ServersResponse } from './types'; + +const getServers = async () => { + const { data } = await axios.get('/servers'); + return data; +}; + +const create = async (body: { + name: string; + remoteUserId: string; + token: string; + url: string; + username: string; +}) => { + const { data } = await axios.post('/servers', body); + return data; +}; + +export const serversApi = { + create, + getServers, +}; diff --git a/src/renderer/api/types.ts b/src/renderer/api/types.ts new file mode 100644 index 0000000..961a7e6 --- /dev/null +++ b/src/renderer/api/types.ts @@ -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; +} diff --git a/src/renderer/api/usersApi.ts b/src/renderer/api/usersApi.ts index 616166f..8702715 100644 --- a/src/renderer/api/usersApi.ts +++ b/src/renderer/api/usersApi.ts @@ -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('/users'); return data; }; export const usersApi = { - get, + getUsers, };