add some bugs
but now, field editor can send results to anki
This commit is contained in:
parent
c5c00cf574
commit
f906787cc2
5
App.jsx
5
App.jsx
|
@ -2,10 +2,13 @@ import React, {useEffect} from 'react';
|
||||||
import {Provider} from 'react-redux';
|
import {Provider} from 'react-redux';
|
||||||
import StartScreen from './src/components/add-anklan-model';
|
import StartScreen from './src/components/add-anklan-model';
|
||||||
import store from './src/store';
|
import store from './src/store';
|
||||||
|
import {ScrollView} from 'react-native';
|
||||||
const App = props => {
|
const App = props => {
|
||||||
return (
|
return (
|
||||||
<Provider store={store}>
|
<Provider store={store}>
|
||||||
<StartScreen />
|
<ScrollView keyboardShouldPersistTaps={'handled'}>
|
||||||
|
<StartScreen />
|
||||||
|
</ScrollView>
|
||||||
</Provider>
|
</Provider>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
|
@ -16,43 +16,6 @@
|
||||||
2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
|
2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
|
||||||
2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
|
2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
|
||||||
2DCD954D1E0B4F2C00145EB5 /* ankilanTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* ankilanTests.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 */; };
|
4D52FDE523E84B2791C3D67D /* AntDesign.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3000D2B3834E4C66A28382F8 /* AntDesign.ttf */; };
|
||||||
B90493FFE9264DF5B6CC7C44 /* Entypo.ttf in Resources */ = {isa = PBXBuildFile; fileRef = ADE75B0AF3E84621B5059B43 /* Entypo.ttf */; };
|
B90493FFE9264DF5B6CC7C44 /* Entypo.ttf in Resources */ = {isa = PBXBuildFile; fileRef = ADE75B0AF3E84621B5059B43 /* Entypo.ttf */; };
|
||||||
31DBC812F4DE446B9D3DC7B1 /* EvilIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7AD629F9A4B44BFE9AFEA2E9 /* EvilIcons.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 */; };
|
60D08C8669D9491891F0EAE0 /* Octicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 006C0665080F4DB581A45597 /* Octicons.ttf */; };
|
||||||
157D60FEAF7C49948291342D /* SimpleLineIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 00E332BD0E6B4F69AD2BFB66 /* SimpleLineIcons.ttf */; };
|
157D60FEAF7C49948291342D /* SimpleLineIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 00E332BD0E6B4F69AD2BFB66 /* SimpleLineIcons.ttf */; };
|
||||||
31C2D4A00BF24B9989303435 /* Zocial.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 16C65B2FFA244990A98EED99 /* Zocial.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 */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
/* Begin PBXContainerItemProxy 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; };
|
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; };
|
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; };
|
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; };
|
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; };
|
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; };
|
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; };
|
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; };
|
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; };
|
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 */
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
/* Begin PBXFrameworksBuildPhase section */
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
|
@ -248,11 +210,7 @@
|
||||||
00E356EF1AD99517003FC87E /* ankilanTests */,
|
00E356EF1AD99517003FC87E /* ankilanTests */,
|
||||||
83CBBA001A601CBA00E9B192 /* Products */,
|
83CBBA001A601CBA00E9B192 /* Products */,
|
||||||
2D16E6871FA4F8E400B85C8A /* Frameworks */,
|
2D16E6871FA4F8E400B85C8A /* Frameworks */,
|
||||||
<<<<<<< HEAD
|
|
||||||
F885F34D61544A6D98238D81 /* Resources */,
|
|
||||||
=======
|
|
||||||
F26EA599C9CA4864823C1698 /* Resources */,
|
F26EA599C9CA4864823C1698 /* Resources */,
|
||||||
>>>>>>> fixed
|
|
||||||
);
|
);
|
||||||
indentWidth = 2;
|
indentWidth = 2;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
|
@ -270,46 +228,6 @@
|
||||||
name = Products;
|
name = Products;
|
||||||
sourceTree = "<group>";
|
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 */ = {
|
F26EA599C9CA4864823C1698 /* Resources */ = {
|
||||||
isa = "PBXGroup";
|
isa = "PBXGroup";
|
||||||
children = (
|
children = (
|
||||||
|
@ -329,7 +247,25 @@
|
||||||
006C0665080F4DB581A45597 /* Octicons.ttf */,
|
006C0665080F4DB581A45597 /* Octicons.ttf */,
|
||||||
00E332BD0E6B4F69AD2BFB66 /* SimpleLineIcons.ttf */,
|
00E332BD0E6B4F69AD2BFB66 /* SimpleLineIcons.ttf */,
|
||||||
16C65B2FFA244990A98EED99 /* Zocial.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;
|
name = Resources;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
|
@ -471,43 +407,6 @@
|
||||||
files = (
|
files = (
|
||||||
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
|
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
|
||||||
13B07FBD1A68108700A75B9A /* LaunchScreen.xib 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 */,
|
4D52FDE523E84B2791C3D67D /* AntDesign.ttf in Resources */,
|
||||||
B90493FFE9264DF5B6CC7C44 /* Entypo.ttf in Resources */,
|
B90493FFE9264DF5B6CC7C44 /* Entypo.ttf in Resources */,
|
||||||
31DBC812F4DE446B9D3DC7B1 /* EvilIcons.ttf in Resources */,
|
31DBC812F4DE446B9D3DC7B1 /* EvilIcons.ttf in Resources */,
|
||||||
|
@ -524,7 +423,25 @@
|
||||||
60D08C8669D9491891F0EAE0 /* Octicons.ttf in Resources */,
|
60D08C8669D9491891F0EAE0 /* Octicons.ttf in Resources */,
|
||||||
157D60FEAF7C49948291342D /* SimpleLineIcons.ttf in Resources */,
|
157D60FEAF7C49948291342D /* SimpleLineIcons.ttf in Resources */,
|
||||||
31C2D4A00BF24B9989303435 /* Zocial.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;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
|
|
|
@ -71,12 +71,9 @@
|
||||||
<string>Octicons.ttf</string>
|
<string>Octicons.ttf</string>
|
||||||
<string>SimpleLineIcons.ttf</string>
|
<string>SimpleLineIcons.ttf</string>
|
||||||
<string>Zocial.ttf</string>
|
<string>Zocial.ttf</string>
|
||||||
<<<<<<< HEAD
|
|
||||||
<string>Roboto_medium.ttf</string>
|
<string>Roboto_medium.ttf</string>
|
||||||
<string>Roboto.ttf</string>
|
<string>Roboto.ttf</string>
|
||||||
<string>rubicon-icon-font.ttf</string>
|
<string>rubicon-icon-font.ttf</string>
|
||||||
=======
|
|
||||||
>>>>>>> fixed
|
|
||||||
</array>
|
</array>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|
3
rn-start.fs
Executable file
3
rn-start.fs
Executable file
|
@ -0,0 +1,3 @@
|
||||||
|
#! /usr/bin/fish
|
||||||
|
|
||||||
|
set REACT_DEBUGGER "rndebugger-open --open --port 8081" yarn start
|
|
@ -3,6 +3,7 @@ import {
|
||||||
SET_CREATOR_TEMPLATE,
|
SET_CREATOR_TEMPLATE,
|
||||||
SET_DECK,
|
SET_DECK,
|
||||||
SET_FIELDS,
|
SET_FIELDS,
|
||||||
|
SET_GLOBAL_DEF,
|
||||||
} from '../constants/anki-constants';
|
} from '../constants/anki-constants';
|
||||||
|
|
||||||
export const selectDeck = id => ({
|
export const selectDeck = id => ({
|
||||||
|
@ -21,6 +22,7 @@ export const setCreatorTemplate = template => ({
|
||||||
});
|
});
|
||||||
|
|
||||||
const parseToAnkiFormat = dict => {
|
const parseToAnkiFormat = dict => {
|
||||||
|
console.log('SDFfasdfsadf', dict);
|
||||||
/*
|
/*
|
||||||
*** TEMPLATE ***
|
*** TEMPLATE ***
|
||||||
const modelFields = [
|
const modelFields = [
|
||||||
|
@ -40,10 +42,10 @@ const modelFields = [
|
||||||
const tr1 = dict.compounded[0];
|
const tr1 = dict.compounded[0];
|
||||||
const tr2 = dict.compounded[1] || {};
|
const tr2 = dict.compounded[1] || {};
|
||||||
return [
|
return [
|
||||||
dict.word,
|
dict.word || '',
|
||||||
tr1.pos,
|
tr1.pos || '',
|
||||||
tr1.tr,
|
tr1.tr || '',
|
||||||
tr1.definition,
|
tr1.definition || '',
|
||||||
tr2.pos || '',
|
tr2.pos || '',
|
||||||
tr2.tr || '',
|
tr2.tr || '',
|
||||||
tr2.definition || '',
|
tr2.definition || '',
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import {search} from 'urban-dictionary-client';
|
import {search} from 'urban-dictionary-client';
|
||||||
import {
|
import {
|
||||||
SET_AVAILABLE_API,
|
SET_AVAILABLE_API,
|
||||||
|
SET_LOADING_STATE,
|
||||||
SET_PARSED_DICTIONARY,
|
SET_PARSED_DICTIONARY,
|
||||||
URBAN_DICTIONARY_API,
|
URBAN_DICTIONARY_API,
|
||||||
WORDS_API,
|
WORDS_API,
|
||||||
|
@ -35,6 +36,10 @@ const setDictioanry = dictioanry => ({
|
||||||
type: SET_PARSED_DICTIONARY,
|
type: SET_PARSED_DICTIONARY,
|
||||||
payload: dictioanry,
|
payload: dictioanry,
|
||||||
});
|
});
|
||||||
|
const setLoadingState = status => ({
|
||||||
|
type: SET_LOADING_STATE,
|
||||||
|
payload: status,
|
||||||
|
});
|
||||||
|
|
||||||
export const wordInfo = word => async dispatch => {
|
export const wordInfo = word => async dispatch => {
|
||||||
try {
|
try {
|
||||||
|
@ -49,6 +54,7 @@ export const wordInfo = word => async dispatch => {
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
//function which return universal template for more simple interaction with api
|
//function which return universal template for more simple interaction with api
|
||||||
|
dispatch(setLoadingState(false));
|
||||||
//TODO available dictionary instead api1
|
//TODO available dictionary instead api1
|
||||||
await dispatch(setAvailableApi(api1));
|
await dispatch(setAvailableApi(api1));
|
||||||
const wordDictionary = await createDictionary(api1);
|
const wordDictionary = await createDictionary(api1);
|
||||||
|
|
|
@ -14,7 +14,7 @@ const yDictionary = async (
|
||||||
);
|
);
|
||||||
const json = await res.json();
|
const json = await res.json();
|
||||||
// console.log('JSON', json);
|
// console.log('JSON', json);
|
||||||
return parseResponse(json.def)
|
return parseResponse(json.def);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.log('err in yandex-dictionary.js: ', e);
|
console.log('err in yandex-dictionary.js: ', e);
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,11 +38,14 @@ export const createAnkiLanModel = model => async dispatch => {
|
||||||
await console.log(modelId);
|
await console.log(modelId);
|
||||||
const [, fieldList] = await AnkiDroid.getFieldList(model.name);
|
const [, fieldList] = await AnkiDroid.getFieldList(model.name);
|
||||||
|
|
||||||
sendDataToLocaleStorage({
|
console.log(fieldList, modelId);
|
||||||
|
|
||||||
|
await sendDataToLocaleStorage({
|
||||||
fieldList,
|
fieldList,
|
||||||
modelName: model.name,
|
modelName: model.name,
|
||||||
modelId,
|
modelId,
|
||||||
});
|
});
|
||||||
|
console.log(await getAnkiData());
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log('irror is ghere', err);
|
console.log('irror is ghere', err);
|
||||||
}
|
}
|
||||||
|
@ -52,15 +55,20 @@ const firstNote = (creator, fields, template) =>
|
||||||
creator.addNote(fields, template);
|
creator.addNote(fields, template);
|
||||||
//creator is an object what have to store in locale storage.
|
//creator is an object what have to store in locale storage.
|
||||||
export const addNote = async words => {
|
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 deckId = store.getState().anki.selectedDeck.id;
|
||||||
const modelId = await getAnkiData().modelId;
|
const modelId = await ankiData.modelId;
|
||||||
|
console.log(template, deckId, modelId);
|
||||||
const settings = {
|
const settings = {
|
||||||
deckId,
|
deckId,
|
||||||
modelId,
|
modelId,
|
||||||
};
|
};
|
||||||
const creator = new AnkiDroid(settings);
|
const creator = new AnkiDroid(settings);
|
||||||
|
|
||||||
|
console.log(template);
|
||||||
|
console.log(words);
|
||||||
creator.addNote(words, template);
|
creator.addNote(words, template);
|
||||||
alert('sucssess');
|
alert('sucssess');
|
||||||
};
|
};
|
||||||
|
|
|
@ -12,5 +12,3 @@ export const sendField = field => ({
|
||||||
payload: field.text,
|
payload: field.text,
|
||||||
role: field.role,
|
role: field.role,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
163
src/components/Form/field-deditor.jsx
Normal file
163
src/components/Form/field-deditor.jsx
Normal 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;
|
|
@ -1,56 +1,76 @@
|
||||||
import React, {useState, useEffect, useRef} from 'react';
|
import React, {useEffect, useState} from 'react';
|
||||||
import {connect} from 'react-redux';
|
|
||||||
import TextField from 'react-native-material-textfield/src/components/field';
|
import TextField from 'react-native-material-textfield/src/components/field';
|
||||||
import {StyleSheet, TextInput} from 'react-native';
|
import {ScrollView, StyleSheet} from 'react-native';
|
||||||
import {View, Text, Button, Picker} from 'native-base';
|
import {Picker, Text, View} from 'native-base';
|
||||||
import Icon from 'react-native-vector-icons/FontAwesome5';
|
|
||||||
import IconedButton from '../view/iconed-button.jsx';
|
import IconedButton from '../view/iconed-button.jsx';
|
||||||
import {POS_PICKER} from '../../constants/component-types';
|
import {POS_PICKER} from '../../constants/component-types';
|
||||||
const FieldEditor = props => {
|
import set from '@babel/runtime/helpers/esm/set';
|
||||||
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]);
|
|
||||||
|
|
||||||
const selectValue = selected => {
|
const FieldEditor = props => {
|
||||||
setSelectedValue(selected);
|
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) {
|
if (props.type === POS_PICKER) {
|
||||||
values.forEach((value, id) => {
|
values.forEach((value, id) => {
|
||||||
if (value === selected) props.onSelect(id);
|
if (value === finiteValue) {
|
||||||
|
props.hasChanged(id);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
} else {
|
||||||
|
props.hasChanged(finiteValue);
|
||||||
}
|
}
|
||||||
};
|
}, [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);
|
|
||||||
};
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (props.data.values !== values) {
|
setValues(props.data.values);
|
||||||
setSelectedValue(values[values.length - 1]);
|
setSelectedValue(props.data.values[0]);
|
||||||
}
|
console.log('EXECUTIN');
|
||||||
}, [values]);
|
}, [constantValues]);
|
||||||
|
|
||||||
|
// useEffect(() => {
|
||||||
|
//
|
||||||
|
// if(props.type !== POS_PICKER){
|
||||||
|
// if(constantValues !== props.data.values){
|
||||||
|
// console.log("EXECUTIN")
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }, [constantValues, props.data.values])
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
});
|
|
||||||
const styles = StyleSheet.create({
|
const styles = StyleSheet.create({
|
||||||
wrapper: {},
|
wrapper: {},
|
||||||
inner: {
|
inner: {
|
||||||
|
@ -89,53 +109,74 @@ const FieldEditor = props => {
|
||||||
});
|
});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<View style={styles.wrapper}>
|
<ScrollView keyboardShouldPersistTaps={'handled'}>
|
||||||
<View style={styles.inner}>
|
{props.type === POS_PICKER ? (
|
||||||
<View style={styles.tfWrapper}>
|
<View>
|
||||||
{editing ? (
|
<Text style={styles.pickerLabel}>{props.data.label}</Text>
|
||||||
<TextField
|
<Picker
|
||||||
lineType={'none'}
|
selectedValue={selectedValue}
|
||||||
multiline={true}
|
onValueChange={value => select(value)}>
|
||||||
label={props.data.label}
|
{values.map((value, id) => {
|
||||||
value={userText}
|
return <Picker.Item value={value} label={value} key={id} />;
|
||||||
editable={true}
|
})}
|
||||||
ref={input}
|
</Picker>
|
||||||
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>
|
</View>
|
||||||
{editing ? (
|
) : (
|
||||||
<View style={styles.row}>
|
<View style={styles.wrapper}>
|
||||||
<IconedButton
|
<View style={styles.inner}>
|
||||||
icon="caret-down"
|
<View style={styles.tfWrapper}>
|
||||||
onPress={() => {
|
{editing ? (
|
||||||
setEditing(!editing);
|
<View>
|
||||||
}}
|
<TextField
|
||||||
/>
|
lineType={'none'}
|
||||||
<IconedButton icon="check" onPress={confirmTyped} />
|
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>
|
</View>
|
||||||
) : (
|
<View style={styles.hr} />
|
||||||
<IconedButton
|
</View>
|
||||||
icon="pen"
|
)}
|
||||||
onPress={() => {
|
</ScrollView>
|
||||||
setEditing(!editing);
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
)}
|
|
||||||
</View>
|
|
||||||
<View style={styles.hr} />
|
|
||||||
</View>
|
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
export default connect()(FieldEditor);
|
export default FieldEditor;
|
||||||
|
|
|
@ -12,13 +12,17 @@ import {
|
||||||
DEF_LIST2,
|
DEF_LIST2,
|
||||||
EXAMPLES,
|
EXAMPLES,
|
||||||
PRONUNCIATION,
|
PRONUNCIATION,
|
||||||
SOUND,
|
SOUND, WORD,
|
||||||
} from '../../constants/anki-constants';
|
} from '../../constants/anki-constants';
|
||||||
|
import {sendField} from '../../actions/form-actions';
|
||||||
|
import {addNote} from "../../actions/createAnkiLanModel";
|
||||||
|
|
||||||
const FieldList = props => {
|
const FieldList = props => {
|
||||||
const [pronunciation, setPronunciation] = useState();
|
const [pronunciation, setPronunciation] = useState(
|
||||||
|
props.response.pronunciation,
|
||||||
|
);
|
||||||
const [sound, setSound] = useState();
|
const [sound, setSound] = useState();
|
||||||
const [examples, setExamples] = useState(props.response.examples);
|
const [examples, setExamples] = useState();
|
||||||
const [completedFields, setCompletedFields] = useState({
|
const [completedFields, setCompletedFields] = useState({
|
||||||
word: props.word,
|
word: props.word,
|
||||||
compounded: [{pos: '', tr: '', definition: ''}, {}],
|
compounded: [{pos: '', tr: '', definition: ''}, {}],
|
||||||
|
@ -26,43 +30,99 @@ const FieldList = props => {
|
||||||
pronunciation: '',
|
pronunciation: '',
|
||||||
sound: '',
|
sound: '',
|
||||||
});
|
});
|
||||||
|
useEffect(() => {
|
||||||
|
if (
|
||||||
|
props.response.sound &&
|
||||||
|
props.response.pronunciation &&
|
||||||
|
props.response.compounded &&
|
||||||
|
props.response.examples
|
||||||
|
) {
|
||||||
|
// console.log("LOOOADED")
|
||||||
|
} else {
|
||||||
|
}
|
||||||
|
});
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setSound(props.response.sound);
|
setSound(props.response.sound);
|
||||||
setPronunciation(props.response.pronunciation);
|
setPronunciation(props.response.pronunciation);
|
||||||
setExamples(props.response.examples);
|
setExamples(props.response.examples);
|
||||||
}, [props]);
|
}, [props]);
|
||||||
|
const [loadingState, setLoadingState] = useState(false);
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
console.group('STATE', examples, pronunciation, sound);
|
console.log('STATE', examples, pronunciation, sound);
|
||||||
|
if (examples && pronunciation && sound) {
|
||||||
|
setLoadingState(true);
|
||||||
|
} else {
|
||||||
|
setLoadingState(false);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
const submit = () => {
|
const submit = () => {
|
||||||
setFields(completedFields);
|
|
||||||
|
props.setFields(props.fields);
|
||||||
};
|
};
|
||||||
return (
|
return (
|
||||||
<ScrollView style={{height: '100%'}}>
|
<ScrollView keyboardShouldPersistTaps={'handled'} style={{height: '100%'}}>
|
||||||
<PickerList labelNum={1} id={0} role={DEF_LIST1} />
|
{loadingState && props.loadingState ? (
|
||||||
<PickerList labelNum={2} id={1} role={DEF_LIST2} />
|
<View>
|
||||||
<FieldEditor
|
<PickerList labelNum={1} id={0} role={DEF_LIST1} />
|
||||||
role={EXAMPLES}
|
{/*<PickerList labelNum={2} id={1} role={DEF_LIST2} />*/}
|
||||||
data={{
|
<PickerList
|
||||||
label: 'Usage example',
|
labelNum={2}
|
||||||
values: examples || ['can not find the example'],
|
id={props.response.compounded.length >= 2 ? 1 : 0}
|
||||||
}}
|
role={DEF_LIST2}
|
||||||
/>
|
/>
|
||||||
<TextInput value={sound} label={'Sound'} role={SOUND} />
|
<FieldEditor
|
||||||
<TextInput
|
hasChanged={c =>
|
||||||
value={pronunciation}
|
props.sendField({
|
||||||
label={'Transcription'}
|
text: c,
|
||||||
role={PRONUNCIATION}
|
role: EXAMPLES,
|
||||||
/>
|
})
|
||||||
<Button style={{marginTop: 10}} onPress={submit}>
|
}
|
||||||
<Text>Submit</Text>
|
role={EXAMPLES}
|
||||||
<Icon name={'send'} />
|
data={{
|
||||||
</Button>
|
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>
|
</ScrollView>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
export default connect(
|
||||||
export default connect(state => ({
|
state => ({
|
||||||
response: state.api.parsedDictionary,
|
response: state.api.parsedDictionary,
|
||||||
word: state.api.word,
|
word: state.api.availableApi.word,
|
||||||
}))(FieldList);
|
loadingState: state.api.apiIsLoaded,
|
||||||
|
fields: state.anki.currentFields
|
||||||
|
}),
|
||||||
|
{
|
||||||
|
sendField,
|
||||||
|
setFields
|
||||||
|
},
|
||||||
|
)(FieldList);
|
||||||
|
|
|
@ -3,6 +3,8 @@ import {View} from 'native-base';
|
||||||
import {connect} from 'react-redux';
|
import {connect} from 'react-redux';
|
||||||
import PosPicker from './pos-picker';
|
import PosPicker from './pos-picker';
|
||||||
import FieldEditor from './field-editor';
|
import FieldEditor from './field-editor';
|
||||||
|
import {setDef} from '../../actions/anki-set-actions';
|
||||||
|
import {sendField} from '../../actions/form-actions';
|
||||||
|
|
||||||
/*
|
/*
|
||||||
****************** props:*****************
|
****************** props:*****************
|
||||||
|
@ -11,47 +13,94 @@ import FieldEditor from './field-editor';
|
||||||
* */
|
* */
|
||||||
const PickerList = props => {
|
const PickerList = props => {
|
||||||
const [data, setData] = useState(props.data[props.id]);
|
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(() => {
|
useEffect(() => {
|
||||||
setData(props.data[props.id]);
|
setData(props.data[props.id]);
|
||||||
console.log(`
|
setTimeout(() => {
|
||||||
|
selectDef(0);
|
||||||
|
}, 0);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
`,props.data[props.id]);
|
|
||||||
}, [props]);
|
}, [props]);
|
||||||
useEffect(() => {
|
|
||||||
console.log('data', props.data[props.id]);
|
|
||||||
});
|
|
||||||
const selectDef = 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 (
|
return (
|
||||||
<View>
|
<View>
|
||||||
<PosPicker
|
<PosPicker
|
||||||
labelNum={props.labelNum}
|
labelNum={props.labelNum}
|
||||||
onSelect={id => selectDef(id)}
|
defaultId={props.id}
|
||||||
// getId={id => setId(id)}
|
onSelect={id => selectDef(id | props.id)}
|
||||||
/>
|
/>
|
||||||
<FieldEditor
|
<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
|
<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>
|
</View>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
export default connect(state => ({
|
export default connect(
|
||||||
data: state.api.parsedDictionary.compounded,
|
state => ({
|
||||||
}))(PickerList);
|
data: state.api.parsedDictionary.compounded,
|
||||||
|
word: state.api.availableApi.word,
|
||||||
|
}),
|
||||||
|
{
|
||||||
|
setDef,
|
||||||
|
sendField,
|
||||||
|
},
|
||||||
|
)(PickerList);
|
||||||
|
|
|
@ -22,8 +22,9 @@ const PosPicker = props => {
|
||||||
label: `Part of speech ${props.labelNum} `,
|
label: `Part of speech ${props.labelNum} `,
|
||||||
values: poses,
|
values: poses,
|
||||||
}}
|
}}
|
||||||
|
id={props.defaultId}
|
||||||
type={POS_PICKER}
|
type={POS_PICKER}
|
||||||
onSelect={(value) => props.onSelect(value)}
|
hasChanged={value => props.onSelect(value)}
|
||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
<View />
|
<View />
|
||||||
|
|
|
@ -9,5 +9,4 @@ const SubmitButton = props => {
|
||||||
</Button>
|
</Button>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
export default SubmitButton
|
export default SubmitButton;
|
||||||
|
|
||||||
|
|
|
@ -3,27 +3,20 @@ import {connect} from 'react-redux';
|
||||||
import {TextField} from 'react-native-material-textfield';
|
import {TextField} from 'react-native-material-textfield';
|
||||||
import {View} from 'native-base';
|
import {View} from 'native-base';
|
||||||
import {sendField} from '../../actions/form-actions';
|
import {sendField} from '../../actions/form-actions';
|
||||||
|
import FieldEditor from './field-editor';
|
||||||
|
|
||||||
const TextInput = props => {
|
const TextInput = props => {
|
||||||
const input = useRef();
|
|
||||||
const [text, setText] = useState(props.value);
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setText(props.value);
|
// console.log(props.value)
|
||||||
input.current.setValue(props.value);
|
});
|
||||||
}, [props, props.value]);
|
|
||||||
const typing = text => {
|
|
||||||
setText(text)
|
|
||||||
props.sendField({text, role: props.role})
|
|
||||||
}
|
|
||||||
return (
|
return (
|
||||||
<View >
|
<View>
|
||||||
<TextField
|
<FieldEditor
|
||||||
value={props.value}
|
hasChanged={c => true}
|
||||||
label={props.label}
|
data={{
|
||||||
editable={true}
|
values: [props.value],
|
||||||
onChangeText={text => typing(text) }
|
label: props.label,
|
||||||
ref={input}
|
}}
|
||||||
lineType={'none'}
|
|
||||||
/>
|
/>
|
||||||
<View
|
<View
|
||||||
style={{
|
style={{
|
||||||
|
@ -35,6 +28,9 @@ const TextInput = props => {
|
||||||
</View>
|
</View>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
export default connect(null, {
|
export default connect(
|
||||||
sendField
|
null,
|
||||||
})(TextInput);
|
{
|
||||||
|
sendField,
|
||||||
|
},
|
||||||
|
)(TextInput);
|
||||||
|
|
|
@ -8,51 +8,48 @@ 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';
|
||||||
import {
|
import {
|
||||||
checkAnkiLanModelForExisting,
|
checkAnkiLanModelForExisting,
|
||||||
getDeckList,
|
getDeckList,
|
||||||
getModelList,
|
getModelList,
|
||||||
getSavedData
|
getSavedData,
|
||||||
} from '../actions/anki-get-actions';
|
} from '../actions/anki-get-actions';
|
||||||
|
|
||||||
const StartScreen = props => {
|
const StartScreen = props => {
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
props.getDeckList();
|
props.getDeckList();
|
||||||
props.getModelList();
|
props.getModelList();
|
||||||
props.getSavedData();
|
props.getSavedData();
|
||||||
}, []);
|
}, []);
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
props.checkAnkiLanModelForExisting(
|
props.checkAnkiLanModelForExisting(props.modelName, props.modelList);
|
||||||
props.modelName,
|
});
|
||||||
props.modelList,
|
return (
|
||||||
);
|
<ScrollView keyboardShouldPersistTaps="handled">
|
||||||
});
|
{props.ankiAvailable ? (
|
||||||
return (
|
props.ankiLanModelExists ? (
|
||||||
<ScrollView keyboardShouldPersistTaps="handled">
|
<AddWordForm />
|
||||||
{props.ankiAvailable ? (
|
) : (
|
||||||
props.ankiLanModelExists ? (
|
<AnkiTemplate />
|
||||||
<AddWordForm />
|
)
|
||||||
) : (
|
) : (
|
||||||
<AnkiTemplate />
|
<Permissions />
|
||||||
)
|
)}
|
||||||
) : (
|
</ScrollView>
|
||||||
<Permissions />
|
);
|
||||||
)}
|
|
||||||
</ScrollView>
|
|
||||||
);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export default connect(
|
export default connect(
|
||||||
state => ({
|
state => ({
|
||||||
ankiAvailable: state.anki.appHasAccess,
|
ankiAvailable: state.anki.appHasAccess,
|
||||||
ankiLanModelExists: state.anki.ankiLanModelIsAlreadyExists,
|
ankiLanModelExists: state.anki.ankiLanModelIsAlreadyExists,
|
||||||
modelName: state.anki.ankiLanModelName,
|
modelName: state.anki.ankiLanModelName,
|
||||||
modelList: state.anki.modelList,
|
modelList: state.anki.modelList,
|
||||||
creator: state.anki.noteCreator,
|
creator: state.anki.noteCreator,
|
||||||
}),
|
}),
|
||||||
{
|
{
|
||||||
checkAnkiLanModelForExisting,
|
checkAnkiLanModelForExisting,
|
||||||
getDeckList,
|
getDeckList,
|
||||||
getModelList,
|
getModelList,
|
||||||
getSavedData
|
getSavedData,
|
||||||
},
|
},
|
||||||
)(StartScreen);
|
)(StartScreen);
|
||||||
|
|
|
@ -5,15 +5,18 @@ import {Form, Container, Item} from 'native-base';
|
||||||
import {checkAnkiLanModelForExisting} from '../actions/anki-get-actions';
|
import {checkAnkiLanModelForExisting} from '../actions/anki-get-actions';
|
||||||
import InputWord from './view/translatable-word';
|
import InputWord from './view/translatable-word';
|
||||||
import SubmitButton from './Form/submit-button';
|
import SubmitButton from './Form/submit-button';
|
||||||
import {ScrollView} from 'react-native'
|
import {ScrollView} from 'react-native';
|
||||||
import {wordInfo} from '../actions/api/dictionary';
|
import {wordInfo} from '../actions/api/dictionary';
|
||||||
import FieldEditor from './Form/field-editor';
|
import FieldEditor from './Form/field-editor';
|
||||||
import FieldList from './Form/field-list';
|
import FieldList from './Form/field-list';
|
||||||
|
import {WORD} from "../constants/anki-constants";
|
||||||
|
import {sendField} from "../actions/form-actions";
|
||||||
|
|
||||||
const AnkiForm = props => {
|
const AnkiForm = props => {
|
||||||
const [target, setTarget] = useState('');
|
const [target, setTarget] = useState('');
|
||||||
const [fields, setFields] = useState({});
|
const [fields, setFields] = useState({});
|
||||||
const [submitted, setSubmitted] = useState(false);
|
const [submitted, setSubmitted] = useState(false);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
// props.wordInfo('Urge');
|
// props.wordInfo('Urge');
|
||||||
// props.wordInfo('Maze');
|
// props.wordInfo('Maze');
|
||||||
|
@ -29,6 +32,11 @@ const AnkiForm = props => {
|
||||||
const submit = () => {
|
const submit = () => {
|
||||||
props.wordInfo(target);
|
props.wordInfo(target);
|
||||||
setSubmitted(true);
|
setSubmitted(true);
|
||||||
|
props.sendField({
|
||||||
|
text: target,
|
||||||
|
role: WORD
|
||||||
|
})
|
||||||
|
// console.log(props.available, props.data)
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@ -36,11 +44,7 @@ const AnkiForm = props => {
|
||||||
<Form>
|
<Form>
|
||||||
<DeckPicker />
|
<DeckPicker />
|
||||||
<InputWord word={getWord} onSubmit={submit} />
|
<InputWord word={getWord} onSubmit={submit} />
|
||||||
{(submitted && props.available) ? (
|
{submitted ? <FieldList /> : <SubmitButton onSubmit={submit} />}
|
||||||
<FieldList />
|
|
||||||
) : (
|
|
||||||
<SubmitButton onSubmit={submit} />
|
|
||||||
)}
|
|
||||||
</Form>
|
</Form>
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
);
|
);
|
||||||
|
@ -53,10 +57,12 @@ export default connect(
|
||||||
modelList: state.anki.modelList,
|
modelList: state.anki.modelList,
|
||||||
creator: state.anki.noteCreator,
|
creator: state.anki.noteCreator,
|
||||||
data: state,
|
data: state,
|
||||||
available: state.api.apiIsLoaded,
|
word: state.api.availableApi.word,
|
||||||
|
available: state.api.apiIsLoaded,
|
||||||
}),
|
}),
|
||||||
{
|
{
|
||||||
checkAnkiLanModelForExisting,
|
checkAnkiLanModelForExisting,
|
||||||
wordInfo,
|
wordInfo,
|
||||||
|
sendField
|
||||||
},
|
},
|
||||||
)(AnkiForm);
|
)(AnkiForm);
|
||||||
|
|
|
@ -1,27 +1,38 @@
|
||||||
import React from 'react'
|
import React from 'react';
|
||||||
import {Text, Button,Grid, Container} from 'native-base';
|
import {Text, Button, Grid, Container} from 'native-base';
|
||||||
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 => {
|
||||||
return(
|
return (
|
||||||
<Grid style={{display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}>
|
<Grid
|
||||||
<Text>You have no AnkiLan card template</Text>
|
style={{
|
||||||
<Button onPress={() => props.createAnkiLanModel({
|
display: 'flex',
|
||||||
name: props.modelName,
|
alignItems: 'center',
|
||||||
list: props.modelList,
|
justifyContent: 'space-between',
|
||||||
...props.currentDeck
|
}}>
|
||||||
})}><Text>Create</Text></Button>
|
<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,
|
modelName: state.anki.ankiLanModelName,
|
||||||
currentDeck: state.anki.selectedDeck,
|
currentDeck: state.anki.selectedDeck,
|
||||||
modelList: state.anki.modelList,
|
modelList: state.anki.modelList,
|
||||||
}), {
|
}),
|
||||||
|
{
|
||||||
createAnkiLanModel,
|
createAnkiLanModel,
|
||||||
})(AnkiTemplate)
|
},
|
||||||
|
)(AnkiTemplate);
|
||||||
|
|
|
@ -1,32 +1,37 @@
|
||||||
import React, {useEffect, useState} from 'react'
|
import React, {useEffect, useState} from 'react';
|
||||||
import {connect} from 'react-redux'
|
import {connect} from 'react-redux';
|
||||||
import {Picker, Text} from 'native-base'
|
import {Picker, Text} from 'native-base';
|
||||||
import { getDeckList, getModelList} from '../../actions/anki-get-actions';
|
import {getDeckList, getModelList} from '../../actions/anki-get-actions';
|
||||||
import {selectDeck} from '../../actions/anki-set-actions';
|
import {selectDeck} from '../../actions/anki-set-actions';
|
||||||
|
|
||||||
const DeckPicker = props => {
|
const DeckPicker = props => {
|
||||||
const [deckList, setDeckList] = useState([{name: "no decks", id: 0}]);
|
const [deckList, setDeckList] = useState([{name: 'no decks', id: 0}]);
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
props.getDeckList()
|
props.getDeckList();
|
||||||
props.getModelList()
|
props.getModelList();
|
||||||
}, [])
|
}, []);
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setDeckList(props.decks)
|
setDeckList(props.decks);
|
||||||
}, [props.decks])
|
}, [props.decks]);
|
||||||
return (
|
return (
|
||||||
<Picker onValueChange={id => props.selectDeck({id, deck: deckList[id]})} selectedValue={props.selectedDeck.id}>
|
<Picker
|
||||||
{deckList.map((deck, index) => (
|
onValueChange={id => props.selectDeck({id, deck: deckList[id]})}
|
||||||
<Picker.Item label={deck.name} key={deck.id} value={index}/>
|
selectedValue={props.selectedDeck.id}>
|
||||||
))}
|
{deckList.map((deck, index) => (
|
||||||
</Picker>
|
<Picker.Item label={deck.name} key={deck.id} value={index} />
|
||||||
)
|
))}
|
||||||
}
|
</Picker>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
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,
|
||||||
getModelList
|
getModelList,
|
||||||
})(DeckPicker)
|
},
|
||||||
|
)(DeckPicker);
|
||||||
|
|
|
@ -6,21 +6,21 @@ import {View, Text, Button, Picker} from 'native-base';
|
||||||
import Icon from 'react-native-vector-icons/FontAwesome5';
|
import Icon from 'react-native-vector-icons/FontAwesome5';
|
||||||
|
|
||||||
const IconedButton = props => {
|
const IconedButton = props => {
|
||||||
return (
|
return (
|
||||||
<Button bordered style={styles.button} onPress={props.onPress}>
|
<Button bordered style={styles.button} onPress={props.onPress}>
|
||||||
<Icon name={props.icon} size={20} color={'blue'} />
|
<Icon name={props.icon} size={20} color={'blue'} />
|
||||||
</Button>
|
</Button>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
const styles = StyleSheet.create({
|
const styles = StyleSheet.create({
|
||||||
button: {
|
button: {
|
||||||
width: 40,
|
width: 40,
|
||||||
height: 40,
|
height: 40,
|
||||||
display: 'flex',
|
display: 'flex',
|
||||||
justifyContent: 'center',
|
justifyContent: 'center',
|
||||||
alignItems: 'center',
|
alignItems: 'center',
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
export default IconedButton;
|
export default IconedButton;
|
||||||
|
|
|
@ -3,9 +3,18 @@ import {connect} from 'react-redux';
|
||||||
import {TextField} from 'react-native-material-textfield';
|
import {TextField} from 'react-native-material-textfield';
|
||||||
|
|
||||||
const InputWord = props => {
|
const InputWord = props => {
|
||||||
const sendWord = (word) => {
|
const sendWord = word => {
|
||||||
props.word(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);
|
||||||
|
|
|
@ -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_CREATOR_TEMPLATE = 'SET_CREATOR_TEMPLATE';
|
||||||
export const SET_FIELDS = 'SET_FIELDS';
|
export const SET_FIELDS = 'SET_FIELDS';
|
||||||
export const SET_ANKI_DATA = 'SET_ANKI_DATA';
|
export const SET_ANKI_DATA = 'SET_ANKI_DATA';
|
||||||
|
export const SET_GLOBAL_DEF = 'SET_GLOBAL_DEF';
|
||||||
//Anki ui actions
|
//Anki ui actions
|
||||||
export const SHOW_FIELDS = 'SHOW_FIELDS';
|
export const SHOW_FIELDS = 'SHOW_FIELDS';
|
||||||
// Anki check actions
|
// Anki check actions
|
||||||
|
@ -38,4 +39,4 @@ export const EXAMPLES = 'EXAMPLES';
|
||||||
export const PRONUNCIATION = 'PRONUNCIATION';
|
export const PRONUNCIATION = 'PRONUNCIATION';
|
||||||
export const DEF_LIST1 = 'DEF_LIST1';
|
export const DEF_LIST1 = 'DEF_LIST1';
|
||||||
export const DEF_LIST2 = 'DEF_LIST2';
|
export const DEF_LIST2 = 'DEF_LIST2';
|
||||||
export const WORD = 'WORD'
|
export const WORD = 'WORD';
|
||||||
|
|
|
@ -6,3 +6,4 @@ export const URBAN_DICTIONARY_API = 'URBAN_DICTIONARY_API';
|
||||||
export const SET_ALL_FIELDS = 'SET_ALL_FIELDS';
|
export const SET_ALL_FIELDS = 'SET_ALL_FIELDS';
|
||||||
|
|
||||||
export const SET_PARSED_DICTIONARY = 'SET_PARSED_DICTIONARY';
|
export const SET_PARSED_DICTIONARY = 'SET_PARSED_DICTIONARY';
|
||||||
|
export const SET_LOADING_STATE = 'SET_LOADING_STATE';
|
||||||
|
|
|
@ -28,7 +28,7 @@ const initialState = {
|
||||||
mainFieldIsAvailable: false,
|
mainFieldIsAvailable: false,
|
||||||
fieldList: [],
|
fieldList: [],
|
||||||
ankiLanModelIsAlreadyExists: false,
|
ankiLanModelIsAlreadyExists: false,
|
||||||
ankiLanModelName: 'develop_final',
|
ankiLanModelName: 'develop_final_maybe_maybe_maybe',
|
||||||
noteCreator: {},
|
noteCreator: {},
|
||||||
noteTemplate: [],
|
noteTemplate: [],
|
||||||
currentFields: {
|
currentFields: {
|
||||||
|
@ -93,11 +93,13 @@ const ankiReducer = (state = initialState, action) => {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
case DEF_LIST1: {
|
case DEF_LIST1: {
|
||||||
|
console.log(action.payload);
|
||||||
|
console.log(action.role);
|
||||||
return {
|
return {
|
||||||
...state,
|
...state,
|
||||||
currentFields: {
|
currentFields: {
|
||||||
...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,
|
...state,
|
||||||
currentFields: {
|
currentFields: {
|
||||||
...state.currentFields,
|
...state.currentFields,
|
||||||
compounded: [, state.compounded[0], action.payload],
|
compounded: [state.currentFields.compounded[0], action.payload],
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
case WORD: {
|
case WORD: {
|
||||||
|
alert(action.payload);
|
||||||
return {
|
return {
|
||||||
...state,
|
...state,
|
||||||
currentFields: {...state.currentFields, word: action.payload},
|
currentFields: {...state.currentFields, word: action.payload},
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
import {
|
import {
|
||||||
SET_ALL_FIELDS,
|
SET_ALL_FIELDS,
|
||||||
SET_AVAILABLE_API,
|
SET_AVAILABLE_API,
|
||||||
|
SET_LOADING_STATE,
|
||||||
SET_PARSED_DICTIONARY,
|
SET_PARSED_DICTIONARY,
|
||||||
SET_YANDEX_DICTIONARY_RESPONSE,
|
SET_YANDEX_DICTIONARY_RESPONSE,
|
||||||
} from '../constants/api-constants';
|
} from '../constants/api-constants';
|
||||||
import {SET_FIELDS} from '../constants/anki-constants';
|
import {SET_FIELDS} from '../constants/anki-constants';
|
||||||
|
import {addNote} from '../actions/createAnkiLanModel';
|
||||||
|
|
||||||
const initialState = {
|
const initialState = {
|
||||||
word: '',
|
word: '',
|
||||||
|
@ -36,9 +38,15 @@ const apiReducer = (state = initialState, action) => {
|
||||||
return {
|
return {
|
||||||
...state,
|
...state,
|
||||||
parsedDictionary: action.payload,
|
parsedDictionary: action.payload,
|
||||||
apiIsLoaded: true,
|
apiIsLoaded: true,
|
||||||
|
};
|
||||||
|
case SET_LOADING_STATE:
|
||||||
|
return {
|
||||||
|
...state,
|
||||||
|
apiIsLoaded: action.payload,
|
||||||
};
|
};
|
||||||
case SET_FIELDS:
|
case SET_FIELDS:
|
||||||
|
addNote(action.payload);
|
||||||
return {
|
return {
|
||||||
...state,
|
...state,
|
||||||
availableFields: action.payload,
|
availableFields: action.payload,
|
||||||
|
|
5
tools-start.fs
Executable file
5
tools-start.fs
Executable file
|
@ -0,0 +1,5 @@
|
||||||
|
watchman watch-del-all
|
||||||
|
watchman shutdown-server
|
||||||
|
react-native run-android
|
||||||
|
react-native-debugger &
|
||||||
|
scrcpy &
|
Loading…
Reference in a new issue