countries-api.tsx 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. import { request } from '../../../utils';
  2. import { API } from '../../../types';
  3. import { ResponseType } from '../response-type';
  4. import { User } from '@api/regions';
  5. export interface PostGetSlowReturn extends ResponseType {
  6. slow: {
  7. country_id: number;
  8. country: string;
  9. flag: string;
  10. mega: number[];
  11. visited: 0 | 1;
  12. slow11: 0 | 1;
  13. slow31: 0 | 1;
  14. slow101: 0 | 1;
  15. yes: number;
  16. }[];
  17. megaregions: {
  18. id: number;
  19. name: string;
  20. }[];
  21. }
  22. export interface PostSetSlow {
  23. token: string;
  24. id: number;
  25. v: boolean;
  26. s11: boolean;
  27. s31: boolean;
  28. s101: boolean;
  29. }
  30. export interface PostGetCountryDataReturn extends ResponseType {
  31. data: {
  32. visited: boolean;
  33. slow11: 0 | 1;
  34. slow31: 0 | 1;
  35. slow101: 0 | 1;
  36. name: string;
  37. flag: string;
  38. users_from_country_count: number;
  39. users_who_visited_country_count: number;
  40. photos: {
  41. title: string;
  42. id: number;
  43. user_id: number;
  44. first_name: string;
  45. last_name: string;
  46. avatar: string | null;
  47. }[];
  48. users_who_visited_country: string[];
  49. users_from_country: string[];
  50. series: {
  51. series_id: number;
  52. series_name: string;
  53. icon: string;
  54. items: {
  55. id: number;
  56. name: string;
  57. description: string | null;
  58. new: 0 | 1;
  59. visited: 0 | 1;
  60. double_point: 0 | 1;
  61. visited_double: 0 | 1;
  62. link: string;
  63. }[];
  64. }[];
  65. };
  66. }
  67. export interface PostGetUsersFromCountryDataReturn extends ResponseType {
  68. data: {
  69. max_pages: number;
  70. users: User[];
  71. };
  72. }
  73. export interface PostGetUsersWhoVisitedCountryDataReturn extends ResponseType {
  74. data: {
  75. max_pages: number;
  76. countries: {
  77. [key: string]: {
  78. country: string;
  79. flag: string;
  80. };
  81. };
  82. users: User[];
  83. };
  84. }
  85. export interface PostGetUserDataReturn extends ResponseType {
  86. data: {
  87. bbox: any;
  88. center: [number, number];
  89. visited: boolean;
  90. slow11: 0 | 1;
  91. slow31: 0 | 1;
  92. slow101: 0 | 1;
  93. };
  94. }
  95. export interface PostGetListCountriesReturn extends ResponseType {
  96. data: {
  97. id: number;
  98. name: string;
  99. bbox: any;
  100. flag: string;
  101. }[];
  102. }
  103. export const countriesApi = {
  104. getSlow: (token: string) => request.postForm<PostGetSlowReturn>(API.GET_SLOW, { token }),
  105. setSlow: (data: PostSetSlow) => request.postForm<ResponseType>(API.SET_SLOW, data),
  106. getCountryData: (id: number, token?: string) =>
  107. request.postForm<PostGetCountryDataReturn>(API.GET_COUNTRY_SCREEN_DATA, { id, token }),
  108. getUsersFromCountry: (id: number, page: number, sort?: string, age?: number) =>
  109. request.postForm<PostGetUsersFromCountryDataReturn>(API.GET_USERS_FROM_COUNTRY, {
  110. id,
  111. page,
  112. sort,
  113. age
  114. }),
  115. getUsersWhoVisitedCountry: (
  116. id: number,
  117. page: number,
  118. sort?: string,
  119. age?: number,
  120. country?: string
  121. ) =>
  122. request.postForm<PostGetUsersWhoVisitedCountryDataReturn>(API.GET_USERS_WHO_VISITED_COUNTRY, {
  123. id,
  124. page,
  125. sort,
  126. age,
  127. country
  128. }),
  129. getCountryUserData: (id: number, token: string) =>
  130. request.postForm<PostGetUserDataReturn>(API.GET_COUNTRY_USER_DATA, { id, token }),
  131. getListCountries: () => request.postForm<PostGetListCountriesReturn>(API.GET_LIST_COUNTRIES)
  132. };