The frontend component of PuffPastry, meant to interface with the backend, which in turn interfaces with the smart contract.
Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 
 
 
 

71 wiersze
1.8 KiB

  1. /**
  2. * @deprecated This method is deprecated.
  3. */
  4. export const useFetch = () => {
  5. interface FetchConfig {
  6. baseUrl: string;
  7. headers: HeadersInit;
  8. }
  9. interface ApiResponse<T> {
  10. data: T;
  11. status: number;
  12. }
  13. const DEFAULT_CONFIG: FetchConfig = {
  14. baseUrl: '/api/v1',
  15. headers: {
  16. 'Content-Type': 'application/json'
  17. }
  18. };
  19. const buildQueryString = (params?: Record<string, string | number>): string => {
  20. if (!params) return '';
  21. return '?' + Object.entries(params)
  22. .map(([key, value]) => `${key}=${value}`)
  23. .join('&');
  24. };
  25. /**
  26. * @deprecated This function is deprecated.
  27. */
  28. const createRequest = async <T>(
  29. endpoint: string,
  30. method: 'GET' | 'POST',
  31. options: RequestInit = {}
  32. ): Promise<ApiResponse<T>> => {
  33. const response = await fetch(`${DEFAULT_CONFIG.baseUrl}${endpoint}`, {
  34. method,
  35. mode: 'cors',
  36. headers: new Headers(DEFAULT_CONFIG.headers),
  37. ...options
  38. });
  39. const data = await response.json();
  40. return {data, status: response.status};
  41. };
  42. /**
  43. * @deprecated This function is deprecated.
  44. */
  45. const get = async <T>(
  46. endpoint: string,
  47. queryParams?: Record<string, string | number>
  48. ): Promise<T> => {
  49. const query = buildQueryString(queryParams);
  50. const response = await createRequest<T>(`${endpoint}${query}`, 'GET');
  51. return response.data;
  52. };
  53. /**
  54. * @deprecated This function is deprecated.
  55. */
  56. const post = async <T, U>(endpoint: string, payload: T): Promise<U> => {
  57. const response = await createRequest<U>(endpoint, 'POST', {
  58. body: JSON.stringify(payload)
  59. });
  60. return response.data;
  61. };
  62. return { get, post }
  63. }