Example #1
0
export const importTask = (script: string) => async (
  dispatch,
  getState: GetStateFunc
): Promise<void> => {
  try {
    if (_.isEmpty(script)) {
      dispatch(notify(taskImportFailed('File is empty')))
      return
    }

    const {
      orgs: {org},
    } = await getState()

    await client.tasks.createByOrgID(org.id, script)

    dispatch(getTasks())

    dispatch(notify(taskImportSuccess()))
  } catch (error) {
    console.error(error)
    const message = getErrorMessage(error)
    dispatch(notify(taskImportFailed(message)))
  }
}
Example #2
0
export const importScript = (script: string, fileName: string) => async (
  dispatch,
  getState: GetStateFunc
): Promise<void> => {
  try {
    const validFileExtension = '.flux'

    const fileExtensionRegex = new RegExp(`${validFileExtension}$`)

    if (!fileName.match(fileExtensionRegex)) {
      dispatch(notify(taskImportFailed(fileName, 'Please import a .flux file')))
      return
    }

    if (_.isEmpty(script)) {
      dispatch(notify(taskImportFailed(fileName, 'No Flux found in file')))
      return
    }

    const {orgs} = await getState()
    const orgID = getDeep<string>(orgs, '0.id', '') // TODO org selection by user.

    await submitNewTask(orgID, script)

    dispatch(populateTasks())

    dispatch(notify(taskImportSuccess(fileName)))
  } catch (error) {
    console.error(error)
    const message = getDeep<string>(error, 'message', '')
    dispatch(notify(taskImportFailed(fileName, message)))
  }
}