From a1955b826eab3bab2ef8e9e14c90fd4c5c57ef78 Mon Sep 17 00:00:00 2001 From: horhik Date: Fri, 20 Mar 2020 12:19:09 -0300 Subject: [PATCH 1/4] add submiting word --- src/actions/api/dictionary.js | 8 +- src/actions/api/word-sound.js | 3 +- src/actions/api/yandex-dictionary.js | 1 - src/actions/dictionary/create-dictionary.js | 5 +- src/actions/dictionary/get-translate.js | 5 +- src/actions/form-actions.js | 1 + src/components/anki-form.jsx | 16 +- src/components/view/submit-button.jsx | 5 +- src/components/view/translatable-word.jsx | 8 +- src/reducers/api-reducer.js | 6 + yarn.lock | 337 ++++++++++++++++---- 11 files changed, 316 insertions(+), 79 deletions(-) create mode 100644 src/actions/form-actions.js diff --git a/src/actions/api/dictionary.js b/src/actions/api/dictionary.js index f58ee61..89cfee2 100644 --- a/src/actions/api/dictionary.js +++ b/src/actions/api/dictionary.js @@ -1,6 +1,7 @@ import {search} from 'urban-dictionary-client'; import { SET_AVAILABLE_API, + SET_PARSED_DICTIONARY, URBAN_DICTIONARY_API, WORDS_API, } from '../../constants/api-constants'; @@ -25,6 +26,10 @@ const setAvailableApi = api => ({ type: SET_AVAILABLE_API, payload: api, }); +const setDictioanry = dictioanry => ({ + type: SET_PARSED_DICTIONARY, + payload: dictioanry, +}); export const wordInfo = word => async dispatch => { try { @@ -40,7 +45,8 @@ export const wordInfo = word => async dispatch => { //function which return universal template for more simple interaction with api //TODO available dictionary instead api1 await dispatch(setAvailableApi(api1)); - await createDictionary(api1); + const wordDictionary = await createDictionary(api1); + dispatch(setDictioanry(wordDictionary)); } catch (e) { console.log(e); } diff --git a/src/actions/api/word-sound.js b/src/actions/api/word-sound.js index 2b561a1..bdf2726 100644 --- a/src/actions/api/word-sound.js +++ b/src/actions/api/word-sound.js @@ -1,12 +1,11 @@ const getAudio = async word => { - const site = await fetch(word, { + const site = await fetch(`https://www.lexico.com/definition/${word}`, { method: 'GET', headers: {'Content-Type': 'text/html'}, }); const html = await site.text(); const getSrc = new RegExp(''); const src = html.match(getSrc)[1]; - console.log(src); return src; }; diff --git a/src/actions/api/yandex-dictionary.js b/src/actions/api/yandex-dictionary.js index f95c7a9..a14eef3 100644 --- a/src/actions/api/yandex-dictionary.js +++ b/src/actions/api/yandex-dictionary.js @@ -13,7 +13,6 @@ const yDictionary = async ( {method: 'GET'}, ); const json = await res.json(); - // console.log(word, json.def); return findPartofSpeech(json.def); } catch (e) { console.log('err in yandex-dictionary.js: ', e); diff --git a/src/actions/dictionary/create-dictionary.js b/src/actions/dictionary/create-dictionary.js index 470be96..0aa7bf2 100644 --- a/src/actions/dictionary/create-dictionary.js +++ b/src/actions/dictionary/create-dictionary.js @@ -5,6 +5,7 @@ import {compoundWithYDictionary} from './get-translate'; export const createDictionary = async apiRes => { const word = apiRes.word; const parsedDictionary = parseDictionary(apiRes); - // const audio = await getAudio(word); - await compoundWithYDictionary(parsedDictionary, word); + const audio = await getAudio(word); + const compounded = await compoundWithYDictionary(parsedDictionary, word); + return {...compounded, sound: audio}; }; diff --git a/src/actions/dictionary/get-translate.js b/src/actions/dictionary/get-translate.js index 788a579..263c745 100644 --- a/src/actions/dictionary/get-translate.js +++ b/src/actions/dictionary/get-translate.js @@ -5,7 +5,6 @@ export const compoundWithYDictionary = async (definitionList, word) => { let compounded = []; // console.log('YANDEX ', translations); // console.log('WORDS', definitionList); - translations.forEach(translate => { definitionList.words.forEach(definition => { if (definition.pos === translate.pos) { @@ -17,7 +16,8 @@ export const compoundWithYDictionary = async (definitionList, word) => { compounded.push(translate); } }); - console.log(`RESPONSE FOR: ${word}`, compounded); + // console.log(`RESPONSE FOR: ${word}`, {word, compounded}); + return {word, compounded}; } catch (e) { console.log('erris HERE', e); } @@ -35,6 +35,5 @@ export const compoundWithYDictionary = async (definitionList, word) => { }); })(); const yDictionaryRes = smallStore.res.payload; - alert('foo'); console.log(yDictionaryRes, definitionList); };*/ diff --git a/src/actions/form-actions.js b/src/actions/form-actions.js new file mode 100644 index 0000000..6ad0143 --- /dev/null +++ b/src/actions/form-actions.js @@ -0,0 +1 @@ +export const submit = () => ({}); diff --git a/src/components/anki-form.jsx b/src/components/anki-form.jsx index 24c1316..b16267c 100644 --- a/src/components/anki-form.jsx +++ b/src/components/anki-form.jsx @@ -1,4 +1,4 @@ -import React, {useEffect} from 'react'; +import React, {useEffect, useState} from 'react'; import {connect} from 'react-redux'; import DeckPicker from './view/deck-picker'; import {Form, Container, Item} from 'native-base'; @@ -8,6 +8,7 @@ import SubmitButton from './view/submit-button'; import {wordInfo} from "../actions/api/dictionary"; const AnkiForm = props => { + const [target, setTarget] = useState('') useEffect(() => { props.wordInfo('Urge'); props.wordInfo('Maze'); @@ -18,12 +19,19 @@ const AnkiForm = props => { props.wordInfo('meager'); }, []); + const getWord = (word) => { + setTarget(word) + }; + const submit = () => { + props.wordInfo(target) + }; + return ( -
alert('hell')}> + - - + +
); diff --git a/src/components/view/submit-button.jsx b/src/components/view/submit-button.jsx index 874f26e..8dc8eea 100644 --- a/src/components/view/submit-button.jsx +++ b/src/components/view/submit-button.jsx @@ -4,9 +4,10 @@ import {Button, Text} from 'native-base'; const SubmitButton = props => { return ( - ); }; -export default connect()(SubmitButton); +export default SubmitButton + diff --git a/src/components/view/translatable-word.jsx b/src/components/view/translatable-word.jsx index 892a377..b7c7d08 100644 --- a/src/components/view/translatable-word.jsx +++ b/src/components/view/translatable-word.jsx @@ -1,9 +1,11 @@ -import React from 'react'; +import React, {useRef} from 'react'; import {connect} from 'react-redux'; import {TextField} from 'react-native-material-textfield'; const InputWord = props => { - const submit = () => {}; - return ; + const sendWord = (word) => { + props.word(word) + }; + return sendWord(word)} onSubmitEditing={props.onSubmit}/>; }; export default connect(state => ({}), {})(InputWord); diff --git a/src/reducers/api-reducer.js b/src/reducers/api-reducer.js index 13a5f96..b595531 100644 --- a/src/reducers/api-reducer.js +++ b/src/reducers/api-reducer.js @@ -1,5 +1,6 @@ import { SET_AVAILABLE_API, + SET_PARSED_DICTIONARY, SET_YANDEX_DICTIONARY_RESPONSE, } from '../constants/api-constants'; @@ -26,6 +27,11 @@ const apiReducer = (state = initialState, action) => { availableApi: action.payload, availableApiName: action.payload.source, }; + case SET_PARSED_DICTIONARY: + return { + ...state, + parsedDictionary: action.payload, + }; default: return state; } diff --git a/yarn.lock b/yarn.lock index 13f78ba..a30c1b8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1185,6 +1185,11 @@ abab@^2.0.0: resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + abort-controller@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" @@ -1358,6 +1363,19 @@ anymatch@^3.0.3: normalize-path "^3.0.0" picomatch "^2.0.4" +aproba@^1.0.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +are-we-there-yet@~1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" + integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -2346,6 +2364,11 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== +chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + ci-info@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" @@ -2605,6 +2628,11 @@ connect@^3.6.5: parseurl "~1.3.3" utils-merge "1.0.1" +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= + content-disposition@0.5.3: version "0.5.3" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" @@ -2744,9 +2772,9 @@ data-urls@^1.1.0: whatwg-url "^7.0.0" dayjs@^1.8.15: - version "1.8.22" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.8.22.tgz#5e835d776b373e216678be8d12c336da71a25a9c" - integrity sha512-N8IXfxBD62Y9cKTuuuSoOlCXRnnzaTj1vu91r855iq6FbY5cZqOZnW/95nUn6kJiR+W9PHHrLykEoQOe6fUKxQ== + version "1.8.23" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.8.23.tgz#07b5a8e759c4d75ae07bdd0ad6977f851c01e510" + integrity sha512-NmYHMFONftoZbeOhVz6jfiXI4zSiPN6NoVWJgC0aZQfYVwzy/ZpESPHuCcI0B8BUMpSJQ08zenHDbofOLKq8hQ== debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8: version "2.6.9" @@ -2762,6 +2790,13 @@ debug@=3.1.0: dependencies: ms "2.0.0" +debug@^3.2.6: + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + dependencies: + ms "^2.1.1" + debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" @@ -2779,6 +2814,11 @@ decode-uri-component@^0.2.0: resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" @@ -2835,6 +2875,11 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= + denodeify@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/denodeify/-/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631" @@ -2850,6 +2895,11 @@ destroy@~1.0.4: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= +detect-libc@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= + detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" @@ -3049,9 +3099,9 @@ eslint-plugin-prettier@2.6.2: jest-docblock "^21.0.0" eslint-plugin-react-hooks@^2.0.1: - version "2.5.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-2.5.0.tgz#c50ab7ca5945ce6d1cf8248d9e185c80b54171b6" - integrity sha512-bzvdX47Jx847bgAYf0FPX3u1oxU+mKU8tqrpj4UX9A96SbAmj/HVEefEy6rJUog5u8QIlOPTKZcBpGn5kkKfAQ== + version "2.5.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-2.5.1.tgz#4ef5930592588ce171abeb26f400c7fbcbc23cd0" + integrity sha512-Y2c4b55R+6ZzwtTppKwSmK/Kar8AdLiC2f9NADCuxbcTgPPg41Gyqa6b9GppgXSvCtkRw43ZE86CT5sejKC6/g== eslint-plugin-react-native-globals@^0.1.1: version "0.1.2" @@ -3690,15 +3740,22 @@ fs-extra@^7.0.1: jsonfile "^4.0.0" universalify "^0.1.0" +fs-minipass@^1.2.5: + version "1.2.7" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" + integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== + dependencies: + minipass "^2.6.0" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= fsevents@^1.2.7: - version "1.2.11" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.11.tgz#67bf57f4758f02ede88fb2a1712fef4d15358be3" - integrity sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw== + version "1.2.12" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.12.tgz#db7e0d8ec3b0b45724fd4d83d43554a8f1f0de5c" + integrity sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q== dependencies: bindings "^1.5.0" nan "^2.12.1" @@ -3718,6 +3775,20 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + gensync@^1.0.0-beta.1: version "1.0.0-beta.1" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" @@ -3868,6 +3939,11 @@ has-symbols@^1.0.0, has-symbols@^1.0.1: resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= + has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -3981,7 +4057,7 @@ human-signals@^1.1.1: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== -iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@~0.4.13: +iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -3993,6 +4069,13 @@ ieee754@^1.1.4: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== +ignore-walk@^3.0.1: + version "3.0.3" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" + integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== + dependencies: + minimatch "^3.0.4" + ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" @@ -4055,6 +4138,11 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= +ini@~1.3.0: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== + inquirer@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-1.1.3.tgz#6cd2a93f709fa50779731fd2262c698155cab2fa" @@ -5001,11 +5089,11 @@ json-stringify-safe@~5.0.1: integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= json5@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.1.tgz#81b6cb04e9ba496f1c7005d07b4368a2638f90b6" - integrity sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ== + version "2.1.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.2.tgz#43ef1f0af9835dd624751a6b7fa48874fb2d608e" + integrity sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ== dependencies: - minimist "^1.2.0" + minimist "^1.2.5" jsonfile@^2.1.0: version "2.4.0" @@ -5675,21 +5763,31 @@ minimatch@^3.0.4: dependencies: brace-expansion "^1.1.7" -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= - minimist@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.1.0.tgz#cdf225e8898f840a258ded44fc91776770afdc93" integrity sha1-zfIl6ImPhAolje1E/JF3Z3Cv3JM= -minimist@^1.1.1, minimist@^1.2.0: +minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== +minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" + integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minizlib@^1.2.1: + version "1.3.3" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" + integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== + dependencies: + minipass "^2.9.0" + mixin-deep@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" @@ -5698,12 +5796,12 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= +mkdirp@^0.5.0, mkdirp@^0.5.1: + version "0.5.3" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.3.tgz#5a514b7179259287952881e94410ec5465659f8c" + integrity sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg== dependencies: - minimist "0.0.8" + minimist "^1.2.5" moment@2.x.x: version "2.24.0" @@ -5824,6 +5922,15 @@ ncom@~1.0.1: dependencies: sc-formatter "~3.0.1" +needle@^2.2.1: + version "2.3.3" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.3.3.tgz#a041ad1d04a871b0ebb666f40baaf1fb47867117" + integrity sha512-EkY0GeSq87rWp1hoq/sH/wnTWgFVhYlnIkbJ0YJFfRgEFlz2RraCjBpFQ+vrEgEdp0ThfyHADmkChEhcb7PKyw== + dependencies: + debug "^3.2.6" + iconv-lite "^0.4.4" + sax "^1.2.4" + negotiator@0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" @@ -5879,6 +5986,30 @@ node-notifier@^6.0.0: shellwords "^0.1.1" which "^1.3.1" +node-pre-gyp@*: + version "0.14.0" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83" + integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA== + dependencies: + detect-libc "^1.0.2" + mkdirp "^0.5.1" + needle "^2.2.1" + nopt "^4.0.1" + npm-packlist "^1.1.6" + npmlog "^4.0.2" + rc "^1.2.7" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^4.4.2" + +nopt@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" + integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== + dependencies: + abbrev "1" + osenv "^0.1.4" + normalize-package-data@^2.3.2: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -5901,6 +6032,27 @@ normalize-path@^3.0.0: resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== +npm-bundled@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" + integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== + dependencies: + npm-normalize-package-bin "^1.0.1" + +npm-normalize-package-bin@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" + integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== + +npm-packlist@^1.1.6: + version "1.4.8" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" + integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + npm-normalize-package-bin "^1.0.1" + npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -5915,6 +6067,16 @@ npm-run-path@^4.0.0: dependencies: path-key "^3.0.0" +npmlog@^4.0.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + nullthrows@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" @@ -6105,6 +6267,11 @@ ora@^3.4.0: strip-ansi "^5.2.0" wcwidth "^1.0.1" +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + os-locale@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" @@ -6133,6 +6300,14 @@ os-tmpdir@^1.0.0, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= +osenv@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + p-defer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" @@ -6435,9 +6610,9 @@ promise@^7.1.1: asap "~2.0.3" prompts@^2.0.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.1.tgz#b63a9ce2809f106fa9ae1277c275b167af46ea05" - integrity sha512-qIP2lQyCwYbdzcqHIUi2HAxiWixhoM9OdLCWf8txXsapC/X9YdsCoeyRIXE/GP+Q0J37Q7+XN/MFqbUa7IzXNA== + version "2.3.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.2.tgz#480572d89ecf39566d2bd3fe2c9fccb7c4c0b068" + integrity sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA== dependencies: kleur "^3.0.3" sisteransi "^1.0.4" @@ -6519,6 +6694,16 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" +rc@^1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + react-deep-force-update@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/react-deep-force-update/-/react-deep-force-update-1.1.2.tgz#3d2ae45c2c9040cbb1772be52f8ea1ade6ca2ee1" @@ -6533,9 +6718,9 @@ react-devtools-core@^3.6.3: ws "^3.3.1" react-is@^16.12.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.8.6, react-is@^16.9.0: - version "16.13.0" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.0.tgz#0f37c3613c34fe6b37cd7f763a0d6293ab15c527" - integrity sha512-GFMtL0vHkiBv9HluwNZTggSn/sCyEt9n02aM0dSAjGGyqyNlAyftYm4phPxdvCigG15JreC5biwxCgTAJZ7yAA== + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== react-native-ankidroid@^0.4.0: version "0.4.0" @@ -6702,7 +6887,7 @@ read-pkg@^2.0.0: normalize-package-data "^2.3.2" path-type "^2.0.0" -readable-stream@^2.0.1, readable-stream@^2.2.2, readable-stream@~2.3.6: +readable-stream@^2.0.1, readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -6791,9 +6976,9 @@ regenerator-transform@^0.10.0: private "^0.1.6" regenerator-transform@^0.14.2: - version "0.14.3" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.3.tgz#54aebff2ef58c0ae61e695ad1b9a9d65995fff78" - integrity sha512-zXHNKJspmONxBViAb3ZUmFoFPnTBs3zFhCEZJiwp/gkNzxVbTqNJVjYKx6Qk1tQ1P4XLf4TbH9+KBB7wGoAaUw== + version "0.14.4" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.4.tgz#5266857896518d1616a78a0479337a30ea974cc7" + integrity sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw== dependencies: "@babel/runtime" "^7.8.4" private "^0.1.8" @@ -7031,7 +7216,7 @@ rimraf@2.6.3: dependencies: glob "^7.1.3" -rimraf@^2.5.4: +rimraf@^2.5.4, rimraf@^2.6.1: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -7135,7 +7320,7 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" -sax@^1.2.1: +sax@^1.2.1, sax@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== @@ -7243,9 +7428,9 @@ scheduler@0.15.0: object-assign "^4.1.1" scheduler@^0.19.0: - version "0.19.0" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.0.tgz#a715d56302de403df742f4a9be11975b32f5698d" - integrity sha512-xowbVaTPe9r7y7RUejcK73/j8tt2jfiyTednOvHbA8JoClvMYCp+r8QegLwK/n8zWQAtZb1fFnER4XLBZXrCxA== + version "0.19.1" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196" + integrity sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" @@ -7304,7 +7489,7 @@ serve-static@1.14.1, serve-static@^1.13.1: parseurl "~1.3.3" send "0.17.1" -set-blocking@^2.0.0: +set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= @@ -7395,9 +7580,9 @@ simple-swizzle@^0.2.2: is-arrayish "^0.3.1" sisteransi@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.4.tgz#386713f1ef688c7c0304dc4c0632898941cad2e3" - integrity sha512-/ekMoM4NJ59ivGSfKapeG+FWtrmWvA1p6FBZwXrqojw90vJu8lBmrTxCMuBCydKtkaUe2zt4PlxeTKpjwMbyig== + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== slash@^2.0.0: version "2.0.0" @@ -7655,7 +7840,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -7757,6 +7942,11 @@ strip-json-comments@^3.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + sudo-prompt@^9.0.0: version "9.1.1" resolved "https://registry.yarnpkg.com/sudo-prompt/-/sudo-prompt-9.1.1.tgz#73853d729770392caec029e2470db9c221754db0" @@ -7821,6 +8011,19 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" +tar@^4.4.2: + version "4.4.13" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" + integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== + dependencies: + chownr "^1.1.1" + fs-minipass "^1.2.5" + minipass "^2.8.6" + minizlib "^1.2.1" + mkdirp "^0.5.0" + safe-buffer "^5.1.2" + yallist "^3.0.3" + temp@0.8.3: version "0.8.3" resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59" @@ -8330,6 +8533,13 @@ which@^2.0.1: dependencies: isexe "^2.0.0" +wide-align@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + dependencies: + string-width "^1.0.2 || 2" + word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" @@ -8494,6 +8704,11 @@ yallist@^2.1.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= +yallist@^3.0.0, yallist@^3.0.3: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + yargs-parser@^11.1.1: version "11.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" @@ -8502,18 +8717,18 @@ yargs-parser@^11.1.1: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^13.1.1: - version "13.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" - integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== +yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== dependencies: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^18.1.0: - version "18.1.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.0.tgz#1b0ab1118ebd41f68bb30e729f4c83df36ae84c3" - integrity sha512-o/Jr6JBOv6Yx3pL+5naWSoIA2jJ+ZkMYQG/ie9qFbukBe4uzmBatlXFOiu/tNKRWEtyf+n5w7jc/O16ufqOTdQ== +yargs-parser@^18.1.1: + version "18.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.1.tgz#bf7407b915427fc760fcbbccc6c82b4f0ffcbd37" + integrity sha512-KRHEsOM16IX7XuLnMOqImcPNbLVXMNHYAoFc3BKR8Ortl5gzDbtXvvEoGx9imk5E+X1VeNKNlcHr8B8vi+7ipA== dependencies: camelcase "^5.0.0" decamelize "^1.2.0" @@ -8544,9 +8759,9 @@ yargs@^12.0.5: yargs-parser "^11.1.1" yargs@^13.2.2: - version "13.3.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83" - integrity sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA== + version "13.3.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== dependencies: cliui "^5.0.0" find-up "^3.0.0" @@ -8557,12 +8772,12 @@ yargs@^13.2.2: string-width "^3.0.0" which-module "^2.0.0" y18n "^4.0.0" - yargs-parser "^13.1.1" + yargs-parser "^13.1.2" yargs@^15.0.0: - version "15.3.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.0.tgz#403af6edc75b3ae04bf66c94202228ba119f0976" - integrity sha512-g/QCnmjgOl1YJjGsnUg2SatC7NUYEiLXJqxNOQU9qSpjzGtGXda9b+OKccr1kLTy8BN9yqEyqfq5lxlwdc13TA== + version "15.3.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b" + integrity sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA== dependencies: cliui "^6.0.0" decamelize "^1.2.0" @@ -8574,7 +8789,7 @@ yargs@^15.0.0: string-width "^4.2.0" which-module "^2.0.0" y18n "^4.0.0" - yargs-parser "^18.1.0" + yargs-parser "^18.1.1" yargs@^9.0.0: version "9.0.1" From 17bc55ac108af44fcc971af0a80e03a41573d51c Mon Sep 17 00:00:00 2001 From: horhik Date: Tue, 24 Mar 2020 10:37:25 -0300 Subject: [PATCH 2/4] create parseToAnkiFormat function --- package.json | 1 + src/actions/anki-set-actions.js | 40 +++- src/actions/api/dictionary.js | 2 + src/actions/dictionary/get-translate.js | 6 +- src/components/anki-form.jsx | 16 +- src/constants/anki-constants.js | 1 + src/reducers/anki-reducer.js | 2 +- yarn.lock | 239 ++---------------------- 8 files changed, 69 insertions(+), 238 deletions(-) diff --git a/package.json b/package.json index e94eacd..5ca7c81 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ "lint": "eslint ." }, "dependencies": { + "@react-native-community/async-storage": "^1.8.1", "axios": "^0.19.2", "babel-preset-react-native": "^4.0.1", "native-base": "^2.13.8", diff --git a/src/actions/anki-set-actions.js b/src/actions/anki-set-actions.js index fb13d2c..19a7f06 100644 --- a/src/actions/anki-set-actions.js +++ b/src/actions/anki-set-actions.js @@ -1,8 +1,8 @@ -import {AnkiDroid} from 'react-native-ankidroid/dist/ankidroid'; import { SET_ANKI_NOTE_CREATOR, SET_CREATOR_TEMPLATE, SET_DECK, + SET_FIELDS, } from '../constants/anki-constants'; export const selectDeck = id => ({ @@ -19,3 +19,41 @@ export const setCreatorTemplate = template => ({ type: SET_CREATOR_TEMPLATE, payload: template, }); + +const parseToAnkiFormat = dict => { + /* +*** TEMPLATE *** +const modelFields = [ + 'Word or sentence', + 'Part of speech 1', + 'Translation 1', + 'Definition 1', + 'Part of speech 2', + 'Translation 2', + 'Definition 2', + 'Usage example', + 'Transcription', + 'Sound', +] +*/ + + const tr1 = dict.compounded[0]; + const tr2 = dict.compounded[1] || {}; + return [ + dict.word, + tr1.pos, + tr1.tr, + tr1.definition, + tr2.pos || '', + tr2.tr || '', + tr2.definition || '', + `${tr1.example || ''} \n ${tr2.example || ''}`, + dict.pronunciation, + `[sound:${dict.sound}]`, + ]; +}; + +export const setFields = dict => ({ + type: SET_FIELDS, + payload: parseToAnkiFormat(dict), +}); diff --git a/src/actions/api/dictionary.js b/src/actions/api/dictionary.js index 89cfee2..f6532f0 100644 --- a/src/actions/api/dictionary.js +++ b/src/actions/api/dictionary.js @@ -12,6 +12,7 @@ import { parseUrbanDictionaryApi, } from './urban-dictionary'; import {createDictionary} from '../dictionary/create-dictionary'; +import {setFields} from '../anki-set-actions'; const getAvailableApi = (apiArray = []) => { for (const api of apiArray) { @@ -47,6 +48,7 @@ export const wordInfo = word => async dispatch => { await dispatch(setAvailableApi(api1)); const wordDictionary = await createDictionary(api1); dispatch(setDictioanry(wordDictionary)); + dispatch(setFields(wordDictionary)); } catch (e) { console.log(e); } diff --git a/src/actions/dictionary/get-translate.js b/src/actions/dictionary/get-translate.js index 263c745..f4955fd 100644 --- a/src/actions/dictionary/get-translate.js +++ b/src/actions/dictionary/get-translate.js @@ -17,7 +17,11 @@ export const compoundWithYDictionary = async (definitionList, word) => { } }); // console.log(`RESPONSE FOR: ${word}`, {word, compounded}); - return {word, compounded}; + return { + word, + pronunciation: `/${definitionList.pronunciation}/`, + compounded, + }; } catch (e) { console.log('erris HERE', e); } diff --git a/src/components/anki-form.jsx b/src/components/anki-form.jsx index b16267c..de9c3a3 100644 --- a/src/components/anki-form.jsx +++ b/src/components/anki-form.jsx @@ -10,20 +10,20 @@ import {wordInfo} from "../actions/api/dictionary"; const AnkiForm = props => { const [target, setTarget] = useState('') useEffect(() => { - props.wordInfo('Urge'); - props.wordInfo('Maze'); - props.wordInfo('Ramification'); - props.wordInfo('Dare'); - props.wordInfo('Entrepreneurship'); - props.wordInfo('meagre'); - props.wordInfo('meager'); + // props.wordInfo('Urge'); + // props.wordInfo('Maze'); + // props.wordInfo('Ramification'); + // props.wordInfo('Dare'); + // props.wordInfo('Entrepreneurship'); + // props.wordInfo('meagre'); + // props.wordInfo('meager'); }, []); const getWord = (word) => { setTarget(word) }; const submit = () => { - props.wordInfo(target) + props.wordInfo(target); }; return ( diff --git a/src/constants/anki-constants.js b/src/constants/anki-constants.js index eeee433..a94fd19 100644 --- a/src/constants/anki-constants.js +++ b/src/constants/anki-constants.js @@ -17,6 +17,7 @@ export const SET_WORD_SOUND = 'SET_WORD_SOUND'; export const SET_WORD_TRANSLATE = 'SET_WORD_TRANSLATE'; export const SET_ANKI_NOTE_CREATOR = 'SET_ANKI_NOTE_CREATOR'; export const SET_CREATOR_TEMPLATE = 'SET_CREATOR_TEMPLATE'; +export const SET_FIELDS = 'SET_FIELDS'; //Anki ui actions export const SHOW_FIELDS = 'SHOW_FIELDS'; // Anki check actions diff --git a/src/reducers/anki-reducer.js b/src/reducers/anki-reducer.js index fc1bfb8..281d8ce 100644 --- a/src/reducers/anki-reducer.js +++ b/src/reducers/anki-reducer.js @@ -20,7 +20,7 @@ const initialState = { mainFieldIsAvailable: false, fieldList: [], ankiLanModelIsAlreadyExists: false, - ankiLanModelName: 'AnkiLan3', + ankiLanModelName: 'AnkiLan_final', noteCreator: {}, noteTemplate: [], }; diff --git a/yarn.lock b/yarn.lock index a30c1b8..72eecc2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -928,6 +928,11 @@ "@types/yargs" "^15.0.0" chalk "^3.0.0" +"@react-native-community/async-storage@^1.8.1": + version "1.8.1" + resolved "https://registry.yarnpkg.com/@react-native-community/async-storage/-/async-storage-1.8.1.tgz#c93e69dcf948667b207e409b8039b7edf199159b" + integrity sha512-MA1fTp4SB7OOtDmNAwds6jIpiwwty1NIoFboWjEWkoyWW35zIuxlhHxD4joSy21aWEzUVwvv6JJ2hSsP/HTb7A== + "@react-native-community/cli-debugger-ui@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-3.0.0.tgz#d01d08d1e5ddc1633d82c7d84d48fff07bd39416" @@ -1185,11 +1190,6 @@ abab@^2.0.0: resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - abort-controller@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" @@ -1363,19 +1363,6 @@ anymatch@^3.0.3: normalize-path "^3.0.0" picomatch "^2.0.4" -aproba@^1.0.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" - integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -2364,11 +2351,6 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - ci-info@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" @@ -2628,11 +2610,6 @@ connect@^3.6.5: parseurl "~1.3.3" utils-merge "1.0.1" -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= - content-disposition@0.5.3: version "0.5.3" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" @@ -2790,13 +2767,6 @@ debug@=3.1.0: dependencies: ms "2.0.0" -debug@^3.2.6: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== - dependencies: - ms "^2.1.1" - debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" @@ -2814,11 +2784,6 @@ decode-uri-component@^0.2.0: resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" @@ -2875,11 +2840,6 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= - denodeify@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/denodeify/-/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631" @@ -2895,11 +2855,6 @@ destroy@~1.0.4: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= -detect-libc@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= - detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" @@ -3740,13 +3695,6 @@ fs-extra@^7.0.1: jsonfile "^4.0.0" universalify "^0.1.0" -fs-minipass@^1.2.5: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" - integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== - dependencies: - minipass "^2.6.0" - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -3775,20 +3723,6 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - gensync@^1.0.0-beta.1: version "1.0.0-beta.1" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" @@ -3939,11 +3873,6 @@ has-symbols@^1.0.0, has-symbols@^1.0.1: resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= - has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -4057,7 +3986,7 @@ human-signals@^1.1.1: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== -iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: +iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -4069,13 +3998,6 @@ ieee754@^1.1.4: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== -ignore-walk@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" - integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== - dependencies: - minimatch "^3.0.4" - ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" @@ -4138,11 +4060,6 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@~1.3.0: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== - inquirer@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-1.1.3.tgz#6cd2a93f709fa50779731fd2262c698155cab2fa" @@ -5773,21 +5690,6 @@ minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== -minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" - integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minizlib@^1.2.1: - version "1.3.3" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" - integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== - dependencies: - minipass "^2.9.0" - mixin-deep@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" @@ -5796,7 +5698,7 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@^0.5.0, mkdirp@^0.5.1: +mkdirp@^0.5.1: version "0.5.3" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.3.tgz#5a514b7179259287952881e94410ec5465659f8c" integrity sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg== @@ -5922,15 +5824,6 @@ ncom@~1.0.1: dependencies: sc-formatter "~3.0.1" -needle@^2.2.1: - version "2.3.3" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.3.3.tgz#a041ad1d04a871b0ebb666f40baaf1fb47867117" - integrity sha512-EkY0GeSq87rWp1hoq/sH/wnTWgFVhYlnIkbJ0YJFfRgEFlz2RraCjBpFQ+vrEgEdp0ThfyHADmkChEhcb7PKyw== - dependencies: - debug "^3.2.6" - iconv-lite "^0.4.4" - sax "^1.2.4" - negotiator@0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" @@ -5986,30 +5879,6 @@ node-notifier@^6.0.0: shellwords "^0.1.1" which "^1.3.1" -node-pre-gyp@*: - version "0.14.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83" - integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA== - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.7" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^4.4.2" - -nopt@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" - integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== - dependencies: - abbrev "1" - osenv "^0.1.4" - normalize-package-data@^2.3.2: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -6032,27 +5901,6 @@ normalize-path@^3.0.0: resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -npm-bundled@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" - integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== - dependencies: - npm-normalize-package-bin "^1.0.1" - -npm-normalize-package-bin@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" - integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== - -npm-packlist@^1.1.6: - version "1.4.8" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" - integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== - dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" - npm-normalize-package-bin "^1.0.1" - npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -6067,16 +5915,6 @@ npm-run-path@^4.0.0: dependencies: path-key "^3.0.0" -npmlog@^4.0.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - nullthrows@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" @@ -6267,11 +6105,6 @@ ora@^3.4.0: strip-ansi "^5.2.0" wcwidth "^1.0.1" -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - os-locale@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" @@ -6300,14 +6133,6 @@ os-tmpdir@^1.0.0, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -osenv@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - p-defer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" @@ -6694,16 +6519,6 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" -rc@^1.2.7: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - react-deep-force-update@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/react-deep-force-update/-/react-deep-force-update-1.1.2.tgz#3d2ae45c2c9040cbb1772be52f8ea1ade6ca2ee1" @@ -6887,7 +6702,7 @@ read-pkg@^2.0.0: normalize-package-data "^2.3.2" path-type "^2.0.0" -readable-stream@^2.0.1, readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@~2.3.6: +readable-stream@^2.0.1, readable-stream@^2.2.2, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -7216,7 +7031,7 @@ rimraf@2.6.3: dependencies: glob "^7.1.3" -rimraf@^2.5.4, rimraf@^2.6.1: +rimraf@^2.5.4: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -7320,7 +7135,7 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" -sax@^1.2.1, sax@^1.2.4: +sax@^1.2.1: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== @@ -7489,7 +7304,7 @@ serve-static@1.14.1, serve-static@^1.13.1: parseurl "~1.3.3" send "0.17.1" -set-blocking@^2.0.0, set-blocking@~2.0.0: +set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= @@ -7840,7 +7655,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: +string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -7942,11 +7757,6 @@ strip-json-comments@^3.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= - sudo-prompt@^9.0.0: version "9.1.1" resolved "https://registry.yarnpkg.com/sudo-prompt/-/sudo-prompt-9.1.1.tgz#73853d729770392caec029e2470db9c221754db0" @@ -8011,19 +7821,6 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" -tar@^4.4.2: - version "4.4.13" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" - integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== - dependencies: - chownr "^1.1.1" - fs-minipass "^1.2.5" - minipass "^2.8.6" - minizlib "^1.2.1" - mkdirp "^0.5.0" - safe-buffer "^5.1.2" - yallist "^3.0.3" - temp@0.8.3: version "0.8.3" resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59" @@ -8533,13 +8330,6 @@ which@^2.0.1: dependencies: isexe "^2.0.0" -wide-align@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== - dependencies: - string-width "^1.0.2 || 2" - word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" @@ -8704,11 +8494,6 @@ yallist@^2.1.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= -yallist@^3.0.0, yallist@^3.0.3: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - yargs-parser@^11.1.1: version "11.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" From f8b2ff9cccf11d67c3e7db8d39e113553ebc1489 Mon Sep 17 00:00:00 2001 From: horhik Date: Tue, 24 Mar 2020 11:05:54 -0300 Subject: [PATCH 3/4] store ankiLan note creator and template in react native async storage --- android/app/build.gradle | 1 + .../java/com/ankilan/MainApplication.java | 1 + android/settings.gradle | 2 + ios/Podfile | 2 + src/actions/createAnkiLanModel.js | 6 +++ src/actions/filesystem.js | 40 +++++++++++++++++++ src/constants/anki-constants.js | 4 ++ src/reducers/anki-reducer.js | 2 +- 8 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 src/actions/filesystem.js diff --git a/android/app/build.gradle b/android/app/build.gradle index ce1e5c2..e1796ef 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,6 +179,7 @@ android { } dependencies { + implementation project(':@react-native-community_async-storage') implementation fileTree(dir: "libs", include: ["*.jar"]) implementation "com.facebook.react:react-native:+" // From node_modules diff --git a/android/app/src/main/java/com/ankilan/MainApplication.java b/android/app/src/main/java/com/ankilan/MainApplication.java index 69ee2fb..dcbf61c 100644 --- a/android/app/src/main/java/com/ankilan/MainApplication.java +++ b/android/app/src/main/java/com/ankilan/MainApplication.java @@ -4,6 +4,7 @@ import android.app.Application; import android.content.Context; import com.facebook.react.PackageList; import com.facebook.react.ReactApplication; +import com.reactnativecommunity.asyncstorage.AsyncStoragePackage; import com.facebook.react.ReactNativeHost; import com.facebook.react.ReactPackage; import com.facebook.soloader.SoLoader; diff --git a/android/settings.gradle b/android/settings.gradle index af32d65..8078645 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -1,3 +1,5 @@ rootProject.name = 'ankilan' +include ':@react-native-community_async-storage' +project(':@react-native-community_async-storage').projectDir = new File(rootProject.projectDir, '../node_modules/@react-native-community/async-storage/android') apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) include ':app' diff --git a/ios/Podfile b/ios/Podfile index 74196d8..0cc14b5 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -34,6 +34,8 @@ target 'ankilan' do pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec' pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec' + pod 'RNCAsyncStorage', :path => '../node_modules/@react-native-community/async-storage' + target 'ankilanTests' do inherit! :search_paths # Pods for testing diff --git a/src/actions/createAnkiLanModel.js b/src/actions/createAnkiLanModel.js index 5e0f5ae..4290b53 100644 --- a/src/actions/createAnkiLanModel.js +++ b/src/actions/createAnkiLanModel.js @@ -1,5 +1,6 @@ import {AnkiDroid} from 'react-native-ankidroid/dist/ankidroid'; import {setAnkiNoteCreator, setCreatorTemplate} from './anki-set-actions'; +import sendDataToLocaleStorage from './filesystem'; import { checkAnkiLanModelForExisting, getFieldList, @@ -171,6 +172,10 @@ export const createAnkiLanModel = model => async dispatch => { const selectedDeck = new AnkiDroid(settings); await dispatch(setAnkiNoteCreator(selectedDeck)); await dispatch(setCreatorTemplate(modelFields)); + sendDataToLocaleStorage( + setAnkiNoteCreator(selectedDeck), //send creator to locale storage + setCreatorTemplate(modelFields), + ); addNote(selectedDeck, valueFields, modelFields); checkAnkiLanModelForExisting(model.name, model.list); await dispatch(getModelList()); @@ -180,6 +185,7 @@ export const createAnkiLanModel = model => async dispatch => { } }; +//creator is an object what have to store in locale storage. export const addNote = (creator, words, template) => { creator.addNote(words, template); }; diff --git a/src/actions/filesystem.js b/src/actions/filesystem.js new file mode 100644 index 0000000..4833258 --- /dev/null +++ b/src/actions/filesystem.js @@ -0,0 +1,40 @@ +import AsyncStorage from '@react-native-community/async-storage'; +import { + ANKILAN_NOTE_CREATOR, + ANKILAN_NOTE_TEMPLATE, +} from '../constants/anki-constants'; +const sendDataToLocaleStorage = async (creator, template) => { + try { + await AsyncStorage.setItem(ANKILAN_NOTE_CREATOR, JSON.stringify(creator)); + await AsyncStorage.setItem(ANKILAN_NOTE_TEMPLATE, JSON.stringify(template)); + } catch (e) { + // saving error + alert('Error while syncing with filesystem'); + console.log(e); + } +}; +export default sendDataToLocaleStorage; + +export const getTemplate = async () => { + try { + const value = await AsyncStorage.getItem(ANKILAN_NOTE_TEMPLATE); + if (value !== null) { + // value previously stored + return value; + } + } catch (e) { + // error reading value + } +}; + +export const getCreator = async () => { + try { + const value = await AsyncStorage.getItem(ANKILAN_NOTE_TEMPLATE); + if (value !== null) { + // value previously stored + return value; + } + } catch (e) { + // error reading value + } +}; diff --git a/src/constants/anki-constants.js b/src/constants/anki-constants.js index a94fd19..75b2927 100644 --- a/src/constants/anki-constants.js +++ b/src/constants/anki-constants.js @@ -22,3 +22,7 @@ export const SET_FIELDS = 'SET_FIELDS'; export const SHOW_FIELDS = 'SHOW_FIELDS'; // Anki check actions export const SET_EXISTING_OF_ANKI_LAN_MODEL = 'SET_EXISTING_OF_ANKI_LAN_MODEL'; + +//rn-async-storage kesy +export const ANKILAN_NOTE_CREATOR = '@ANKILAN_NOTE_CREATOR'; +export const ANKILAN_NOTE_TEMPLATE = '@ANKILAN_NOTE_TEMPLATE'; diff --git a/src/reducers/anki-reducer.js b/src/reducers/anki-reducer.js index 281d8ce..91042ff 100644 --- a/src/reducers/anki-reducer.js +++ b/src/reducers/anki-reducer.js @@ -20,7 +20,7 @@ const initialState = { mainFieldIsAvailable: false, fieldList: [], ankiLanModelIsAlreadyExists: false, - ankiLanModelName: 'AnkiLan_final', + ankiLanModelName: 'AnkiLan_final1', noteCreator: {}, noteTemplate: [], }; From 1dda00ab6f25ae4a3e58e7d94fc7ddc2a1036150 Mon Sep 17 00:00:00 2001 From: horhik Date: Wed, 25 Mar 2020 10:02:48 -0300 Subject: [PATCH 4/4] Sending word to Anki works but only one translate available instead one OR two --- package.json | 1 + src/actions/anki-get-actions.js | 1 - src/actions/api/dictionary.js | 3 +- src/actions/api/f-json.js | 27 +++++ src/actions/createAnkiLanModel.js | 189 ++++------------------------- src/actions/filesystem.js | 18 ++- src/actions/form-actions.js | 11 ++ src/constants/anki-model-values.js | 165 +++++++++++++++++++++++++ src/reducers/anki-reducer.js | 2 +- yarn.lock | 5 + 10 files changed, 250 insertions(+), 172 deletions(-) create mode 100644 src/actions/api/f-json.js create mode 100644 src/constants/anki-model-values.js diff --git a/package.json b/package.json index 5ca7c81..ca8c2e0 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "@react-native-community/async-storage": "^1.8.1", "axios": "^0.19.2", "babel-preset-react-native": "^4.0.1", + "jsonfn": "^0.31.0", "native-base": "^2.13.8", "node-fetch": "^2.6.0", "react": "16.13.0", diff --git a/src/actions/anki-get-actions.js b/src/actions/anki-get-actions.js index 810053a..86d9343 100644 --- a/src/actions/anki-get-actions.js +++ b/src/actions/anki-get-actions.js @@ -69,7 +69,6 @@ export const getModelList = () => async dispatch => { if (err) { throw err; } - console.log(res); await dispatch(setModelList(res)); } catch (err) { console.log(err); diff --git a/src/actions/api/dictionary.js b/src/actions/api/dictionary.js index f6532f0..cfbf269 100644 --- a/src/actions/api/dictionary.js +++ b/src/actions/api/dictionary.js @@ -13,6 +13,7 @@ import { } from './urban-dictionary'; import {createDictionary} from '../dictionary/create-dictionary'; import {setFields} from '../anki-set-actions'; +import {sendWord, submit} from '../form-actions'; const getAvailableApi = (apiArray = []) => { for (const api of apiArray) { @@ -48,7 +49,7 @@ export const wordInfo = word => async dispatch => { await dispatch(setAvailableApi(api1)); const wordDictionary = await createDictionary(api1); dispatch(setDictioanry(wordDictionary)); - dispatch(setFields(wordDictionary)); + sendWord(setFields(wordDictionary)); } catch (e) { console.log(e); } diff --git a/src/actions/api/f-json.js b/src/actions/api/f-json.js new file mode 100644 index 0000000..7285e89 --- /dev/null +++ b/src/actions/api/f-json.js @@ -0,0 +1,27 @@ +// The object +// the string version of a function with /Function( +// in front and )/ at the end. +export const fJsonStingify = obj => { + return JSON.stringify(obj, function(key, value) { + if (typeof value === 'function') { + return '/Function(' + value.toString() + ')/'; + } + return value; + }); +}; +// Convert to an object using a reviver function that +// recognizes the /Function(...)/ value and converts it +// into a function via -shudder- `eval`. +export const fJsonParse = json => { + return JSON.parse(json, function(key, value) { + if ( + typeof value === 'string' && + value.startsWith('/Function(') && + value.endsWith(')/') + ) { + value = value.substring(10, value.length - 2); + return eval('(' + value + ')'); + } + return value; + }); +}; diff --git a/src/actions/createAnkiLanModel.js b/src/actions/createAnkiLanModel.js index 4290b53..99589fc 100644 --- a/src/actions/createAnkiLanModel.js +++ b/src/actions/createAnkiLanModel.js @@ -1,182 +1,35 @@ import {AnkiDroid} from 'react-native-ankidroid/dist/ankidroid'; import {setAnkiNoteCreator, setCreatorTemplate} from './anki-set-actions'; import sendDataToLocaleStorage from './filesystem'; +import setSettings, { + modelFields, + valueFields, +} from '../constants/anki-model-values'; import { checkAnkiLanModelForExisting, getFieldList, getModelList, } from './anki-get-actions'; +import JSONfn from 'jsonfn'; +import store from '../store'; export const createAnkiLanModel = model => async dispatch => { try { - const deckName = model.deck.name; - const modelName = model.name; - const dbDeckReference = 'com.anki.decks'; - const dbModelReference = 'com.anki.models'; - const tags = ['AnkiLan']; - const modelFields = [ - 'Word or sentence', - 'Part of speech 1', - 'Translation 1', - 'Definition 1', - 'Part of speech 2', - 'Translation 2', - 'Definition 2', - 'Usage example', - 'Transcription', - 'Sound', - ]; - const cardNames = ['Russian>English', 'English>Russian']; - const css = `.card { - font-family: 'Roboto', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif; - font-size: 24px; - text-align: center; - color: black; - background-color: white; - word-wrap: break-word; - } + const settings = setSettings(model); - .big { - font-size: 48px; - } - - .small { - font-size: 18px; - } - - .sound--container { - display: flex; - justify-content: center; - padding: 0px; - align-items: center; - } - - .sound { - padding-left: 10px; - } - - .transcription { - color: #1e7efc; - font-weight: bold; - } - .list{ - list-style: none; - display: flex; - flex-direction:column; - align-items:center; - padding: 0; - } - .definition{ - font-size: 20px; - font-famyli: sans-serif; - font-style: italic; - display: block; - margin: 7px ; - padding: 0 20px ; - white-space: normal; - width: 70vw; - } - .usage{ - background-color: rgba(100,100,100,0.1); - padding: 10px; - font-size: 20px; - white-space: normal; - width: 70vw; - margin: 0 auto; - border-radius: 5px; - }`; - - const questionFmt1 = ` -
{{Word or sentence}}
-
    -
  • -
    {{Part of speech 1}}
    -
  • -
  • -
    {{Part of speech 2}}
    -
  • -
-
-
{{Transcription}}
- {{Sound}} - `; - - const questionFmt2 = '
{{Translation 1}}
'; - - const questionFormat = [questionFmt1, questionFmt2]; - - const answerFmt1 = ` -
{{Word or sentence}}
-
-
{{Transcription}}
- {{Sound}} -
-
-
{{Usage example}}
-
-
    -
  • -
    -
    {{Part of speech 1}}
    -
    {{Definition 1}}
    -
    {{Translation 1}}
    -
    -
  • -
  • -
    -
    {{Part of speech 2}}
    -
    {{Definition 2}}
    -
    {{Translation 2}}
    -
    -
  • -
-
`; - const answerFormat = [answerFmt1, answerFmt1]; - - // ADDING NOTES // - - const deckProperties = { - name: deckName, - reference: dbDeckReference, - }; - const modelProperties = { - name: modelName, - reference: dbModelReference, - fields: modelFields, - tags, - cardNames, - questionFormat, - answerFormat, - css, - }; - - const valueFields = [ - 'AnkiLan', - 'Translate by typing the word', - '', - 'You can type the word in input field and get translate, sound and definition of this word', - 'Translate via sharing', - '', - 'You can mark the word in you phone and share it with AnkiLan', - 'IMAGE WILL BE HERE', - 'guide', - '', - ]; - - const settings = { - modelId: undefined, - modelProperties: modelProperties, - deckId: model.deck.id, - deckProperties: deckProperties, - }; const selectedDeck = new AnkiDroid(settings); await dispatch(setAnkiNoteCreator(selectedDeck)); await dispatch(setCreatorTemplate(modelFields)); - sendDataToLocaleStorage( - setAnkiNoteCreator(selectedDeck), //send creator to locale storage - setCreatorTemplate(modelFields), - ); + // const sd = JSON.parse(JSON.stringify(selectedDeck)); + // console.log(sd === selectedDeck); + // **************** + alert('oh shit'); addNote(selectedDeck, valueFields, modelFields); + // **************** + // sendDataToLocaleStorage( + // setAnkiNoteCreator(sd), //send creator to locale storage + // setCreatorTemplate(modelFields), + // ); checkAnkiLanModelForExisting(model.name, model.list); await dispatch(getModelList()); await dispatch(getFieldList(model.name)); @@ -186,6 +39,14 @@ export const createAnkiLanModel = model => async dispatch => { }; //creator is an object what have to store in locale storage. -export const addNote = (creator, words, template) => { +export const addNote = words => { + const template = store.getState().anki.noteTemplate; + const settings = { + deckId: '1', + modelId: '1585139654585', + }; + const creator = new AnkiDroid(settings); + creator.addNote(words, template); + alert('sucssess'); }; diff --git a/src/actions/filesystem.js b/src/actions/filesystem.js index 4833258..aad5d6d 100644 --- a/src/actions/filesystem.js +++ b/src/actions/filesystem.js @@ -3,10 +3,17 @@ import { ANKILAN_NOTE_CREATOR, ANKILAN_NOTE_TEMPLATE, } from '../constants/anki-constants'; +import JSONfn from 'jsonfn'; + const sendDataToLocaleStorage = async (creator, template) => { try { - await AsyncStorage.setItem(ANKILAN_NOTE_CREATOR, JSON.stringify(creator)); - await AsyncStorage.setItem(ANKILAN_NOTE_TEMPLATE, JSON.stringify(template)); + await AsyncStorage.clear(); + + await AsyncStorage.setItem(ANKILAN_NOTE_CREATOR, JSONfn.stringify(creator)); + await AsyncStorage.setItem( + ANKILAN_NOTE_TEMPLATE, + JSONfn.stringify(template), + ); } catch (e) { // saving error alert('Error while syncing with filesystem'); @@ -18,9 +25,10 @@ export default sendDataToLocaleStorage; export const getTemplate = async () => { try { const value = await AsyncStorage.getItem(ANKILAN_NOTE_TEMPLATE); + console.log(value); if (value !== null) { // value previously stored - return value; + return JSONfn.parse(value); } } catch (e) { // error reading value @@ -29,10 +37,10 @@ export const getTemplate = async () => { export const getCreator = async () => { try { - const value = await AsyncStorage.getItem(ANKILAN_NOTE_TEMPLATE); + const value = await AsyncStorage.getItem(ANKILAN_NOTE_CREATOR); if (value !== null) { // value previously stored - return value; + return JSONfn.parse(value); } } catch (e) { // error reading value diff --git a/src/actions/form-actions.js b/src/actions/form-actions.js index 6ad0143..9f6bf0a 100644 --- a/src/actions/form-actions.js +++ b/src/actions/form-actions.js @@ -1 +1,12 @@ +import {getCreator, getTemplate} from './filesystem'; +import {addNote} from './createAnkiLanModel'; + export const submit = () => ({}); +export const sendWord = async fields => { + // const creator = await getCreator(); + // const template = JSON.parse(await getTemplate()).payload; + // console.log(creator); + // console.log(template); + console.log(fields); + addNote(fields.payload); +}; diff --git a/src/constants/anki-model-values.js b/src/constants/anki-model-values.js new file mode 100644 index 0000000..e145dca --- /dev/null +++ b/src/constants/anki-model-values.js @@ -0,0 +1,165 @@ +export const modelFields = [ + 'Word or sentence', + 'Part of speech 1', + 'Translation 1', + 'Definition 1', + 'Part of speech 2', + 'Translation 2', + 'Definition 2', + 'Usage example', + 'Transcription', + 'Sound', +]; + +export const valueFields = [ + 'AnkiLan', + 'Translate by typing the word', + '', + 'You can type the word in input field and get translate, sound and definition of this word', + 'Translate via sharing', + '', + 'You can mark the word in you phone and share it with AnkiLan', + 'IMAGE WILL BE HERE', + 'guide', + '', +]; + +const setSettings = model => { + const deckName = model.deck.name; + const modelName = model.name; + const dbDeckReference = 'com.anki.decks'; + const dbModelReference = 'com.anki.models'; + const tags = ['AnkiLan']; + + const cardNames = ['Russian>English', 'English>Russian']; + const css = `.card { + font-family: 'Roboto', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif; + font-size: 24px; + text-align: center; + color: black; + background-color: white; + word-wrap: break-word; + } + + .big { + font-size: 48px; + } + + .small { + font-size: 18px; + } + + .sound--container { + display: flex; + justify-content: center; + padding: 0px; + align-items: center; + } + + .sound { + padding-left: 10px; + } + + .transcription { + color: #1e7efc; + font-weight: bold; + } + .list{ + list-style: none; + display: flex; + flex-direction:column; + align-items:center; + padding: 0; + } + .definition{ + font-size: 20px; + font-famyli: sans-serif; + font-style: italic; + display: block; + margin: 7px ; + padding: 0 20px ; + white-space: normal; + width: 70vw; + } + .usage{ + background-color: rgba(100,100,100,0.1); + padding: 10px; + font-size: 20px; + white-space: normal; + width: 70vw; + margin: 0 auto; + border-radius: 5px; + }`; + + const questionFmt1 = ` +
{{Word or sentence}}
+
    +
  • +
    {{Part of speech 1}}
    +
  • +
  • +
    {{Part of speech 2}}
    +
  • +
+
+
{{Transcription}}
+ {{Sound}} + `; + + const questionFmt2 = '
{{Translation 1}}
'; + + const questionFormat = [questionFmt1, questionFmt2]; + + const answerFmt1 = ` +
{{Word or sentence}}
+
+
{{Transcription}}
+ {{Sound}} +
+
+
{{Usage example}}
+
+
    +
  • +
    +
    {{Part of speech 1}}
    +
    {{Definition 1}}
    +
    {{Translation 1}}
    +
    +
  • +
  • +
    +
    {{Part of speech 2}}
    +
    {{Definition 2}}
    +
    {{Translation 2}}
    +
    +
  • +
+
`; + const answerFormat = [answerFmt1, answerFmt1]; + + // ADDING NOTES // + + const deckProperties = { + name: deckName, + reference: dbDeckReference, + }; + const modelProperties = { + name: modelName, + reference: dbModelReference, + fields: modelFields, + tags, + cardNames, + questionFormat, + answerFormat, + css, + }; + + return { + modelId: undefined, + modelProperties: modelProperties, + deckId: model.deck.id, + deckProperties: deckProperties, + }; +}; +export default setSettings; diff --git a/src/reducers/anki-reducer.js b/src/reducers/anki-reducer.js index 91042ff..5c4d4ee 100644 --- a/src/reducers/anki-reducer.js +++ b/src/reducers/anki-reducer.js @@ -20,7 +20,7 @@ const initialState = { mainFieldIsAvailable: false, fieldList: [], ankiLanModelIsAlreadyExists: false, - ankiLanModelName: 'AnkiLan_final1', + ankiLanModelName: '1AnkiLan1111', noteCreator: {}, noteTemplate: [], }; diff --git a/yarn.lock b/yarn.lock index 72eecc2..0bf8f72 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5026,6 +5026,11 @@ jsonfile@^4.0.0: optionalDependencies: graceful-fs "^4.1.6" +jsonfn@^0.31.0: + version "0.31.0" + resolved "https://registry.yarnpkg.com/jsonfn/-/jsonfn-0.31.0.tgz#8cd09ee376d46df75c2c0de3c548a95dbb81dc8b" + integrity sha1-jNCe43bUbfdcLA3jxUipXbuB3Is= + jsonify@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"