create addNote func
This commit is contained in:
parent
7471e58aa9
commit
f6e9cc6870
|
@ -91,17 +91,22 @@ const setExistingOfAnkiLanModel = existing => {
|
||||||
payload: existing,
|
payload: existing,
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
export const checkAnkiLanModelForExisting = name => async dispatch => {
|
export const checkAnkiLanModelForExisting = (
|
||||||
|
name,
|
||||||
|
modelList,
|
||||||
|
) => async dispatch => {
|
||||||
try {
|
try {
|
||||||
const [err, res] = await AnkiDroid.getFieldList(name);
|
for (let model of modelList) {
|
||||||
if (err) {
|
if (model.name === name) {
|
||||||
throw err;
|
console.log('founded');
|
||||||
|
await dispatch(setExistingOfAnkiLanModel(true));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
console.log(res);
|
const err = 'Model not found. Displaying message...';
|
||||||
await dispatch(setExistingOfAnkiLanModel(true));
|
throw err;
|
||||||
return res;
|
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
console.log(err);
|
||||||
await dispatch(setExistingOfAnkiLanModel(false));
|
await dispatch(setExistingOfAnkiLanModel(false));
|
||||||
await createAnkiLanModel(id);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,7 +1,21 @@
|
||||||
import {AnkiDroid} from 'react-native-ankidroid/dist/ankidroid';
|
import {AnkiDroid} from 'react-native-ankidroid/dist/ankidroid';
|
||||||
import {SET_DECK} from '../constants/anki-constants';
|
import {
|
||||||
|
SET_ANKI_NOTE_CREATOR,
|
||||||
|
SET_CREATOR_TEMPLATE,
|
||||||
|
SET_DECK,
|
||||||
|
} from '../constants/anki-constants';
|
||||||
|
|
||||||
export const selectDeck = id => ({
|
export const selectDeck = id => ({
|
||||||
type: SET_DECK,
|
type: SET_DECK,
|
||||||
payload: id,
|
payload: id,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
export const setAnkiNoteCreator = creator => ({
|
||||||
|
type: SET_ANKI_NOTE_CREATOR,
|
||||||
|
payload: creator,
|
||||||
|
});
|
||||||
|
|
||||||
|
export const setCreatorTemplate = template => ({
|
||||||
|
type: SET_CREATOR_TEMPLATE,
|
||||||
|
payload: template,
|
||||||
|
});
|
||||||
|
|
|
@ -1,125 +1,14 @@
|
||||||
import {AnkiDroid} from 'react-native-ankidroid/dist/ankidroid';
|
import {AnkiDroid} from 'react-native-ankidroid/dist/ankidroid';
|
||||||
|
import {setAnkiNoteCreator, setCreatorTemplate} from './anki-set-actions';
|
||||||
|
import {checkAnkiLanModelForExisting, getModelList} from './anki-get-actions';
|
||||||
|
|
||||||
export const createAnkiLanModel = model => async dispatch => {
|
export const createAnkiLanModel = model => async dispatch => {
|
||||||
try {
|
try {
|
||||||
/*
|
|
||||||
(async function() {
|
|
||||||
const [err, res] = await AnkiDroid.getSelectedDeckName();
|
|
||||||
console.log(model.deck);
|
|
||||||
console.log(typeof res);
|
|
||||||
})();
|
|
||||||
try {
|
|
||||||
const modelFields = [
|
|
||||||
'Word or sentence',
|
|
||||||
'Part of speech 1',
|
|
||||||
'Translate 1',
|
|
||||||
'Definition 1',
|
|
||||||
'Part of speech 2',
|
|
||||||
'Translate 2',
|
|
||||||
'Definition 2',
|
|
||||||
'Example',
|
|
||||||
'Transcription',
|
|
||||||
'Sound',
|
|
||||||
];
|
|
||||||
|
|
||||||
const css = `<style>
|
|
||||||
.card {
|
|
||||||
display: flex;
|
|
||||||
justify-content:center;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
body {text-align: center;}
|
|
||||||
ul{
|
|
||||||
padding:0;
|
|
||||||
}
|
|
||||||
.span: {
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-around;
|
|
||||||
|
|
||||||
}</style>`;
|
|
||||||
|
|
||||||
const answerFormat = `
|
|
||||||
{{FrontSide}}
|
|
||||||
|
|
||||||
<hr id=answer>
|
|
||||||
|
|
||||||
<ol>
|
|
||||||
<li>
|
|
||||||
<div style='font-family: Arial; font-size: 20px;'>{{Translate 1}}</div> Qq
|
|
||||||
<div style='font-family: Arial; font-size: 20px;'>{{Definition 1}}</div>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<div style='font-family: Arial; font-size: 20px;'>{{Translate 2}}</div>
|
|
||||||
<div style='font-family: Arial; font-size: 20px;'>{{Definition 2}}</div>
|
|
||||||
</li>
|
|
||||||
</ol>
|
|
||||||
<p style="">{Example}}</p>\`;
|
|
||||||
<span style="">{{Sound}}</span>
|
|
||||||
`;
|
|
||||||
const questionFormat = `
|
|
||||||
<span style="font-size: 40px; 07f">{{Word or sentence}}</span>
|
|
||||||
<br>
|
|
||||||
<div style='font-family: Arial; font-size: 20px;color: blue'>{{Transcription}}</div>
|
|
||||||
<br>
|
|
||||||
<ol>
|
|
||||||
<li>
|
|
||||||
<div style='font-family: Arial; font-size: 20px;'>{{Part of speech 1}}</div>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<div style='font-family: Arial; font-size: 20px;'>{{Part of speech 2}}</div>
|
|
||||||
</li>
|
|
||||||
</ol>
|
|
||||||
<span style="">{{Sound}}</span>`;
|
|
||||||
const modelProperties = {
|
|
||||||
name: model.name,
|
|
||||||
reference: 'com.ankilan.models',
|
|
||||||
fields: modelFields,
|
|
||||||
tags: [],
|
|
||||||
cardNames: ['Rus->En', 'En->Rus'],
|
|
||||||
questionFormat,
|
|
||||||
answerFormat,
|
|
||||||
css,
|
|
||||||
};
|
|
||||||
const settings = {
|
|
||||||
modelId: model.id,
|
|
||||||
modelProperties,
|
|
||||||
deckId: model.deck.id,
|
|
||||||
};
|
|
||||||
new AnkiDroid(settings).addNote(
|
|
||||||
[
|
|
||||||
'Word or sentence',
|
|
||||||
'Part of speech 1',
|
|
||||||
'Translate 1',
|
|
||||||
'Definition 1',
|
|
||||||
'Part of speech 2',
|
|
||||||
'Translate 2',
|
|
||||||
'Definition 2',
|
|
||||||
'Example',
|
|
||||||
'Transcription',
|
|
||||||
'Sound',
|
|
||||||
],
|
|
||||||
modelFields,
|
|
||||||
);
|
|
||||||
} catch (err) {
|
|
||||||
console.log(err);
|
|
||||||
}*/
|
|
||||||
|
|
||||||
///////////////////////////////////
|
|
||||||
// SETTING UP THE DECK AND MODEL //
|
|
||||||
///////////////////////////////////
|
|
||||||
|
|
||||||
// Name of deck which will be created in AnkiDroid
|
|
||||||
const deckName = model.deck.name;
|
const deckName = model.deck.name;
|
||||||
// Name of model which will be created in AnkiDroid (can be any string)
|
const modelName = model.name;
|
||||||
const modelName = model.name + '_test';
|
|
||||||
// Used to save a reference to this deck in the SharedPreferences (can be any string)
|
|
||||||
const dbDeckReference = 'com.anki.decks';
|
const dbDeckReference = 'com.anki.decks';
|
||||||
// Used to save a reference to this model in the SharedPreferences (can be any string)
|
|
||||||
const dbModelReference = 'com.anki.models';
|
const dbModelReference = 'com.anki.models';
|
||||||
// Optional space separated list of tags to add to every note
|
|
||||||
const tags = ['AnkiLan'];
|
const tags = ['AnkiLan'];
|
||||||
// List of field names that will be used in AnkiDroid model
|
|
||||||
const modelFields = [
|
const modelFields = [
|
||||||
'Word or sentence',
|
'Word or sentence',
|
||||||
'Part of speech 1',
|
'Part of speech 1',
|
||||||
|
@ -132,9 +21,7 @@ export const createAnkiLanModel = model => async dispatch => {
|
||||||
'Transcription',
|
'Transcription',
|
||||||
'Sound',
|
'Sound',
|
||||||
];
|
];
|
||||||
// List of card names that will be used in AnkiDroid (one for each direction of learning)
|
|
||||||
const cardNames = ['Russian>English', 'English>Russian'];
|
const cardNames = ['Russian>English', 'English>Russian'];
|
||||||
// CSS to share between all the cards (optional).
|
|
||||||
const css = `.card {
|
const css = `.card {
|
||||||
font-family: 'Roboto', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif;
|
font-family: 'Roboto', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif;
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
|
@ -167,33 +54,33 @@ export const createAnkiLanModel = model => async dispatch => {
|
||||||
color: #1e7efc;
|
color: #1e7efc;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
.list{
|
.list{
|
||||||
list-style: none;
|
list-style: none;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction:column;
|
flex-direction:column;
|
||||||
align-items:center;
|
align-items:center;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
.definition{
|
.definition{
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
font-famyli: sans-serif;
|
font-famyli: sans-serif;
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
display: block;
|
display: block;
|
||||||
margin: 7px ;
|
margin: 7px ;
|
||||||
padding: 0 20px ;
|
padding: 0 20px ;
|
||||||
white-space: normal;
|
white-space: normal;
|
||||||
width: 70vw;
|
width: 70vw;
|
||||||
}
|
}
|
||||||
.usage{
|
.usage{
|
||||||
background-color: rgba(100,100,100,0.1);
|
background-color: rgba(100,100,100,0.1);
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
white-space: normal;
|
white-space: normal;
|
||||||
width: 70vw;
|
width: 70vw;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
}`;
|
}`;
|
||||||
// Template for the question of each card
|
|
||||||
const questionFmt1 = `
|
const questionFmt1 = `
|
||||||
<div class="big">{{Word or sentence}}</div>
|
<div class="big">{{Word or sentence}}</div>
|
||||||
<ul class="list">
|
<ul class="list">
|
||||||
|
@ -208,21 +95,19 @@ border-radius: 5px;
|
||||||
<div class="transcription">{{Transcription}}</div>
|
<div class="transcription">{{Transcription}}</div>
|
||||||
<span class="sound">{{Sound}}</span>
|
<span class="sound">{{Sound}}</span>
|
||||||
`;
|
`;
|
||||||
|
|
||||||
const questionFmt2 = '<div class="big">{{Translation 1}}</div>';
|
const questionFmt2 = '<div class="big">{{Translation 1}}</div>';
|
||||||
|
|
||||||
const questionFormat = [questionFmt1, questionFmt2];
|
const questionFormat = [questionFmt1, questionFmt2];
|
||||||
// Template for the answer (this example is identical for both sides)
|
|
||||||
const answerFmt1 = `
|
const answerFmt1 = `
|
||||||
<div class="big">{{Word or sentence}}</div>
|
<div class="big">{{Word or sentence}}</div>
|
||||||
<div class="sound--container">
|
<div class="sound--container">
|
||||||
<div class="transcription">{{Transcription}}</div>
|
<div class="transcription">{{Transcription}}</div>
|
||||||
<span class="sound">{{Sound}}</span>
|
<span class="sound">{{Sound}}</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<div class="usage">{{Usage example}}</div>
|
<div class="usage">{{Usage example}}</div>
|
||||||
|
|
||||||
<hr />
|
<hr />
|
||||||
<ul class="list">
|
<ul class="list">
|
||||||
<li>
|
<li>
|
||||||
|
@ -243,9 +128,7 @@ border-radius: 5px;
|
||||||
</div>`;
|
</div>`;
|
||||||
const answerFormat = [answerFmt1, answerFmt1];
|
const answerFormat = [answerFmt1, answerFmt1];
|
||||||
|
|
||||||
//////////////////
|
|
||||||
// ADDING NOTES //
|
// ADDING NOTES //
|
||||||
//////////////////
|
|
||||||
|
|
||||||
const deckProperties = {
|
const deckProperties = {
|
||||||
name: deckName,
|
name: deckName,
|
||||||
|
@ -263,16 +146,16 @@ border-radius: 5px;
|
||||||
};
|
};
|
||||||
|
|
||||||
const valueFields = [
|
const valueFields = [
|
||||||
'Word or sentence',
|
'AnkiLan',
|
||||||
'Part of speech 1',
|
'Translate by typing the word',
|
||||||
'Translation 1',
|
'',
|
||||||
'Definition 1',
|
'You can type the word in input field and get translate, sound and definition of this word',
|
||||||
'Part of speech 2',
|
'Translate via sharing',
|
||||||
'Translation 2',
|
'',
|
||||||
'Definition 2',
|
'You can mark the word in you phone and share it with AnkiLan',
|
||||||
'Usage example',
|
'IMAGE WILL BE HERE',
|
||||||
'Transcription',
|
'guide',
|
||||||
'Sound',
|
'',
|
||||||
];
|
];
|
||||||
|
|
||||||
const settings = {
|
const settings = {
|
||||||
|
@ -281,12 +164,17 @@ border-radius: 5px;
|
||||||
deckId: model.deck.id,
|
deckId: model.deck.id,
|
||||||
deckProperties: deckProperties,
|
deckProperties: deckProperties,
|
||||||
};
|
};
|
||||||
|
|
||||||
const selectedDeck = new AnkiDroid(settings);
|
const selectedDeck = new AnkiDroid(settings);
|
||||||
|
await dispatch(setAnkiNoteCreator(selectedDeck));
|
||||||
selectedDeck.addNote(valueFields, modelFields);
|
await dispatch(setCreatorTemplate(modelFields));
|
||||||
// returns a promise that returns the added note ID
|
addNote(selectedDeck, valueFields, modelFields);
|
||||||
|
checkAnkiLanModelForExisting(model.name, model.list);
|
||||||
|
await dispatch(getModelList());
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log(err);
|
console.log(err);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const addNote = (creator, words, template) => {
|
||||||
|
creator.addNote(words, template);
|
||||||
|
};
|
||||||
|
|
|
@ -4,7 +4,7 @@ import {ScrollView} from 'react-native'
|
||||||
import Permissions from './permissions';
|
import Permissions from './permissions';
|
||||||
import {connect, Provider} from 'react-redux';
|
import {connect, Provider} from 'react-redux';
|
||||||
import DeckPicker from './view/deck-picker';
|
import DeckPicker from './view/deck-picker';
|
||||||
import AddWordForm from './add-word-form';
|
import AddWordForm from './anki-form';
|
||||||
import AnkiTemplate from './view/add-main-template';
|
import AnkiTemplate from './view/add-main-template';
|
||||||
import {Grid, Row} from 'native-base';
|
import {Grid, Row} from 'native-base';
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,15 @@
|
||||||
import React from 'react'
|
import React , {useEffect}from 'react'
|
||||||
import {connect} from 'react-redux'
|
import {connect} from 'react-redux'
|
||||||
import DeckPicker from './view/deck-picker';
|
import DeckPicker from './view/deck-picker';
|
||||||
import{Form, Container} from 'native-base';
|
import{Form, Container} from 'native-base';
|
||||||
import AnkiTemplate from './view/add-main-template';
|
import AnkiTemplate from './view/add-main-template';
|
||||||
import {ScrollView} from 'react-native';
|
import {ScrollView} from 'react-native';
|
||||||
|
import {checkAnkiLanModelForExisting} from '../actions/anki-get-actions';
|
||||||
|
|
||||||
const AddWordForm = props => {
|
const AnkiForm = props => {
|
||||||
|
useEffect(() => {
|
||||||
|
props.checkAnkiLanModelForExisting(props.modelName, props.modelList)
|
||||||
|
})
|
||||||
return (
|
return (
|
||||||
<Container style={{padding: 20}}>
|
<Container style={{padding: 20}}>
|
||||||
<DeckPicker/>
|
<DeckPicker/>
|
||||||
|
@ -20,5 +24,10 @@ const AddWordForm = props => {
|
||||||
}
|
}
|
||||||
|
|
||||||
export default connect(state => ({
|
export default connect(state => ({
|
||||||
ankiLanModelExists: state.anki.ankiLanModelIsAlreadyExists
|
ankiLanModelExists: state.anki.ankiLanModelIsAlreadyExists,
|
||||||
}))(AddWordForm)
|
modelName: state.anki.ankiLanModelName,
|
||||||
|
modelList: state.anki.modelList,
|
||||||
|
creator: state.anki.noteCreator
|
||||||
|
}), {
|
||||||
|
checkAnkiLanModelForExisting
|
||||||
|
})(AnkiForm)
|
|
@ -1,18 +1,15 @@
|
||||||
import React, {useEffect} from 'react'
|
import React from 'react'
|
||||||
import {Text, Button,Grid, Container} from 'native-base';
|
import {Text, Button,Grid, Container} from 'native-base';
|
||||||
import {checkAnkiLanModelForExisting} from '../../actions/anki-get-actions';
|
|
||||||
import {connect} from 'react-redux'
|
import {connect} from 'react-redux'
|
||||||
import {createAnkiLanModel} from '../../actions/createAnkiLanModel';
|
import {createAnkiLanModel} from '../../actions/createAnkiLanModel';
|
||||||
|
|
||||||
const AnkiTemplate = props => {
|
const AnkiTemplate = props => {
|
||||||
useEffect(() => {
|
|
||||||
props.checkAnkiLanModelForExisting(props.modelName)
|
|
||||||
}, [])
|
|
||||||
return(
|
return(
|
||||||
<Grid style={{display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}>
|
<Grid style={{display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}>
|
||||||
<Text>You have no AnkiLan card template</Text>
|
<Text>You have no AnkiLan card template</Text>
|
||||||
<Button onPress={() => props.createAnkiLanModel({
|
<Button onPress={() => props.createAnkiLanModel({
|
||||||
name: props.modelName,
|
name: props.modelName,
|
||||||
|
list: props.modelList,
|
||||||
...props.currentDeck
|
...props.currentDeck
|
||||||
})}><Text>Create</Text></Button>
|
})}><Text>Create</Text></Button>
|
||||||
|
|
||||||
|
@ -23,8 +20,8 @@ const AnkiTemplate = props => {
|
||||||
|
|
||||||
export default connect(state => ({
|
export default connect(state => ({
|
||||||
modelName: state.anki.ankiLanModelName,
|
modelName: state.anki.ankiLanModelName,
|
||||||
currentDeck: state.anki.selectedDeck
|
currentDeck: state.anki.selectedDeck,
|
||||||
|
modelList: state.anki.modelList,
|
||||||
}), {
|
}), {
|
||||||
createAnkiLanModel,
|
createAnkiLanModel,
|
||||||
checkAnkiLanModelForExisting
|
|
||||||
})(AnkiTemplate)
|
})(AnkiTemplate)
|
||||||
|
|
|
@ -24,7 +24,7 @@ const DeckPicker = props => {
|
||||||
|
|
||||||
export default connect(state => ({
|
export default connect(state => ({
|
||||||
decks: state.anki.deckList,
|
decks: state.anki.deckList,
|
||||||
selectedDeck: state.anki.selectedDeck
|
selectedDeck: state.anki.selectedDeck,
|
||||||
}),{
|
}),{
|
||||||
getDeckList,
|
getDeckList,
|
||||||
selectDeck,
|
selectDeck,
|
||||||
|
|
|
@ -14,6 +14,8 @@ export const SET_DECK = 'SET_DECK';
|
||||||
export const SET_WORD_DEFINITION = 'SET_DEFINITION';
|
export const SET_WORD_DEFINITION = 'SET_DEFINITION';
|
||||||
export const SET_WORD_SOUND = 'SET_WORD_SOUND';
|
export const SET_WORD_SOUND = 'SET_WORD_SOUND';
|
||||||
export const SET_WORD_TRANSLATE = 'SET_WORD_TRANSLATE';
|
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';
|
||||||
//Anki ui actions
|
//Anki ui actions
|
||||||
export const SHOW_FIELDS = 'SHOW_FIELDS';
|
export const SHOW_FIELDS = 'SHOW_FIELDS';
|
||||||
// Anki check actions
|
// Anki check actions
|
||||||
|
|
|
@ -2,6 +2,8 @@ import {
|
||||||
GET_DECK_LIST,
|
GET_DECK_LIST,
|
||||||
GET_MODEL_LIST,
|
GET_MODEL_LIST,
|
||||||
REQUEST_PERMISSIONS,
|
REQUEST_PERMISSIONS,
|
||||||
|
SET_ANKI_NOTE_CREATOR,
|
||||||
|
SET_CREATOR_TEMPLATE,
|
||||||
SET_DECK,
|
SET_DECK,
|
||||||
SET_EXISTING_OF_ANKI_LAN_MODEL,
|
SET_EXISTING_OF_ANKI_LAN_MODEL,
|
||||||
} from '../constants/anki-constants';
|
} from '../constants/anki-constants';
|
||||||
|
@ -18,7 +20,9 @@ const initialState = {
|
||||||
mainFieldIsAvailable: false,
|
mainFieldIsAvailable: false,
|
||||||
fieldList: [],
|
fieldList: [],
|
||||||
ankiLanModelIsAlreadyExists: false,
|
ankiLanModelIsAlreadyExists: false,
|
||||||
ankiLanModelName: 'AnkiLan_test',
|
ankiLanModelName: 'AnkiLan2',
|
||||||
|
noteCreator: {},
|
||||||
|
noteTemplate: [],
|
||||||
};
|
};
|
||||||
|
|
||||||
const ankiReducer = (state = initialState, action) => {
|
const ankiReducer = (state = initialState, action) => {
|
||||||
|
@ -37,6 +41,10 @@ const ankiReducer = (state = initialState, action) => {
|
||||||
};
|
};
|
||||||
case SET_EXISTING_OF_ANKI_LAN_MODEL:
|
case SET_EXISTING_OF_ANKI_LAN_MODEL:
|
||||||
return {...state, ankiLanModelIsAlreadyExists: action.payload};
|
return {...state, ankiLanModelIsAlreadyExists: action.payload};
|
||||||
|
case SET_CREATOR_TEMPLATE:
|
||||||
|
return {...state, noteTemplate: action.payload};
|
||||||
|
case SET_ANKI_NOTE_CREATOR:
|
||||||
|
return {...state, noteCreator: action.payload};
|
||||||
default:
|
default:
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue