async getDevices()

in source/console/src/views/Client.tsx [674:720]


  async getDevices(selectedStation: ISelectedData) {
    const { selectedProcess } = this.state;

    try {
      const stationId = selectedStation.id;
      let devices: IGeneralQueryData[] = [];

      /**
       * Permission is for users in Associate Group only.
       * If there's no permission for the associate user, the user gets nothing.
       */
      if (this.userGroups.length > 0 ||
        (this.userGroups.length === 0 && this.state.permission.id !== '')) {
        devices = await this.graphQlCommon.listDevices(stationId as string);

        if (this.userGroups.length === 0) {
          const permittedDevices = this.state.permission.devices;
          devices = devices.filter(device =>
            permittedDevices.map(permittedDevice => {
              return permittedDevice.id;
            }).includes(device.id)
          );
        }
      }

      const initialDevice = this.getInitialSelectItem('Device', devices);
      if (initialDevice) {
        this.setLocalStorage('selectedDevice', initialDevice);
        this.setState({ selectedDevice: initialDevice });
      }

      const selectedDevice = this.getLocalStorage('selectedDevice');
      if (
        selectedDevice && selectedDevice.id && selectedDevice.id !== '' &&
        selectedProcess && selectedProcess.id && selectedProcess.id !== ''
      ) {
        await this.getEvents(selectedProcess);
        await this.getIssues(selectedDevice, selectedProcess);
      }

      devices.sort((a, b) => a.name.localeCompare(b.name));
      this.setState({ devices });
    } catch (error) {
      LOGGER.error('Error while getting devices', error);
      this.setState({ error: I18n.get('error.get.devices') });
    }
  }