Skip to content
index.js 8.39 KiB
Newer Older
const BASE_API_URL = process.env.VUE_APP_API_BASE_URL;
function apiRequest(url, options) {
  return new Promise((resolve) => {
    fetch(url, options)
        if ([200, 201, 204, 400].includes(response.status)) { // valid status codes
          resolve(response.json());
        } else {
          response.json().then(jsonValue => dispatchApiErrorEvent(jsonValue));
        }
      })
      .catch(error => {
        dispatchApiErrorEvent(error);
      });
  });
}

function dispatchApiErrorEvent(error) {
  let message;
  if (error.message) {
    message = error.message;
  } else {
    message = 'Generic error';
  }

  let event = new CustomEvent('apiError');
  event.message = message;
  document.dispatchEvent(event);
}

/* For loading animation */
function loading(value) {
  let event = new CustomEvent('loading');
  event.value = value;
  document.dispatchEvent(event);
}

export default {
  fetchHomePageModel(input) {
    let url = BASE_API_URL +
      'home?groupId=' + input.selectedGroupId +
      '&paginatorPageSize=' + input.paginatorPageSize +
      '&paginatorPage=' + input.paginatorPage;
    return apiRequest(url, {
      method: 'GET',
      cache: 'no-cache',
      credentials: 'include',
      headers: {
        'Content-Type': 'application/json',
        'Accept': 'application/json',
      }
    });
  },
  fetchGroupsTab(input) {
    let url = BASE_API_URL +
      'groups?groupId=' + input.selectedGroupId +
      '&paginatorPageSize=' + input.paginatorPageSize +
      '&paginatorPage=' + input.paginatorPage +
      '&onlyPanel=false';
    if (input.searchFilter !== null) {
      url += '&searchFilter=' + input.searchFilter;
    }
    return apiRequest(url, {
      method: 'GET',
      cache: 'no-cache',
      credentials: 'include',
      headers: {
        'Content-Type': 'application/json',
        'Accept': 'application/json',
      }
    });
  },
  fetchGroupsPanel(input) {
    let url = BASE_API_URL +
      'groups?groupId=' + input.selectedGroupId +
      '&paginatorPageSize=' + input.paginatorPageSize +
      '&paginatorPage=' + input.paginatorPage +
      '&onlyPanel=true';
    if (input.searchFilter !== null) {
      url += '&searchFilter=' + input.searchFilter;
    }
    return apiRequest(url, {
      method: 'GET',
      cache: 'no-cache',
      credentials: 'include',
      headers: {
        'Content-Type': 'application/json',
        'Accept': 'application/json',
      }
    });
  },
  fetchMembersPanel(input) {
    let url = BASE_API_URL +
      'members?groupId=' + input.selectedGroupId +
      '&paginatorPageSize=' + input.paginatorPageSize +
      '&paginatorPage=' + input.paginatorPage;
    return apiRequest(url, {
      method: 'GET',
      cache: 'no-cache',
      credentials: 'include',
      headers: {
        'Content-Type': 'application/json',
        'Accept': 'application/json',
      }
    });
  },
  fetchPermissionsPanel(input) {
    let url = BASE_API_URL +
      'permissions?groupId=' + input.selectedGroupId +
      '&paginatorPageSize=' + input.paginatorPageSize +
      '&paginatorPage=' + input.paginatorPage;
      method: 'GET',
      cache: 'no-cache',
      credentials: 'include',
      headers: {
        'Content-Type': 'application/json',
        'Accept': 'application/json',
  addGroup(newGroupName, leaf, input) {
    let url = BASE_API_URL + 'group';
    return apiRequest(url, {
      method: 'POST',
      cache: 'no-cache',
      credentials: 'include',
      headers: {
        'Content-Type': 'application/json',
        'Accept': 'application/json',
      },
      body: JSON.stringify({
        newGroupName: newGroupName,
        parentGroupId: input.selectedGroupId,
        paginatorPageSize: input.paginatorPageSize,
        paginatorPage: input.paginatorPage,
        searchFilter: input.searchFilter,
        leaf: leaf
  renameGroup(groupId, newGroupName, leaf, input) {
    let url = BASE_API_URL + 'group/' + groupId;
    return apiRequest(url, {
      method: 'PUT',
      cache: 'no-cache',
      credentials: 'include',
      headers: {
        'Content-Type': 'application/json',
        'Accept': 'application/json',
      },
      body: JSON.stringify({
        newGroupName: newGroupName,
        leaf: leaf,
        paginatorPageSize: input.paginatorPageSize,
        paginatorPage: input.paginatorPage,
        searchFilter: input.searchFilter
  removeGroup(groupId, input) {
    let url = BASE_API_URL + 'group/' + groupId +
      '?paginatorPageSize=' + input.paginatorPageSize +
      '&paginatorPage=' + input.paginatorPage;
    if (input.searchFilter !== null) {
      url += '&searchFilter=' + input.searchFilter;
    }
    return apiRequest(url, {
      method: 'DELETE',
      cache: 'no-cache',
      credentials: 'include',
      headers: {
        'Content-Type': 'application/json',
        'Accept': 'application/json',
      }
    });
  searchUser(searchInput) {
Sonia Zorba's avatar
Sonia Zorba committed
    let url = BASE_API_URL + 'users?search=' + searchInput;

    return apiRequest(url, {
      method: 'GET',
      cache: 'no-cache',
      credentials: 'include',
      headers: {
        'Content-Type': 'application/json',
        'Accept': 'application/json',
      }
    });
  addPermission(userId, permission, input) {
    let url = BASE_API_URL + 'permission';

    return apiRequest(url, {
      method: 'POST',
      cache: 'no-cache',
      credentials: 'include',
      headers: {
        'Content-Type': 'application/json',
        'Accept': 'application/json',
      },
      body: JSON.stringify({
        groupId: input.selectedGroupId,
        userId: userId,
        permission: permission,
        paginatorPageSize: input.paginatorPageSize,
        paginatorPage: input.paginatorPage
      })
    });
  getPermission(groupId, userId) {
    let url = BASE_API_URL + 'permission?groupId=' + groupId + '&userId=' + userId;

    return apiRequest(url, {
      method: 'GET',
      cache: 'no-cache',
      credentials: 'include',
      headers: {
        'Content-Type': 'application/json',
        'Accept': 'application/json',
      }
    });
  },
  addMember(userId, permission, input) {
    let url = BASE_API_URL + 'member';

    return apiRequest(url, {
      method: 'POST',
      cache: 'no-cache',
      credentials: 'include',
      headers: {
        'Content-Type': 'application/json',
        'Accept': 'application/json',
      },
      body: JSON.stringify({
        groupId: input.selectedGroupId,
        userId: userId,
        permission: permission,
        paginatorPageSize: input.paginatorPageSize,
        paginatorPage: input.paginatorPage
      })
    });
  },
  removeMember(userId, removeAlsoPermission, input) {
    let url = BASE_API_URL + 'member' +
      '?groupId=' + input.selectedGroupId +
      '&userId=' + userId +
      '&removeAlsoPermission=' + removeAlsoPermission +
      '&paginatorPageSize=' + input.paginatorPageSize +
      '&paginatorPage=' + input.paginatorPage;
    return apiRequest(url, {
      method: 'DELETE',
      cache: 'no-cache',
      credentials: 'include',
      headers: {
        'Content-Type': 'application/json',
        'Accept': 'application/json',
      }
    });
  },
  removePermission(userId, input) {
    let url = BASE_API_URL + 'permission' +
      '?groupId=' + input.selectedGroupId +
      '&userId=' + userId +
      '&paginatorPageSize=' + input.paginatorPageSize +
      '&paginatorPage=' + input.paginatorPage;
    return apiRequest(url, {
      method: 'DELETE',
      cache: 'no-cache',
      credentials: 'include',
      headers: {
        'Content-Type': 'application/json',
        'Accept': 'application/json',
      }
    });
Sonia Zorba's avatar
Sonia Zorba committed
  },
  search(input) {
    let url = BASE_API_URL + 'search?query=' + input.genericSearch.filter +
      '&page=' + input.genericSearch.paginatorPage + '&pageSize=' + input.genericSearch.paginatorPageSize;

    return apiRequest(url, {
      method: 'GET',
      cache: 'no-cache',
      credentials: 'include',
      headers: {
        'Content-Type': 'application/json',
        'Accept': 'application/json',
      }
    });
  },
  openUserSearchResult(userId) {
    let url = BASE_API_URL + 'search/user/' + userId;

    return apiRequest(url, {
      method: 'GET',
      cache: 'no-cache',
      credentials: 'include',
      headers: {
        'Content-Type': 'application/json',
        'Accept': 'application/json',
      }
    });