The frontend component of PuffPastry, meant to interface with the backend, which in turn interfaces with the smart contract.
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 
 
 
 

71 rinda
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. }