@veritree/services 0.6.1 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@veritree/services",
3
- "version": "0.6.1",
3
+ "version": "0.9.1",
4
4
  "description": "A collection of javascript functions/services to talk to veritree API",
5
5
  "type": "module",
6
6
  "main": "index.js",
@@ -1,4 +1,4 @@
1
- import { getCookie } from './cookies';
1
+ import { getCookie } from "./cookies";
2
2
 
3
3
  const Api = {
4
4
  baseUrl: `${process.env.API_VERITREE_URL}/api`,
@@ -9,11 +9,11 @@ const Api = {
9
9
  },
10
10
 
11
11
  async post(url, data) {
12
- return await this.unWrap(url, 'post', data);
12
+ return await this.unWrap(url, "post", data);
13
13
  },
14
14
 
15
15
  async update(url, data) {
16
- return await this.unWrap(url, 'put', data);
16
+ return await this.unWrap(url, "put", data);
17
17
  },
18
18
 
19
19
  /**
@@ -24,8 +24,8 @@ const Api = {
24
24
  * @param {object} data
25
25
  * @returns {object} envelope
26
26
  */
27
- async unWrap(url, method = 'get', data) {
28
- if (this.forceEnvelopeResponse) url = this.addEvenlopeArgToUrl(url); // TODO: remove when API is fully migrated to envelopes
27
+ async unWrap(url, method = "get", data) {
28
+ if (this.forceEnvelopeResponse) url = this.handleEnvelopParam(url, data); // TODO: remove when API is fully migrated to envelopes
29
29
  const config = this.getConfig(method, data);
30
30
 
31
31
  try {
@@ -46,15 +46,24 @@ const Api = {
46
46
  * @returns {object} data
47
47
  */
48
48
  getConfig(method, data) {
49
+ const isGet = method === "get";
50
+ const isFormData = this._isFormData(data);
51
+ const accessToken = `Bearer ${getCookie('access_token')}`;
52
+
49
53
  const config = {
50
54
  method,
51
55
  headers: {
52
- 'Content-Type': 'application/json',
53
- Authorization: `Bearer ${getCookie('access_token')}`,
56
+ Authorization: accessToken,
54
57
  },
55
58
  };
56
59
 
57
- if (method !== 'get') config.body = JSON.stringify(data);
60
+ if(!isFormData) {
61
+ config.headers['Content-Type'] = 'application/json';
62
+ }
63
+
64
+ if (!isGet) {
65
+ isFormData ? (config.body = data) : (config.body = JSON.stringify(data));
66
+ }
58
67
 
59
68
  return config;
60
69
  },
@@ -65,13 +74,18 @@ const Api = {
65
74
  * @param {string} url
66
75
  * @returns {string} url
67
76
  */
68
- addEvenlopeArgToUrl(url) {
69
- if (!url || url.includes('_result=1')) return;
70
- const urlHasArgs = url.includes('?');
71
- const urlEvenlopeArg = urlHasArgs ? '&_result=1' : '?_result=1';
77
+ handleEnvelopParam(url) {
78
+ if (!url || url.includes("_result=1")) return url;
79
+
80
+ const urlHasArgs = url.includes("?");
81
+ const urlEvenlopeArg = urlHasArgs ? "&_result=1" : "?_result=1";
72
82
 
73
83
  return `${url}${urlEvenlopeArg}`;
74
84
  },
85
+
86
+ _isFormData(data) {
87
+ return data instanceof FormData;
88
+ },
75
89
  };
76
90
 
77
91
  export default Api;
@@ -0,0 +1,7 @@
1
+ export const getSessionOrgId = () => {
2
+ return getSession().orgId;
3
+ };
4
+
5
+ export const getSession = () => {
6
+ return JSON.parse(localStorage.getItem('session'));
7
+ };
@@ -1,15 +1,18 @@
1
- import Api from '../helpers/api';
1
+ import Api from "../helpers/api";
2
+ import { getSession } from "../helpers/session";
2
3
 
3
- export const createFieldUpdatesApiService = (orgId, orgType) => {
4
+ export const createFieldUpdatesApiService = () => {
4
5
  const resource = `field-updates`;
6
+ const { orgId, orgType } = getSession();
5
7
 
6
8
  const get = {
7
- async all(countryId, regionId, subsiteId, page = 1, pageSize = 10) {
9
+ async all(countryId, regionId, subsiteId, page = 1, orderBy = 'date_planted-desc', pageSize = 10) {
8
10
  const params = `${_getParams(
9
11
  countryId,
10
12
  regionId,
11
13
  subsiteId,
12
14
  page,
15
+ orderBy,
13
16
  pageSize
14
17
  )}`;
15
18
  const url = `${_getUrl()}?${params}`;
@@ -18,22 +21,36 @@ export const createFieldUpdatesApiService = (orgId, orgType) => {
18
21
  },
19
22
  };
20
23
 
24
+ /**
25
+ *
26
+ * @param {string} fieldUpdateId
27
+ * @param {object} data
28
+ * @returns
29
+ */
30
+ const update = (fieldUpdateId, data) => {
31
+ const url = `${_getUrl()}/${fieldUpdateId}?${_getParams()}`;
32
+
33
+ return Api.post(url, data);
34
+ };
35
+
21
36
  const _getUrl = () => {
22
37
  return `${Api.baseUrl}/${resource}`;
23
38
  };
24
39
 
25
- const _getParams = (countryId, regionId, subsiteId, page, pageSize) => {
26
- const countryIdParam = countryId ? `&country_id=${countryId}` : '';
27
- const regionIdParam = regionId ? `&region_id=${regionId}` : '';
28
- const subsiteIdParam = subsiteId ? `&subsite_id=${subsiteId}` : '';
29
- const pageParam = page ? `&page=${page}` : '';
30
- const pageSizeParam = pageSize ? `&page_size=${pageSize}` : '';
31
- const params = `${countryIdParam}${regionIdParam}${subsiteIdParam}${pageParam}${pageSizeParam}`;
40
+ const _getParams = (countryId, regionId, subsiteId, page, orderBy, pageSize) => {
41
+ const countryIdParam = countryId ? `&country_id=${countryId}` : "";
42
+ const regionIdParam = regionId ? `&region_id=${regionId}` : "";
43
+ const subsiteIdParam = subsiteId ? `&subsite_id=${subsiteId}` : "";
44
+ const pageParam = page ? `&page=${page}` : "";
45
+ const orderByParam = orderBy ? `&orderBy=${orderBy}` : "";
46
+ const pageSizeParam = pageSize ? `&page_size=${pageSize}` : "";
47
+ const params = `${countryIdParam}${regionIdParam}${subsiteIdParam}${pageParam}${pageSizeParam}${orderByParam}`;
32
48
 
33
49
  return `org_id=${orgId}&org_type=${orgType}${params}`;
34
50
  };
35
51
 
36
52
  return {
37
53
  get,
54
+ update,
38
55
  };
39
56
  };
@@ -1,38 +1,38 @@
1
1
  import Api from '../helpers/api';
2
2
 
3
- // TODO: Add all possible parameters as in API
4
- export const createForestTypesApiService = () => {
3
+ export const createForestTypesApiService = (orgId, orgType) => {
4
+ if (!orgId || !orgType) throw new Error('orgId and orgType are required');
5
+ const resource = 'forest-types';
6
+
5
7
  const get = {
6
8
  /**
7
- * Gets all forest types of an organization
8
- *
9
- * @param {boolean} isPublic
10
9
  * @returns {object} envelope
11
10
  */
12
- async all(isPublic = false) {
13
- const url = `${_getUrl(isPublic)}`;
11
+ async all(page = 1, pageSize = 10) {
12
+ const url = `${_getUrl()}?${_getParams(page, pageSize)}`;
14
13
  return await Api.get(url);
15
14
  },
16
15
 
17
16
  /**
18
- * Gets a speficific forest type of an organization
19
- *
20
17
  * @param {number/string} id
21
- * @param {boolean} isPublic
22
18
  * @returns {object} envelope
23
19
  */
24
- async specific(id, isPublic = false) {
25
- const url = `${_getUrl(isPublic)}/${id}`;
20
+ async specific(id) {
21
+ const url = `${_getUrl()}/${id}?${_getParams(page, pageSize)}`;
26
22
  return await Api.get(url);
27
23
  },
28
24
  };
29
25
 
30
- const _getResource = (isPublic) => {
31
- return isPublic ? 'forest-type-profiles' : `forest-types`;
26
+ const _getUrl = () => {
27
+ return `${Api.baseUrl}/${resource}`;
32
28
  };
33
29
 
34
- const _getUrl = (isPublic) => {
35
- return `${Api.baseUrl}/${_getResource(isPublic)}`
30
+ const _getParams = (page, pageSize) => {
31
+ const pageParam = page ? `&page=${page}` : '';
32
+ const pageSizeParam = pageSize ? `&page_size=${pageSize}` : '';
33
+ const params = `${pageParam}${pageSizeParam}`;
34
+
35
+ return `org_id=${orgId}&org_type=${orgType}${params}`;
36
36
  };
37
37
 
38
38
  return {