Ankilan/src/actions/api/dictionary.js

71 lines
2.0 KiB
JavaScript

import {search} from 'urban-dictionary-client';
import {
SET_AVAILABLE_API,
SET_LOADING_STATE,
SET_PARSED_DICTIONARY,
URBAN_DICTIONARY_API,
WORDS_API,
} from '../../constants/api-constants';
const fetch = require('node-fetch');
import {getResFromWordsAPI, parseWordsApi} from './words-api';
import {
getResFromUrbanDictionary,
parseUrbanDictionaryApi,
} from './urban-dictionary';
import {createDictionary} from '../dictionary/create-dictionary';
import {setFields} from '../anki-set-actions';
import {sendWord, submit} from '../form-actions';
import store from '../../store';
import {getModelId} from '../anki-get-actions';
import {AnkiDroid} from 'react-native-ankidroid/dist/ankidroid';
const getAvailableApi = (apiArray = []) => {
for (const api of apiArray) {
if (api) {
return api;
}
}
return false;
};
const setAvailableApi = api => ({
type: SET_AVAILABLE_API,
payload: api,
});
const setDictioanry = dictioanry => ({
type: SET_PARSED_DICTIONARY,
payload: dictioanry,
});
const setLoadingState = status => ({
type: SET_LOADING_STATE,
payload: status,
});
export const wordInfo = word => async dispatch => {
try {
const api1 = await getResFromWordsAPI(word);
//TODO add Urban Dictionary
/* ********Working with Urban Dictionary*******
const api2 = await getResFromUrbanDictionary(word);
const availableApi = getAvailableApi([api1, api2]);
if (availableApi === false) {
throw new Error('word not found');
}
*/
//function which return universal template for more simple interaction with api
dispatch(setLoadingState(false));
//TODO available dictionary instead api1
await dispatch(setAvailableApi(api1));
const wordDictionary = await createDictionary(api1);
dispatch(setDictioanry(wordDictionary));
/* TODO: move sendWord to submit function */
// sendWord(setFields(wordDictionary));
drawFields();
} catch (e) {
console.log(e);
}
};
export const drawFields = fields => {};