add some bugs

but now, field editor can send results to anki
This commit is contained in:
horhik 2020-04-11 19:49:25 +03:00
parent c5c00cf574
commit f906787cc2
28 changed files with 1267 additions and 810 deletions

View File

@ -2,10 +2,13 @@ import React, {useEffect} from 'react';
import {Provider} from 'react-redux';
import StartScreen from './src/components/add-anklan-model';
import store from './src/store';
import {ScrollView} from 'react-native';
const App = props => {
return (
<Provider store={store}>
<StartScreen />
<ScrollView keyboardShouldPersistTaps={'handled'}>
<StartScreen />
</ScrollView>
</Provider>
);
};

View File

@ -16,43 +16,6 @@
2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
2DCD954D1E0B4F2C00145EB5 /* ankilanTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* ankilanTests.m */; };
<<<<<<< HEAD
77265BEFC4404E238D395E2C /* AntDesign.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 0E5D5065D768435EA998104A /* AntDesign.ttf */; };
B68FA0D61C384C9AB44BD3BE /* Entypo.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 40287932B0184615A4E3081F /* Entypo.ttf */; };
B9388BD77CA54A9298B4A98F /* EvilIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 5D95DE62BE4C4C0BAACB9571 /* EvilIcons.ttf */; };
1B72CDB36FA2454E80F9BF84 /* Feather.ttf in Resources */ = {isa = PBXBuildFile; fileRef = CD46594AEDA34747A782AC3D /* Feather.ttf */; };
643CFD36A53F45D29F6DB911 /* FontAwesome.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 8E1A1F7D4CA34FE98CFEC237 /* FontAwesome.ttf */; };
9D350D17269E4421814FD226 /* FontAwesome5_Brands.ttf in Resources */ = {isa = PBXBuildFile; fileRef = ED6890DD84FE4EA99296229D /* FontAwesome5_Brands.ttf */; };
A5FDE794DF894F9C80EF1DDB /* FontAwesome5_Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = C0E9531BEA02454CBD0C6FBD /* FontAwesome5_Regular.ttf */; };
6B0D1C3DEF6F40E49051ADFD /* FontAwesome5_Solid.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 12BD84FA23A5492B82A5F9D1 /* FontAwesome5_Solid.ttf */; };
749C4579CA3D4FA8B62D6CD0 /* Fontisto.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 541ACBC4238A4C9FA790279C /* Fontisto.ttf */; };
DB083F96D4E54520944CC6B8 /* Foundation.ttf in Resources */ = {isa = PBXBuildFile; fileRef = D952F276655F4116AE32EA9D /* Foundation.ttf */; };
15684583EFF44F93B3CBA8C6 /* Ionicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = ADEA2AF0C20D43F49417482C /* Ionicons.ttf */; };
4E47773AA7F747549D68E340 /* MaterialCommunityIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 2B694C9DF6484220B8BDBC4C /* MaterialCommunityIcons.ttf */; };
848391DEF1534137AD02437A /* MaterialIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = A55AE72F84B64F0AA5D7948E /* MaterialIcons.ttf */; };
C2DFC8C9364D4CFC86D9CAF7 /* Octicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 0D898720909B40DDAE2DD962 /* Octicons.ttf */; };
82292E3F27F245E78AEA3976 /* SimpleLineIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7CAF012D54D74938AC6582E8 /* SimpleLineIcons.ttf */; };
075D7804361B4568A80C1C8B /* Zocial.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BBB7B364E4EB41B0B72D85E2 /* Zocial.ttf */; };
5E067ED19FD4497D9DDFED6E /* AntDesign.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 6618AA0F4ACA4FB592D4B65E /* AntDesign.ttf */; };
4525C331CA074AA8821A0A74 /* Entypo.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 4E741E0B0415492B84AA6338 /* Entypo.ttf */; };
EBC1408C0D5B468C89351BF9 /* EvilIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = C3D87EB19C1441E48F068E76 /* EvilIcons.ttf */; };
7672B539400347B38EBC5BC6 /* Feather.ttf in Resources */ = {isa = PBXBuildFile; fileRef = B71E3585F57A439BA19EC58A /* Feather.ttf */; };
B55BA6C3EDA3411F88377AC6 /* FontAwesome.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 6C85CD26B68143D88F3B0D91 /* FontAwesome.ttf */; };
C8D284A938CD4AAA95C273CF /* FontAwesome5_Brands.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 0A6AD8EC583344DC8F8C4F7D /* FontAwesome5_Brands.ttf */; };
6749E7E250894B32B725E396 /* FontAwesome5_Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 59DEB958643A4EAE95590608 /* FontAwesome5_Regular.ttf */; };
62C892EF8F754F96846B3DA1 /* FontAwesome5_Solid.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 6F623DCAC23248E0881A882F /* FontAwesome5_Solid.ttf */; };
A1018DA50A8243779C30614F /* Fontisto.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 59A3C11F9A0F4037B19FA8E0 /* Fontisto.ttf */; };
99117C77F940481396CA4AC3 /* Foundation.ttf in Resources */ = {isa = PBXBuildFile; fileRef = CD615A449A13412DB86EDE23 /* Foundation.ttf */; };
56AB61224A8D4D299928EB52 /* Ionicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = EB272CDEE78846EAB3705E3D /* Ionicons.ttf */; };
7B694A83F3344A2691FD06C0 /* MaterialCommunityIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 404E33F7BD1547C288E43849 /* MaterialCommunityIcons.ttf */; };
A6C35BE496C74106A865E29F /* MaterialIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = B6481E8C83BA4DC8A3CF1CE1 /* MaterialIcons.ttf */; };
BFA62F01D55E49F082484880 /* Octicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 47F25353830F49929447886C /* Octicons.ttf */; };
E82E1B56EE1C419CA2EF9BAA /* Roboto_medium.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7E585FBA2C3448E0980D844C /* Roboto_medium.ttf */; };
55C9C4FD91C94DDEA26F1FFE /* Roboto.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 2631E54546774FBE8190B056 /* Roboto.ttf */; };
ADAC158BE8B441D685F551CC /* rubicon-icon-font.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 2762280877E6481791F752C8 /* rubicon-icon-font.ttf */; };
4DB67A84E7FF44FF8100CE68 /* SimpleLineIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = F15E1AD962AC475ABEBE9A1F /* SimpleLineIcons.ttf */; };
B71508403B384BFEB49A7215 /* Zocial.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 091E38CCBA674D09BC6AD2DE /* Zocial.ttf */; };
=======
4D52FDE523E84B2791C3D67D /* AntDesign.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3000D2B3834E4C66A28382F8 /* AntDesign.ttf */; };
B90493FFE9264DF5B6CC7C44 /* Entypo.ttf in Resources */ = {isa = PBXBuildFile; fileRef = ADE75B0AF3E84621B5059B43 /* Entypo.ttf */; };
31DBC812F4DE446B9D3DC7B1 /* EvilIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7AD629F9A4B44BFE9AFEA2E9 /* EvilIcons.ttf */; };
@ -69,7 +32,25 @@
60D08C8669D9491891F0EAE0 /* Octicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 006C0665080F4DB581A45597 /* Octicons.ttf */; };
157D60FEAF7C49948291342D /* SimpleLineIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 00E332BD0E6B4F69AD2BFB66 /* SimpleLineIcons.ttf */; };
31C2D4A00BF24B9989303435 /* Zocial.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 16C65B2FFA244990A98EED99 /* Zocial.ttf */; };
>>>>>>> fixed
8D8BE89F91D74671AFB64D2C /* AntDesign.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 815103740257422193FC7AE2 /* AntDesign.ttf */; };
4A17FB4653CC440AB4AB4727 /* Entypo.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 65310CCA118F4BDCAA2703C7 /* Entypo.ttf */; };
4B80D071E9CE49CCBE5DEA8C /* EvilIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BDF8E1DB2454481E9F053ED8 /* EvilIcons.ttf */; };
7CD9E571FBE84C439B621424 /* Feather.ttf in Resources */ = {isa = PBXBuildFile; fileRef = CFA238B086774C5182CF9E74 /* Feather.ttf */; };
91FB71DDF4AD4E539A0EA9AC /* FontAwesome.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 89FF5EEC421940BD9B87E05B /* FontAwesome.ttf */; };
672335B5103340FCA6134245 /* FontAwesome5_Brands.ttf in Resources */ = {isa = PBXBuildFile; fileRef = B0A9A880302045279E1AC169 /* FontAwesome5_Brands.ttf */; };
2BA06EF0BEC14ECAB6E0EB75 /* FontAwesome5_Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = CE20899185F54519B1E99CD4 /* FontAwesome5_Regular.ttf */; };
EB754F50B18843438AE9584B /* FontAwesome5_Solid.ttf in Resources */ = {isa = PBXBuildFile; fileRef = F729C7E2EE884946A9355C09 /* FontAwesome5_Solid.ttf */; };
59E7B35F18164C33B0B5EF05 /* Fontisto.ttf in Resources */ = {isa = PBXBuildFile; fileRef = EDC60BAA3424456EBA1B6E60 /* Fontisto.ttf */; };
1FA456BCAB83416A8D5F2D87 /* Foundation.ttf in Resources */ = {isa = PBXBuildFile; fileRef = CF8C1A780F814B8D84C7F4B1 /* Foundation.ttf */; };
D95A4E6E2CD941F391A5EEB4 /* Ionicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = D66B241207A741E496B56CE6 /* Ionicons.ttf */; };
4537D47615C74572A714AA90 /* MaterialCommunityIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 2449D789EDFA490F94CDFF70 /* MaterialCommunityIcons.ttf */; };
E44A942AC14D4507BC99DECE /* MaterialIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 0BE4128DA4E948CBB5CEBAB6 /* MaterialIcons.ttf */; };
4566B253DB464EBDB664384E /* Octicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 5E88A5C8BFD24316B071099E /* Octicons.ttf */; };
0CB4E4F529864AC2B859B391 /* Roboto_medium.ttf in Resources */ = {isa = PBXBuildFile; fileRef = A0C3A73E3BBC4852925DDA84 /* Roboto_medium.ttf */; };
4A6A9E3F180B402088CB7AED /* Roboto.ttf in Resources */ = {isa = PBXBuildFile; fileRef = C4B0005B2ABE4F319327EA88 /* Roboto.ttf */; };
A6FC377548264D7AA86CB2F7 /* rubicon-icon-font.ttf in Resources */ = {isa = PBXBuildFile; fileRef = B3663D02D2B24A3A91096EC7 /* rubicon-icon-font.ttf */; };
EA1F8F76E9FF490E905EADFF /* SimpleLineIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = D3D982862ECF4A74991ECB71 /* SimpleLineIcons.ttf */; };
F39BB18FAFFB4B0FBEF0AC9B /* Zocial.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 80AB858D3BA841F7A5A31B64 /* Zocial.ttf */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@ -105,43 +86,6 @@
2D02E4901E0B4A5D006451C7 /* ankilan-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "ankilan-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
ED2971642150620600B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.0.sdk/System/Library/Frameworks/JavaScriptCore.framework; sourceTree = DEVELOPER_DIR; };
<<<<<<< HEAD
0E5D5065D768435EA998104A /* AntDesign.ttf */ = {isa = PBXFileReference; name = "AntDesign.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
40287932B0184615A4E3081F /* Entypo.ttf */ = {isa = PBXFileReference; name = "Entypo.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/Entypo.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
5D95DE62BE4C4C0BAACB9571 /* EvilIcons.ttf */ = {isa = PBXFileReference; name = "EvilIcons.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
CD46594AEDA34747A782AC3D /* Feather.ttf */ = {isa = PBXFileReference; name = "Feather.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/Feather.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
8E1A1F7D4CA34FE98CFEC237 /* FontAwesome.ttf */ = {isa = PBXFileReference; name = "FontAwesome.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
ED6890DD84FE4EA99296229D /* FontAwesome5_Brands.ttf */ = {isa = PBXFileReference; name = "FontAwesome5_Brands.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
C0E9531BEA02454CBD0C6FBD /* FontAwesome5_Regular.ttf */ = {isa = PBXFileReference; name = "FontAwesome5_Regular.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
12BD84FA23A5492B82A5F9D1 /* FontAwesome5_Solid.ttf */ = {isa = PBXFileReference; name = "FontAwesome5_Solid.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
541ACBC4238A4C9FA790279C /* Fontisto.ttf */ = {isa = PBXFileReference; name = "Fontisto.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/Fontisto.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
D952F276655F4116AE32EA9D /* Foundation.ttf */ = {isa = PBXFileReference; name = "Foundation.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/Foundation.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
ADEA2AF0C20D43F49417482C /* Ionicons.ttf */ = {isa = PBXFileReference; name = "Ionicons.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
2B694C9DF6484220B8BDBC4C /* MaterialCommunityIcons.ttf */ = {isa = PBXFileReference; name = "MaterialCommunityIcons.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
A55AE72F84B64F0AA5D7948E /* MaterialIcons.ttf */ = {isa = PBXFileReference; name = "MaterialIcons.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
0D898720909B40DDAE2DD962 /* Octicons.ttf */ = {isa = PBXFileReference; name = "Octicons.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/Octicons.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
7CAF012D54D74938AC6582E8 /* SimpleLineIcons.ttf */ = {isa = PBXFileReference; name = "SimpleLineIcons.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
BBB7B364E4EB41B0B72D85E2 /* Zocial.ttf */ = {isa = PBXFileReference; name = "Zocial.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/Zocial.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
6618AA0F4ACA4FB592D4B65E /* AntDesign.ttf */ = {isa = PBXFileReference; name = "AntDesign.ttf"; path = "../node_modules/native-base/Fonts/AntDesign.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
4E741E0B0415492B84AA6338 /* Entypo.ttf */ = {isa = PBXFileReference; name = "Entypo.ttf"; path = "../node_modules/native-base/Fonts/Entypo.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
C3D87EB19C1441E48F068E76 /* EvilIcons.ttf */ = {isa = PBXFileReference; name = "EvilIcons.ttf"; path = "../node_modules/native-base/Fonts/EvilIcons.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
B71E3585F57A439BA19EC58A /* Feather.ttf */ = {isa = PBXFileReference; name = "Feather.ttf"; path = "../node_modules/native-base/Fonts/Feather.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
6C85CD26B68143D88F3B0D91 /* FontAwesome.ttf */ = {isa = PBXFileReference; name = "FontAwesome.ttf"; path = "../node_modules/native-base/Fonts/FontAwesome.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
0A6AD8EC583344DC8F8C4F7D /* FontAwesome5_Brands.ttf */ = {isa = PBXFileReference; name = "FontAwesome5_Brands.ttf"; path = "../node_modules/native-base/Fonts/FontAwesome5_Brands.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
59DEB958643A4EAE95590608 /* FontAwesome5_Regular.ttf */ = {isa = PBXFileReference; name = "FontAwesome5_Regular.ttf"; path = "../node_modules/native-base/Fonts/FontAwesome5_Regular.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
6F623DCAC23248E0881A882F /* FontAwesome5_Solid.ttf */ = {isa = PBXFileReference; name = "FontAwesome5_Solid.ttf"; path = "../node_modules/native-base/Fonts/FontAwesome5_Solid.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
59A3C11F9A0F4037B19FA8E0 /* Fontisto.ttf */ = {isa = PBXFileReference; name = "Fontisto.ttf"; path = "../node_modules/native-base/Fonts/Fontisto.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
CD615A449A13412DB86EDE23 /* Foundation.ttf */ = {isa = PBXFileReference; name = "Foundation.ttf"; path = "../node_modules/native-base/Fonts/Foundation.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
EB272CDEE78846EAB3705E3D /* Ionicons.ttf */ = {isa = PBXFileReference; name = "Ionicons.ttf"; path = "../node_modules/native-base/Fonts/Ionicons.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
404E33F7BD1547C288E43849 /* MaterialCommunityIcons.ttf */ = {isa = PBXFileReference; name = "MaterialCommunityIcons.ttf"; path = "../node_modules/native-base/Fonts/MaterialCommunityIcons.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
B6481E8C83BA4DC8A3CF1CE1 /* MaterialIcons.ttf */ = {isa = PBXFileReference; name = "MaterialIcons.ttf"; path = "../node_modules/native-base/Fonts/MaterialIcons.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
47F25353830F49929447886C /* Octicons.ttf */ = {isa = PBXFileReference; name = "Octicons.ttf"; path = "../node_modules/native-base/Fonts/Octicons.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
7E585FBA2C3448E0980D844C /* Roboto_medium.ttf */ = {isa = PBXFileReference; name = "Roboto_medium.ttf"; path = "../node_modules/native-base/Fonts/Roboto_medium.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
2631E54546774FBE8190B056 /* Roboto.ttf */ = {isa = PBXFileReference; name = "Roboto.ttf"; path = "../node_modules/native-base/Fonts/Roboto.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
2762280877E6481791F752C8 /* rubicon-icon-font.ttf */ = {isa = PBXFileReference; name = "rubicon-icon-font.ttf"; path = "../node_modules/native-base/Fonts/rubicon-icon-font.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
F15E1AD962AC475ABEBE9A1F /* SimpleLineIcons.ttf */ = {isa = PBXFileReference; name = "SimpleLineIcons.ttf"; path = "../node_modules/native-base/Fonts/SimpleLineIcons.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
091E38CCBA674D09BC6AD2DE /* Zocial.ttf */ = {isa = PBXFileReference; name = "Zocial.ttf"; path = "../node_modules/native-base/Fonts/Zocial.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
=======
3000D2B3834E4C66A28382F8 /* AntDesign.ttf */ = {isa = PBXFileReference; name = "AntDesign.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
ADE75B0AF3E84621B5059B43 /* Entypo.ttf */ = {isa = PBXFileReference; name = "Entypo.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/Entypo.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
7AD629F9A4B44BFE9AFEA2E9 /* EvilIcons.ttf */ = {isa = PBXFileReference; name = "EvilIcons.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
@ -158,7 +102,25 @@
006C0665080F4DB581A45597 /* Octicons.ttf */ = {isa = PBXFileReference; name = "Octicons.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/Octicons.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
00E332BD0E6B4F69AD2BFB66 /* SimpleLineIcons.ttf */ = {isa = PBXFileReference; name = "SimpleLineIcons.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
16C65B2FFA244990A98EED99 /* Zocial.ttf */ = {isa = PBXFileReference; name = "Zocial.ttf"; path = "../node_modules/react-native-vector-icons/Fonts/Zocial.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
>>>>>>> fixed
815103740257422193FC7AE2 /* AntDesign.ttf */ = {isa = PBXFileReference; name = "AntDesign.ttf"; path = "../node_modules/native-base/Fonts/AntDesign.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
65310CCA118F4BDCAA2703C7 /* Entypo.ttf */ = {isa = PBXFileReference; name = "Entypo.ttf"; path = "../node_modules/native-base/Fonts/Entypo.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
BDF8E1DB2454481E9F053ED8 /* EvilIcons.ttf */ = {isa = PBXFileReference; name = "EvilIcons.ttf"; path = "../node_modules/native-base/Fonts/EvilIcons.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
CFA238B086774C5182CF9E74 /* Feather.ttf */ = {isa = PBXFileReference; name = "Feather.ttf"; path = "../node_modules/native-base/Fonts/Feather.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
89FF5EEC421940BD9B87E05B /* FontAwesome.ttf */ = {isa = PBXFileReference; name = "FontAwesome.ttf"; path = "../node_modules/native-base/Fonts/FontAwesome.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
B0A9A880302045279E1AC169 /* FontAwesome5_Brands.ttf */ = {isa = PBXFileReference; name = "FontAwesome5_Brands.ttf"; path = "../node_modules/native-base/Fonts/FontAwesome5_Brands.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
CE20899185F54519B1E99CD4 /* FontAwesome5_Regular.ttf */ = {isa = PBXFileReference; name = "FontAwesome5_Regular.ttf"; path = "../node_modules/native-base/Fonts/FontAwesome5_Regular.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
F729C7E2EE884946A9355C09 /* FontAwesome5_Solid.ttf */ = {isa = PBXFileReference; name = "FontAwesome5_Solid.ttf"; path = "../node_modules/native-base/Fonts/FontAwesome5_Solid.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
EDC60BAA3424456EBA1B6E60 /* Fontisto.ttf */ = {isa = PBXFileReference; name = "Fontisto.ttf"; path = "../node_modules/native-base/Fonts/Fontisto.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
CF8C1A780F814B8D84C7F4B1 /* Foundation.ttf */ = {isa = PBXFileReference; name = "Foundation.ttf"; path = "../node_modules/native-base/Fonts/Foundation.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
D66B241207A741E496B56CE6 /* Ionicons.ttf */ = {isa = PBXFileReference; name = "Ionicons.ttf"; path = "../node_modules/native-base/Fonts/Ionicons.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
2449D789EDFA490F94CDFF70 /* MaterialCommunityIcons.ttf */ = {isa = PBXFileReference; name = "MaterialCommunityIcons.ttf"; path = "../node_modules/native-base/Fonts/MaterialCommunityIcons.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
0BE4128DA4E948CBB5CEBAB6 /* MaterialIcons.ttf */ = {isa = PBXFileReference; name = "MaterialIcons.ttf"; path = "../node_modules/native-base/Fonts/MaterialIcons.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
5E88A5C8BFD24316B071099E /* Octicons.ttf */ = {isa = PBXFileReference; name = "Octicons.ttf"; path = "../node_modules/native-base/Fonts/Octicons.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
A0C3A73E3BBC4852925DDA84 /* Roboto_medium.ttf */ = {isa = PBXFileReference; name = "Roboto_medium.ttf"; path = "../node_modules/native-base/Fonts/Roboto_medium.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
C4B0005B2ABE4F319327EA88 /* Roboto.ttf */ = {isa = PBXFileReference; name = "Roboto.ttf"; path = "../node_modules/native-base/Fonts/Roboto.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
B3663D02D2B24A3A91096EC7 /* rubicon-icon-font.ttf */ = {isa = PBXFileReference; name = "rubicon-icon-font.ttf"; path = "../node_modules/native-base/Fonts/rubicon-icon-font.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
D3D982862ECF4A74991ECB71 /* SimpleLineIcons.ttf */ = {isa = PBXFileReference; name = "SimpleLineIcons.ttf"; path = "../node_modules/native-base/Fonts/SimpleLineIcons.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
80AB858D3BA841F7A5A31B64 /* Zocial.ttf */ = {isa = PBXFileReference; name = "Zocial.ttf"; path = "../node_modules/native-base/Fonts/Zocial.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@ -248,11 +210,7 @@
00E356EF1AD99517003FC87E /* ankilanTests */,
83CBBA001A601CBA00E9B192 /* Products */,
2D16E6871FA4F8E400B85C8A /* Frameworks */,
<<<<<<< HEAD
F885F34D61544A6D98238D81 /* Resources */,
=======
F26EA599C9CA4864823C1698 /* Resources */,
>>>>>>> fixed
);
indentWidth = 2;
sourceTree = "<group>";
@ -270,46 +228,6 @@
name = Products;
sourceTree = "<group>";
};
<<<<<<< HEAD
F885F34D61544A6D98238D81 /* Resources */ = {
isa = "PBXGroup";
children = (
0E5D5065D768435EA998104A /* AntDesign.ttf */,
40287932B0184615A4E3081F /* Entypo.ttf */,
5D95DE62BE4C4C0BAACB9571 /* EvilIcons.ttf */,
CD46594AEDA34747A782AC3D /* Feather.ttf */,
8E1A1F7D4CA34FE98CFEC237 /* FontAwesome.ttf */,
ED6890DD84FE4EA99296229D /* FontAwesome5_Brands.ttf */,
C0E9531BEA02454CBD0C6FBD /* FontAwesome5_Regular.ttf */,
12BD84FA23A5492B82A5F9D1 /* FontAwesome5_Solid.ttf */,
541ACBC4238A4C9FA790279C /* Fontisto.ttf */,
D952F276655F4116AE32EA9D /* Foundation.ttf */,
ADEA2AF0C20D43F49417482C /* Ionicons.ttf */,
2B694C9DF6484220B8BDBC4C /* MaterialCommunityIcons.ttf */,
A55AE72F84B64F0AA5D7948E /* MaterialIcons.ttf */,
0D898720909B40DDAE2DD962 /* Octicons.ttf */,
7CAF012D54D74938AC6582E8 /* SimpleLineIcons.ttf */,
BBB7B364E4EB41B0B72D85E2 /* Zocial.ttf */,
6618AA0F4ACA4FB592D4B65E /* AntDesign.ttf */,
4E741E0B0415492B84AA6338 /* Entypo.ttf */,
C3D87EB19C1441E48F068E76 /* EvilIcons.ttf */,
B71E3585F57A439BA19EC58A /* Feather.ttf */,
6C85CD26B68143D88F3B0D91 /* FontAwesome.ttf */,
0A6AD8EC583344DC8F8C4F7D /* FontAwesome5_Brands.ttf */,
59DEB958643A4EAE95590608 /* FontAwesome5_Regular.ttf */,
6F623DCAC23248E0881A882F /* FontAwesome5_Solid.ttf */,
59A3C11F9A0F4037B19FA8E0 /* Fontisto.ttf */,
CD615A449A13412DB86EDE23 /* Foundation.ttf */,
EB272CDEE78846EAB3705E3D /* Ionicons.ttf */,
404E33F7BD1547C288E43849 /* MaterialCommunityIcons.ttf */,
B6481E8C83BA4DC8A3CF1CE1 /* MaterialIcons.ttf */,
47F25353830F49929447886C /* Octicons.ttf */,
7E585FBA2C3448E0980D844C /* Roboto_medium.ttf */,
2631E54546774FBE8190B056 /* Roboto.ttf */,
2762280877E6481791F752C8 /* rubicon-icon-font.ttf */,
F15E1AD962AC475ABEBE9A1F /* SimpleLineIcons.ttf */,
091E38CCBA674D09BC6AD2DE /* Zocial.ttf */,
=======
F26EA599C9CA4864823C1698 /* Resources */ = {
isa = "PBXGroup";
children = (
@ -329,7 +247,25 @@
006C0665080F4DB581A45597 /* Octicons.ttf */,
00E332BD0E6B4F69AD2BFB66 /* SimpleLineIcons.ttf */,
16C65B2FFA244990A98EED99 /* Zocial.ttf */,
>>>>>>> fixed
815103740257422193FC7AE2 /* AntDesign.ttf */,
65310CCA118F4BDCAA2703C7 /* Entypo.ttf */,
BDF8E1DB2454481E9F053ED8 /* EvilIcons.ttf */,
CFA238B086774C5182CF9E74 /* Feather.ttf */,
89FF5EEC421940BD9B87E05B /* FontAwesome.ttf */,
B0A9A880302045279E1AC169 /* FontAwesome5_Brands.ttf */,
CE20899185F54519B1E99CD4 /* FontAwesome5_Regular.ttf */,
F729C7E2EE884946A9355C09 /* FontAwesome5_Solid.ttf */,
EDC60BAA3424456EBA1B6E60 /* Fontisto.ttf */,
CF8C1A780F814B8D84C7F4B1 /* Foundation.ttf */,
D66B241207A741E496B56CE6 /* Ionicons.ttf */,
2449D789EDFA490F94CDFF70 /* MaterialCommunityIcons.ttf */,
0BE4128DA4E948CBB5CEBAB6 /* MaterialIcons.ttf */,
5E88A5C8BFD24316B071099E /* Octicons.ttf */,
A0C3A73E3BBC4852925DDA84 /* Roboto_medium.ttf */,
C4B0005B2ABE4F319327EA88 /* Roboto.ttf */,
B3663D02D2B24A3A91096EC7 /* rubicon-icon-font.ttf */,
D3D982862ECF4A74991ECB71 /* SimpleLineIcons.ttf */,
80AB858D3BA841F7A5A31B64 /* Zocial.ttf */,
);
name = Resources;
sourceTree = "<group>";
@ -471,43 +407,6 @@
files = (
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */,
<<<<<<< HEAD
77265BEFC4404E238D395E2C /* AntDesign.ttf in Resources */,
B68FA0D61C384C9AB44BD3BE /* Entypo.ttf in Resources */,
B9388BD77CA54A9298B4A98F /* EvilIcons.ttf in Resources */,
1B72CDB36FA2454E80F9BF84 /* Feather.ttf in Resources */,
643CFD36A53F45D29F6DB911 /* FontAwesome.ttf in Resources */,
9D350D17269E4421814FD226 /* FontAwesome5_Brands.ttf in Resources */,
A5FDE794DF894F9C80EF1DDB /* FontAwesome5_Regular.ttf in Resources */,
6B0D1C3DEF6F40E49051ADFD /* FontAwesome5_Solid.ttf in Resources */,
749C4579CA3D4FA8B62D6CD0 /* Fontisto.ttf in Resources */,
DB083F96D4E54520944CC6B8 /* Foundation.ttf in Resources */,
15684583EFF44F93B3CBA8C6 /* Ionicons.ttf in Resources */,
4E47773AA7F747549D68E340 /* MaterialCommunityIcons.ttf in Resources */,
848391DEF1534137AD02437A /* MaterialIcons.ttf in Resources */,
C2DFC8C9364D4CFC86D9CAF7 /* Octicons.ttf in Resources */,
82292E3F27F245E78AEA3976 /* SimpleLineIcons.ttf in Resources */,
075D7804361B4568A80C1C8B /* Zocial.ttf in Resources */,
5E067ED19FD4497D9DDFED6E /* AntDesign.ttf in Resources */,
4525C331CA074AA8821A0A74 /* Entypo.ttf in Resources */,
EBC1408C0D5B468C89351BF9 /* EvilIcons.ttf in Resources */,
7672B539400347B38EBC5BC6 /* Feather.ttf in Resources */,
B55BA6C3EDA3411F88377AC6 /* FontAwesome.ttf in Resources */,
C8D284A938CD4AAA95C273CF /* FontAwesome5_Brands.ttf in Resources */,
6749E7E250894B32B725E396 /* FontAwesome5_Regular.ttf in Resources */,
62C892EF8F754F96846B3DA1 /* FontAwesome5_Solid.ttf in Resources */,
A1018DA50A8243779C30614F /* Fontisto.ttf in Resources */,
99117C77F940481396CA4AC3 /* Foundation.ttf in Resources */,
56AB61224A8D4D299928EB52 /* Ionicons.ttf in Resources */,
7B694A83F3344A2691FD06C0 /* MaterialCommunityIcons.ttf in Resources */,
A6C35BE496C74106A865E29F /* MaterialIcons.ttf in Resources */,
BFA62F01D55E49F082484880 /* Octicons.ttf in Resources */,
E82E1B56EE1C419CA2EF9BAA /* Roboto_medium.ttf in Resources */,
55C9C4FD91C94DDEA26F1FFE /* Roboto.ttf in Resources */,
ADAC158BE8B441D685F551CC /* rubicon-icon-font.ttf in Resources */,
4DB67A84E7FF44FF8100CE68 /* SimpleLineIcons.ttf in Resources */,
B71508403B384BFEB49A7215 /* Zocial.ttf in Resources */,
=======
4D52FDE523E84B2791C3D67D /* AntDesign.ttf in Resources */,
B90493FFE9264DF5B6CC7C44 /* Entypo.ttf in Resources */,
31DBC812F4DE446B9D3DC7B1 /* EvilIcons.ttf in Resources */,
@ -524,7 +423,25 @@
60D08C8669D9491891F0EAE0 /* Octicons.ttf in Resources */,
157D60FEAF7C49948291342D /* SimpleLineIcons.ttf in Resources */,
31C2D4A00BF24B9989303435 /* Zocial.ttf in Resources */,
>>>>>>> fixed
8D8BE89F91D74671AFB64D2C /* AntDesign.ttf in Resources */,
4A17FB4653CC440AB4AB4727 /* Entypo.ttf in Resources */,
4B80D071E9CE49CCBE5DEA8C /* EvilIcons.ttf in Resources */,
7CD9E571FBE84C439B621424 /* Feather.ttf in Resources */,
91FB71DDF4AD4E539A0EA9AC /* FontAwesome.ttf in Resources */,
672335B5103340FCA6134245 /* FontAwesome5_Brands.ttf in Resources */,
2BA06EF0BEC14ECAB6E0EB75 /* FontAwesome5_Regular.ttf in Resources */,
EB754F50B18843438AE9584B /* FontAwesome5_Solid.ttf in Resources */,
59E7B35F18164C33B0B5EF05 /* Fontisto.ttf in Resources */,
1FA456BCAB83416A8D5F2D87 /* Foundation.ttf in Resources */,
D95A4E6E2CD941F391A5EEB4 /* Ionicons.ttf in Resources */,
4537D47615C74572A714AA90 /* MaterialCommunityIcons.ttf in Resources */,
E44A942AC14D4507BC99DECE /* MaterialIcons.ttf in Resources */,
4566B253DB464EBDB664384E /* Octicons.ttf in Resources */,
0CB4E4F529864AC2B859B391 /* Roboto_medium.ttf in Resources */,
4A6A9E3F180B402088CB7AED /* Roboto.ttf in Resources */,
A6FC377548264D7AA86CB2F7 /* rubicon-icon-font.ttf in Resources */,
EA1F8F76E9FF490E905EADFF /* SimpleLineIcons.ttf in Resources */,
F39BB18FAFFB4B0FBEF0AC9B /* Zocial.ttf in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};

View File

@ -71,12 +71,9 @@
<string>Octicons.ttf</string>
<string>SimpleLineIcons.ttf</string>
<string>Zocial.ttf</string>
<<<<<<< HEAD
<string>Roboto_medium.ttf</string>
<string>Roboto.ttf</string>
<string>rubicon-icon-font.ttf</string>
=======
>>>>>>> fixed
</array>
</dict>
</plist>

3
rn-start.fs Executable file
View File

@ -0,0 +1,3 @@
#! /usr/bin/fish
set REACT_DEBUGGER "rndebugger-open --open --port 8081" yarn start

View File

@ -3,6 +3,7 @@ import {
SET_CREATOR_TEMPLATE,
SET_DECK,
SET_FIELDS,
SET_GLOBAL_DEF,
} from '../constants/anki-constants';
export const selectDeck = id => ({
@ -21,6 +22,7 @@ export const setCreatorTemplate = template => ({
});
const parseToAnkiFormat = dict => {
console.log('SDFfasdfsadf', dict);
/*
*** TEMPLATE ***
const modelFields = [
@ -40,10 +42,10 @@ const modelFields = [
const tr1 = dict.compounded[0];
const tr2 = dict.compounded[1] || {};
return [
dict.word,
tr1.pos,
tr1.tr,
tr1.definition,
dict.word || '',
tr1.pos || '',
tr1.tr || '',
tr1.definition || '',
tr2.pos || '',
tr2.tr || '',
tr2.definition || '',

View File

@ -1,6 +1,7 @@
import {search} from 'urban-dictionary-client';
import {
SET_AVAILABLE_API,
SET_LOADING_STATE,
SET_PARSED_DICTIONARY,
URBAN_DICTIONARY_API,
WORDS_API,
@ -35,6 +36,10 @@ const setDictioanry = dictioanry => ({
type: SET_PARSED_DICTIONARY,
payload: dictioanry,
});
const setLoadingState = status => ({
type: SET_LOADING_STATE,
payload: status,
});
export const wordInfo = word => async dispatch => {
try {
@ -49,6 +54,7 @@ export const wordInfo = word => async dispatch => {
}
*/
//function which return universal template for more simple interaction with api
dispatch(setLoadingState(false));
//TODO available dictionary instead api1
await dispatch(setAvailableApi(api1));
const wordDictionary = await createDictionary(api1);

View File

@ -14,7 +14,7 @@ const yDictionary = async (
);
const json = await res.json();
// console.log('JSON', json);
return parseResponse(json.def)
return parseResponse(json.def);
} catch (e) {
console.log('err in yandex-dictionary.js: ', e);
}

View File

@ -38,11 +38,14 @@ export const createAnkiLanModel = model => async dispatch => {
await console.log(modelId);
const [, fieldList] = await AnkiDroid.getFieldList(model.name);
sendDataToLocaleStorage({
console.log(fieldList, modelId);
await sendDataToLocaleStorage({
fieldList,
modelName: model.name,
modelId,
});
console.log(await getAnkiData());
} catch (err) {
console.log('irror is ghere', err);
}
@ -52,15 +55,20 @@ const firstNote = (creator, fields, template) =>
creator.addNote(fields, template);
//creator is an object what have to store in locale storage.
export const addNote = async words => {
const template = store.getState().anki.noteTemplate;
const ankiData = await getAnkiData();
await console.log(ankiData);
const template = await ankiData.fieldList;
const deckId = store.getState().anki.selectedDeck.id;
const modelId = await getAnkiData().modelId;
const modelId = await ankiData.modelId;
console.log(template, deckId, modelId);
const settings = {
deckId,
modelId,
};
const creator = new AnkiDroid(settings);
console.log(template);
console.log(words);
creator.addNote(words, template);
alert('sucssess');
};

View File

@ -12,5 +12,3 @@ export const sendField = field => ({
payload: field.text,
role: field.role,
});

View File

@ -0,0 +1,163 @@
import React, {useEffect, useRef, useState} from 'react';
import TextField from 'react-native-material-textfield/src/components/field';
import {StyleSheet} from 'react-native';
import {Picker, Text, View} from 'native-base';
import IconedButton from '../view/iconed-button.jsx';
import {POS_PICKER} from '../../constants/component-types';
const FieldEditor = props => {
const [data, setData] = useState(props.data);
const [values, setValues] = useState(props.data.values);
const [editing, setEditing] = useState(false);
const [selectedValue, setSelectedValue] = useState(
props.data.values[props.id] || props.data.values[0],
);
const [userText, setUserText] = useState(
props.data.values[props.id] || props.data.values[0],
);
const [valuesUpdated, setValuesUpdated] = useState(false);
const input = useRef();
useEffect(() => {
// console.log(userText)
// console.log("SELECTED", selectedValue)
if (props.hasChanged) {
// console.log("HAS CHANGED")
props.hasChanged(selectedValue);
}
if (props.type === POS_PICKER) {
console.log(userText);
}
});
useEffect(() => {
if (props.data.values.length === values.length) {
setData(props.data);
setValues(props.data.values);
}
}, [props.data.values]);
const selectValue = selected => {
setSelectedValue(selected);
if (props.type === POS_PICKER) {
values.forEach((value, id) => {
if (value === selected) {
console.warn(id);
props.onSelect(id);
}
});
}
};
const typing = text => {
setUserText(text);
};
const select = value => {
setUserText(value);
selectValue(value);
};
const confirmTyped = () => {
let newValues = new Set(values);
const valuesArray = Array.from(newValues.add(userText));
setValues(valuesArray);
setData({...data, values: valuesArray});
setEditing(!editing);
if (valuesArray.length !== values.length) {
setValuesUpdated(true);
}
};
useEffect(() => {
if (valuesUpdated) {
setSelectedValue(values[values.length - 1]);
setUserText(values[values.length - 1]);
setValuesUpdated(false);
}
setValuesUpdated(false);
}, [valuesUpdated]);
const styles = StyleSheet.create({
wrapper: {},
inner: {
display: 'flex',
justifyContent: 'space-between',
flexDirection: 'row',
alignItems: 'center',
alignContent: 'center',
},
row: {
display: 'flex',
flexDirection: 'row',
justifyContent: 'space-between',
width: 90,
},
button: {
width: 40,
height: 40,
display: 'flex',
justifyContent: 'center',
alignItems: 'center',
},
tfWrapper: {
width: editing ? '75%' : '84%',
},
pickerLabel: {
color: '#00000050',
fontSize: 12,
marginLeft: 2,
},
hr: {
height: 1,
width: '100%',
backgroundColor: '#00000070',
},
});
return (
<View style={styles.wrapper}>
<View style={styles.inner}>
<View style={styles.tfWrapper}>
{editing ? (
<TextField
lineType={'none'}
multiline={true}
label={props.data.label}
value={userText}
editable={true}
ref={input}
onChangeText={text => typing(text)}
/>
) : (
<View>
<Text style={styles.pickerLabel}>{props.data.label}</Text>
<Picker
selectedValue={selectedValue}
onValueChange={value => select(value)}>
{values.map((value, id) => {
return <Picker.Item value={value} label={value} key={id} />;
})}
</Picker>
</View>
)}
</View>
{editing ? (
<View style={styles.row}>
<IconedButton
icon="caret-down"
onPress={() => {
setEditing(!editing);
setUserText(selectedValue);
}}
/>
<IconedButton icon="check" onPress={confirmTyped} />
</View>
) : (
<IconedButton
icon="pen"
onPress={() => {
setEditing(!editing);
}}
/>
)}
</View>
<View style={styles.hr} />
</View>
);
};
export default FieldEditor;

View File

@ -1,56 +1,76 @@
import React, {useState, useEffect, useRef} from 'react';
import {connect} from 'react-redux';
import React, {useEffect, useState} from 'react';
import TextField from 'react-native-material-textfield/src/components/field';
import {StyleSheet, TextInput} from 'react-native';
import {View, Text, Button, Picker} from 'native-base';
import Icon from 'react-native-vector-icons/FontAwesome5';
import {ScrollView, StyleSheet} from 'react-native';
import {Picker, Text, View} from 'native-base';
import IconedButton from '../view/iconed-button.jsx';
import {POS_PICKER} from '../../constants/component-types';
const FieldEditor = props => {
const [data, setData] = useState(props.data);
const [values, setValues] = useState(props.data.values);
const [editing, setEditing] = useState(false);
const [selectedValue, setSelectedValue] = useState(props.data.values[0]);
const [userText, setUserText] = useState('');
const input = useRef();
const [finalText, setFinalText] = useState(props.data.values[0]);
useEffect(() => {
setData(props.data);
setValues(props.data.values)
}, [props]);
import set from '@babel/runtime/helpers/esm/set';
const selectValue = selected => {
setSelectedValue(selected);
const FieldEditor = props => {
const label = props.data.label;
const constantValues = props.pos | '';
const [values, setValues] = useState(props.data.values);
const [editingValue, setEditingValue] = useState(
props.data.values[props.id] || props.data.values[0],
);
const [selectedValue, setSelectedValue] = useState(
props.data.values[props.id] || props.data.values[0],
);
const [finiteValue, setFiniteValue] = useState(
props.data.values[props.id] || props.data.values[0],
);
const [editing, isEditing] = useState(false);
const [] = useState();
const [] = useState();
const [] = useState();
const select = value => {
setSelectedValue(value);
setFiniteValue(value);
setEditingValue(value);
};
const typing = text => {
setEditingValue(text);
};
const setTyped = () => {
let valuesSet = new Set(values);
valuesSet.add(editingValue);
const valuesArray = Array.from(valuesSet).slice();
setValues(valuesArray);
isEditing(!editing);
if (selectedValue !== editingValue) {
select(valuesArray[valuesArray.length - 1]);
}
};
useEffect(() => {
if (props.type === POS_PICKER) {
values.forEach((value, id) => {
if (value === selected) props.onSelect(id);
if (value === finiteValue) {
props.hasChanged(id);
}
});
} else {
props.hasChanged(finiteValue);
}
};
const typing = text => {
setUserText(text);
};
const select = value => {
setFinalText(value);
setUserText(value);
selectValue(value);
};
const confirmTyped = () => {
let newValues = new Set(values);
newValues.add(userText);
setValues(Array.from(newValues));
setData({...data, values: [...values, userText]});
console.log(values);
};
}, [finiteValue]);
useEffect(() => {
if (props.data.values !== values) {
setSelectedValue(values[values.length - 1]);
}
}, [values]);
setValues(props.data.values);
setSelectedValue(props.data.values[0]);
console.log('EXECUTIN');
}, [constantValues]);
// useEffect(() => {
//
// if(props.type !== POS_PICKER){
// if(constantValues !== props.data.values){
// console.log("EXECUTIN")
// }
// }
// }, [constantValues, props.data.values])
useEffect(() => {
});
const styles = StyleSheet.create({
wrapper: {},
inner: {
@ -89,53 +109,74 @@ const FieldEditor = props => {
});
return (
<View style={styles.wrapper}>
<View style={styles.inner}>
<View style={styles.tfWrapper}>
{editing ? (
<TextField
lineType={'none'}
multiline={true}
label={props.data.label}
value={userText}
editable={true}
ref={input}
onChangeText={text => typing(text)}
/>
) : (
<View>
<Text style={styles.pickerLabel}>{props.data.label}</Text>
<Picker
selectedValue={selectedValue}
onValueChange={value => select(value)}>
{values.map((value, id) => {
return <Picker.Item value={value} label={value} key={id} />;
})}
</Picker>
</View>
)}
<ScrollView keyboardShouldPersistTaps={'handled'}>
{props.type === POS_PICKER ? (
<View>
<Text style={styles.pickerLabel}>{props.data.label}</Text>
<Picker
selectedValue={selectedValue}
onValueChange={value => select(value)}>
{values.map((value, id) => {
return <Picker.Item value={value} label={value} key={id} />;
})}
</Picker>
</View>
{editing ? (
<View style={styles.row}>
<IconedButton
icon="caret-down"
onPress={() => {
setEditing(!editing);
}}
/>
<IconedButton icon="check" onPress={confirmTyped} />
) : (
<View style={styles.wrapper}>
<View style={styles.inner}>
<View style={styles.tfWrapper}>
{editing ? (
<View>
<TextField
lineType={'none'}
multiline={true}
label={label}
value={editingValue}
editable={true}
onChangeText={text => typing(text)}
autoFocus={true}
/>
<View style={styles.hr} />
</View>
) : (
<View>
<Text style={styles.pickerLabel}>{props.data.label}</Text>
<Picker
selectedValue={selectedValue}
onValueChange={value => select(value)}>
{values.map((value, id) => {
return (
<Picker.Item value={value} label={value} key={id} />
);
})}
</Picker>
</View>
)}
</View>
{editing ? (
<View style={styles.row}>
<IconedButton icon="check" onPress={setTyped} />
<IconedButton
icon="caret-down"
onPress={() => {
isEditing(!editing);
setEditingValue(selectedValue);
}}
/>
</View>
) : (
<IconedButton
icon="pen"
onPress={() => {
isEditing(!editing);
}}
/>
)}
</View>
) : (
<IconedButton
icon="pen"
onPress={() => {
setEditing(!editing);
}}
/>
)}
</View>
<View style={styles.hr} />
</View>
<View style={styles.hr} />
</View>
)}
</ScrollView>
);
};
export default connect()(FieldEditor);
export default FieldEditor;

View File

@ -12,13 +12,17 @@ import {
DEF_LIST2,
EXAMPLES,
PRONUNCIATION,
SOUND,
SOUND, WORD,
} from '../../constants/anki-constants';
import {sendField} from '../../actions/form-actions';
import {addNote} from "../../actions/createAnkiLanModel";
const FieldList = props => {
const [pronunciation, setPronunciation] = useState();
const [pronunciation, setPronunciation] = useState(
props.response.pronunciation,
);
const [sound, setSound] = useState();
const [examples, setExamples] = useState(props.response.examples);
const [examples, setExamples] = useState();
const [completedFields, setCompletedFields] = useState({
word: props.word,
compounded: [{pos: '', tr: '', definition: ''}, {}],
@ -26,43 +30,99 @@ const FieldList = props => {
pronunciation: '',
sound: '',
});
useEffect(() => {
if (
props.response.sound &&
props.response.pronunciation &&
props.response.compounded &&
props.response.examples
) {
// console.log("LOOOADED")
} else {
}
});
useEffect(() => {
setSound(props.response.sound);
setPronunciation(props.response.pronunciation);
setExamples(props.response.examples);
}, [props]);
const [loadingState, setLoadingState] = useState(false);
useEffect(() => {
console.group('STATE', examples, pronunciation, sound);
console.log('STATE', examples, pronunciation, sound);
if (examples && pronunciation && sound) {
setLoadingState(true);
} else {
setLoadingState(false);
}
});
const submit = () => {
setFields(completedFields);
props.setFields(props.fields);
};
return (
<ScrollView style={{height: '100%'}}>
<PickerList labelNum={1} id={0} role={DEF_LIST1} />
<PickerList labelNum={2} id={1} role={DEF_LIST2} />
<FieldEditor
role={EXAMPLES}
data={{
label: 'Usage example',
values: examples || ['can not find the example'],
}}
/>
<TextInput value={sound} label={'Sound'} role={SOUND} />
<TextInput
value={pronunciation}
label={'Transcription'}
role={PRONUNCIATION}
/>
<Button style={{marginTop: 10}} onPress={submit}>
<Text>Submit</Text>
<Icon name={'send'} />
</Button>
<ScrollView keyboardShouldPersistTaps={'handled'} style={{height: '100%'}}>
{loadingState && props.loadingState ? (
<View>
<PickerList labelNum={1} id={0} role={DEF_LIST1} />
{/*<PickerList labelNum={2} id={1} role={DEF_LIST2} />*/}
<PickerList
labelNum={2}
id={props.response.compounded.length >= 2 ? 1 : 0}
role={DEF_LIST2}
/>
<FieldEditor
hasChanged={c =>
props.sendField({
text: c,
role: EXAMPLES,
})
}
role={EXAMPLES}
data={{
label: 'Usage example',
values: examples || ['can not find the example'],
}}
/>
<FieldEditor
hasChanged={c =>
props.sendField({
text: c,
role: SOUND,
})
}
data={{values: [sound], label: 'Sound'}}
role={SOUND}
/>
<FieldEditor
hasChanged={c =>
props.sendField({
text: c,
role: PRONUNCIATION,
})
}
role={PRONUNCIATION}
data={{values: [pronunciation], label: 'Pronunciation'}}
/>
<Button style={{marginTop: 10}} onPress={submit}>
<Text>Submit</Text>
<Icon name={'send'} />
</Button>
</View>
) : (
<Text>Loading...</Text>
)}
</ScrollView>
);
};
export default connect(state => ({
response: state.api.parsedDictionary,
word: state.api.word,
}))(FieldList);
export default connect(
state => ({
response: state.api.parsedDictionary,
word: state.api.availableApi.word,
loadingState: state.api.apiIsLoaded,
fields: state.anki.currentFields
}),
{
sendField,
setFields
},
)(FieldList);

View File

@ -3,6 +3,8 @@ import {View} from 'native-base';
import {connect} from 'react-redux';
import PosPicker from './pos-picker';
import FieldEditor from './field-editor';
import {setDef} from '../../actions/anki-set-actions';
import {sendField} from '../../actions/form-actions';
/*
****************** props:*****************
@ -11,47 +13,94 @@ import FieldEditor from './field-editor';
* */
const PickerList = props => {
const [data, setData] = useState(props.data[props.id]);
const [tr, setTr] = useState(props.data[props.id].definitions[0]);
const [def, setDef] = useState(props.data[props.id].definitions[0]);
const [pos, setPos] = useState(props.data[props.id].pos);
const [globID, setId] = useState(props.id);
useEffect(() => {
setData(props.data[props.id]);
console.log(`
`,props.data[props.id]);
setTimeout(() => {
selectDef(0);
}, 0);
}, [props]);
useEffect(() => {
console.log('data', props.data[props.id]);
});
const selectDef = id => {
setData(props.data[id]);
setId(id);
setPos(props.data[id].pos);
setDef(props.data[id].definitions[0]);
setTr(props.data[id].translates[0]);
};
useEffect(() => {
props.sendField({
text: {
pos: pos,
tr: tr,
definition: def,
},
role: props.role,
});
props.sendField("HDFSL:FJL:SKDJF: SLDKJF:LSDJF:LSDKFJ SDF",
{
text: {
pos: pos,
tr: tr,
definition: def,
},
role: props.role,
})
}, [tr, def, pos]);
const updateData = c => {
console.log("HDFLSDKFJ SDF",
{
text: {
pos: pos,
tr: tr,
definition: def,
},
role: props.role,
})
};
return (
<View>
<PosPicker
labelNum={props.labelNum}
onSelect={id => selectDef(id)}
// getId={id => setId(id)}
defaultId={props.id}
onSelect={id => selectDef(id | props.id)}
/>
<FieldEditor
data={{label: `Translate ${props.labelNum}`, values: data.translates}}
hasChanged={c => {
setTr(c);
updateData(c );
}}
pos={pos}
data={{
label: `Translate ${props.labelNum}`,
values: props.data[globID].translates,
}}
/>
<FieldEditor
data={{label: `Definition ${props.labelNum}`, values: data.definitions}}
hasChanged={c => {
setDef(c);
updateData(c);
}}
pos={pos}
data={{
label: `Definition ${props.labelNum}`,
values: props.data[globID].definitions,
}}
/>
</View>
);
};
export default connect(state => ({
data: state.api.parsedDictionary.compounded,
}))(PickerList);
export default connect(
state => ({
data: state.api.parsedDictionary.compounded,
word: state.api.availableApi.word,
}),
{
setDef,
sendField,
},
)(PickerList);

View File

@ -22,8 +22,9 @@ const PosPicker = props => {
label: `Part of speech ${props.labelNum} `,
values: poses,
}}
id={props.defaultId}
type={POS_PICKER}
onSelect={(value) => props.onSelect(value)}
hasChanged={value => props.onSelect(value)}
/>
) : (
<View />

View File

@ -9,5 +9,4 @@ const SubmitButton = props => {
</Button>
);
};
export default SubmitButton
export default SubmitButton;

View File

@ -3,27 +3,20 @@ import {connect} from 'react-redux';
import {TextField} from 'react-native-material-textfield';
import {View} from 'native-base';
import {sendField} from '../../actions/form-actions';
import FieldEditor from './field-editor';
const TextInput = props => {
const input = useRef();
const [text, setText] = useState(props.value);
useEffect(() => {
setText(props.value);
input.current.setValue(props.value);
}, [props, props.value]);
const typing = text => {
setText(text)
props.sendField({text, role: props.role})
}
// console.log(props.value)
});
return (
<View >
<TextField
value={props.value}
label={props.label}
editable={true}
onChangeText={text => typing(text) }
ref={input}
lineType={'none'}
<View>
<FieldEditor
hasChanged={c => true}
data={{
values: [props.value],
label: props.label,
}}
/>
<View
style={{
@ -35,6 +28,9 @@ const TextInput = props => {
</View>
);
};
export default connect(null, {
sendField
})(TextInput);
export default connect(
null,
{
sendField,
},
)(TextInput);

View File

@ -8,51 +8,48 @@ import AddWordForm from './anki-form';
import AnkiTemplate from './view/add-main-template';
import {Grid, Row} from 'native-base';
import {
checkAnkiLanModelForExisting,
getDeckList,
getModelList,
getSavedData
checkAnkiLanModelForExisting,
getDeckList,
getModelList,
getSavedData,
} from '../actions/anki-get-actions';
const StartScreen = props => {
useEffect(() => {
props.getDeckList();
props.getModelList();
props.getSavedData();
}, []);
useEffect(() => {
props.checkAnkiLanModelForExisting(
props.modelName,
props.modelList,
);
});
return (
<ScrollView keyboardShouldPersistTaps="handled">
{props.ankiAvailable ? (
props.ankiLanModelExists ? (
<AddWordForm />
) : (
<AnkiTemplate />
)
) : (
<Permissions />
)}
</ScrollView>
);
useEffect(() => {
props.getDeckList();
props.getModelList();
props.getSavedData();
}, []);
useEffect(() => {
props.checkAnkiLanModelForExisting(props.modelName, props.modelList);
});
return (
<ScrollView keyboardShouldPersistTaps="handled">
{props.ankiAvailable ? (
props.ankiLanModelExists ? (
<AddWordForm />
) : (
<AnkiTemplate />
)
) : (
<Permissions />
)}
</ScrollView>
);
};
export default connect(
state => ({
ankiAvailable: state.anki.appHasAccess,
ankiLanModelExists: state.anki.ankiLanModelIsAlreadyExists,
modelName: state.anki.ankiLanModelName,
modelList: state.anki.modelList,
creator: state.anki.noteCreator,
}),
{
checkAnkiLanModelForExisting,
getDeckList,
getModelList,
getSavedData
},
state => ({
ankiAvailable: state.anki.appHasAccess,
ankiLanModelExists: state.anki.ankiLanModelIsAlreadyExists,
modelName: state.anki.ankiLanModelName,
modelList: state.anki.modelList,
creator: state.anki.noteCreator,
}),
{
checkAnkiLanModelForExisting,
getDeckList,
getModelList,
getSavedData,
},
)(StartScreen);

View File

@ -5,15 +5,18 @@ import {Form, Container, Item} from 'native-base';
import {checkAnkiLanModelForExisting} from '../actions/anki-get-actions';
import InputWord from './view/translatable-word';
import SubmitButton from './Form/submit-button';
import {ScrollView} from 'react-native'
import {ScrollView} from 'react-native';
import {wordInfo} from '../actions/api/dictionary';
import FieldEditor from './Form/field-editor';
import FieldList from './Form/field-list';
import {WORD} from "../constants/anki-constants";
import {sendField} from "../actions/form-actions";
const AnkiForm = props => {
const [target, setTarget] = useState('');
const [fields, setFields] = useState({});
const [submitted, setSubmitted] = useState(false);
useEffect(() => {
// props.wordInfo('Urge');
// props.wordInfo('Maze');
@ -29,6 +32,11 @@ const AnkiForm = props => {
const submit = () => {
props.wordInfo(target);
setSubmitted(true);
props.sendField({
text: target,
role: WORD
})
// console.log(props.available, props.data)
};
return (
@ -36,11 +44,7 @@ const AnkiForm = props => {
<Form>
<DeckPicker />
<InputWord word={getWord} onSubmit={submit} />
{(submitted && props.available) ? (
<FieldList />
) : (
<SubmitButton onSubmit={submit} />
)}
{submitted ? <FieldList /> : <SubmitButton onSubmit={submit} />}
</Form>
</ScrollView>
);
@ -53,10 +57,12 @@ export default connect(
modelList: state.anki.modelList,
creator: state.anki.noteCreator,
data: state,
available: state.api.apiIsLoaded,
word: state.api.availableApi.word,
available: state.api.apiIsLoaded,
}),
{
checkAnkiLanModelForExisting,
wordInfo,
sendField
},
)(AnkiForm);

View File

@ -1,27 +1,38 @@
import React from 'react'
import {Text, Button,Grid, Container} from 'native-base';
import {connect} from 'react-redux'
import React from 'react';
import {Text, Button, Grid, Container} from 'native-base';
import {connect} from 'react-redux';
import {createAnkiLanModel} from '../../actions/createAnkiLanModel';
const AnkiTemplate = props => {
return(
<Grid style={{display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}>
<Text>You have no AnkiLan card template</Text>
<Button onPress={() => props.createAnkiLanModel({
name: props.modelName,
list: props.modelList,
...props.currentDeck
})}><Text>Create</Text></Button>
return (
<Grid
style={{
display: 'flex',
alignItems: 'center',
justifyContent: 'space-between',
}}>
<Text>You have no AnkiLan card template</Text>
<Button
onPress={() =>
props.createAnkiLanModel({
name: props.modelName,
list: props.modelList,
...props.currentDeck,
})
}>
<Text>Create</Text>
</Button>
</Grid>
);
};
</Grid>
)
}
export default connect(state => ({
export default connect(
state => ({
modelName: state.anki.ankiLanModelName,
currentDeck: state.anki.selectedDeck,
modelList: state.anki.modelList,
}), {
}),
{
createAnkiLanModel,
})(AnkiTemplate)
},
)(AnkiTemplate);

View File

@ -1,32 +1,37 @@
import React, {useEffect, useState} from 'react'
import {connect} from 'react-redux'
import {Picker, Text} from 'native-base'
import { getDeckList, getModelList} from '../../actions/anki-get-actions';
import React, {useEffect, useState} from 'react';
import {connect} from 'react-redux';
import {Picker, Text} from 'native-base';
import {getDeckList, getModelList} from '../../actions/anki-get-actions';
import {selectDeck} from '../../actions/anki-set-actions';
const DeckPicker = props => {
const [deckList, setDeckList] = useState([{name: "no decks", id: 0}]);
useEffect(() => {
props.getDeckList()
props.getModelList()
}, [])
useEffect(() => {
setDeckList(props.decks)
}, [props.decks])
return (
<Picker onValueChange={id => props.selectDeck({id, deck: deckList[id]})} selectedValue={props.selectedDeck.id}>
{deckList.map((deck, index) => (
<Picker.Item label={deck.name} key={deck.id} value={index}/>
))}
</Picker>
)
}
const [deckList, setDeckList] = useState([{name: 'no decks', id: 0}]);
useEffect(() => {
props.getDeckList();
props.getModelList();
}, []);
useEffect(() => {
setDeckList(props.decks);
}, [props.decks]);
return (
<Picker
onValueChange={id => props.selectDeck({id, deck: deckList[id]})}
selectedValue={props.selectedDeck.id}>
{deckList.map((deck, index) => (
<Picker.Item label={deck.name} key={deck.id} value={index} />
))}
</Picker>
);
};
export default connect(state => ({
export default connect(
state => ({
decks: state.anki.deckList,
selectedDeck: state.anki.selectedDeck,
}),{
}),
{
getDeckList,
selectDeck,
getModelList
})(DeckPicker)
getModelList,
},
)(DeckPicker);

View File

@ -6,21 +6,21 @@ import {View, Text, Button, Picker} from 'native-base';
import Icon from 'react-native-vector-icons/FontAwesome5';
const IconedButton = props => {
return (
<Button bordered style={styles.button} onPress={props.onPress}>
<Icon name={props.icon} size={20} color={'blue'} />
</Button>
);
return (
<Button bordered style={styles.button} onPress={props.onPress}>
<Icon name={props.icon} size={20} color={'blue'} />
</Button>
);
};
const styles = StyleSheet.create({
button: {
width: 40,
height: 40,
display: 'flex',
justifyContent: 'center',
alignItems: 'center',
},
button: {
width: 40,
height: 40,
display: 'flex',
justifyContent: 'center',
alignItems: 'center',
},
});
export default IconedButton;

View File

@ -3,9 +3,18 @@ import {connect} from 'react-redux';
import {TextField} from 'react-native-material-textfield';
const InputWord = props => {
const sendWord = (word) => {
props.word(word)
const sendWord = word => {
props.word(word);
};
return <TextField label={'Your word'} onChangeText={word => sendWord(word)} onSubmitEditing={props.onSubmit}/>;
return (
<TextField
label={'Your word'}
onChangeText={word => sendWord(word)}
onSubmitEditing={props.onSubmit}
/>
);
};
export default connect(state => ({}), {})(InputWord);
export default connect(
state => ({}),
{},
)(InputWord);

View File

@ -19,6 +19,7 @@ export const SET_ANKI_NOTE_CREATOR = 'SET_ANKI_NOTE_CREATOR';
export const SET_CREATOR_TEMPLATE = 'SET_CREATOR_TEMPLATE';
export const SET_FIELDS = 'SET_FIELDS';
export const SET_ANKI_DATA = 'SET_ANKI_DATA';
export const SET_GLOBAL_DEF = 'SET_GLOBAL_DEF';
//Anki ui actions
export const SHOW_FIELDS = 'SHOW_FIELDS';
// Anki check actions
@ -38,4 +39,4 @@ export const EXAMPLES = 'EXAMPLES';
export const PRONUNCIATION = 'PRONUNCIATION';
export const DEF_LIST1 = 'DEF_LIST1';
export const DEF_LIST2 = 'DEF_LIST2';
export const WORD = 'WORD'
export const WORD = 'WORD';

View File

@ -6,3 +6,4 @@ export const URBAN_DICTIONARY_API = 'URBAN_DICTIONARY_API';
export const SET_ALL_FIELDS = 'SET_ALL_FIELDS';
export const SET_PARSED_DICTIONARY = 'SET_PARSED_DICTIONARY';
export const SET_LOADING_STATE = 'SET_LOADING_STATE';

View File

@ -28,7 +28,7 @@ const initialState = {
mainFieldIsAvailable: false,
fieldList: [],
ankiLanModelIsAlreadyExists: false,
ankiLanModelName: 'develop_final',
ankiLanModelName: 'develop_final_maybe_maybe_maybe',
noteCreator: {},
noteTemplate: [],
currentFields: {
@ -93,11 +93,13 @@ const ankiReducer = (state = initialState, action) => {
};
}
case DEF_LIST1: {
console.log(action.payload);
console.log(action.role);
return {
...state,
currentFields: {
...state.currentFields,
compounded: [action.payload, state.compounded[1]],
compounded: [action.payload, state.currentFields.compounded[1]],
},
};
}
@ -106,11 +108,12 @@ const ankiReducer = (state = initialState, action) => {
...state,
currentFields: {
...state.currentFields,
compounded: [, state.compounded[0], action.payload],
compounded: [state.currentFields.compounded[0], action.payload],
},
};
}
case WORD: {
alert(action.payload);
return {
...state,
currentFields: {...state.currentFields, word: action.payload},

View File

@ -1,10 +1,12 @@
import {
SET_ALL_FIELDS,
SET_AVAILABLE_API,
SET_LOADING_STATE,
SET_PARSED_DICTIONARY,
SET_YANDEX_DICTIONARY_RESPONSE,
} from '../constants/api-constants';
import {SET_FIELDS} from '../constants/anki-constants';
import {addNote} from '../actions/createAnkiLanModel';
const initialState = {
word: '',
@ -36,9 +38,15 @@ const apiReducer = (state = initialState, action) => {
return {
...state,
parsedDictionary: action.payload,
apiIsLoaded: true,
apiIsLoaded: true,
};
case SET_LOADING_STATE:
return {
...state,
apiIsLoaded: action.payload,
};
case SET_FIELDS:
addNote(action.payload);
return {
...state,
availableFields: action.payload,

5
tools-start.fs Executable file
View File

@ -0,0 +1,5 @@
watchman watch-del-all
watchman shutdown-server
react-native run-android
react-native-debugger &
scrcpy &

880
yarn.lock

File diff suppressed because it is too large Load Diff