diff --git a/package-lock.json b/package-lock.json
index bd504906f..53bfba7f9 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -2426,7 +2426,7 @@
},
"browserify-aes": {
"version": "1.2.0",
- "resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
+ "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
"integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
"requires": {
"buffer-xor": "^1.0.3",
@@ -2979,7 +2979,7 @@
},
"create-hash": {
"version": "1.2.0",
- "resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
+ "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
"integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
"requires": {
"cipher-base": "^1.0.1",
@@ -2991,7 +2991,7 @@
},
"create-hmac": {
"version": "1.1.7",
- "resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
+ "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
"integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
"requires": {
"cipher-base": "^1.0.3",
@@ -7710,6 +7710,15 @@
"graceful-fs": "^4.1.2",
"jsonfile": "^2.1.0"
}
+ },
+ "react-native-keyboard-aware-scroll-view": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/react-native-keyboard-aware-scroll-view/-/react-native-keyboard-aware-scroll-view-0.5.0.tgz",
+ "integrity": "sha512-nGXsACZBCiWuwRrZy+UjiSJqb4tZ/6ePHUSY8M+09g4VfNm/ogvvWpwBa6B999NZ6DwhZTKBjVWeZxX9XG8bbQ==",
+ "requires": {
+ "prop-types": "^15.6.0",
+ "react-native-iphone-x-helper": "^1.0.1"
+ }
}
}
},
@@ -8867,17 +8876,17 @@
}
},
"react-native-iphone-x-helper": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/react-native-iphone-x-helper/-/react-native-iphone-x-helper-1.0.3.tgz",
- "integrity": "sha512-QHzpx4fv9u30VVU1DMgotiZsUB+m4BRjypca2rOczyj3cZBny5I+QDplrpFIBhzsa1iADNkziWa7kInzmKs00Q=="
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/react-native-iphone-x-helper/-/react-native-iphone-x-helper-1.2.0.tgz",
+ "integrity": "sha512-xIeTo4s77wwKgBZLVRIZC9tM9/PkXS46Ul76NXmvmixEb3ZwqGdQesR3zRiLMOoIdfOURB6N9bba9po7+x9Bag=="
},
"react-native-keyboard-aware-scroll-view": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/react-native-keyboard-aware-scroll-view/-/react-native-keyboard-aware-scroll-view-0.5.0.tgz",
- "integrity": "sha512-nGXsACZBCiWuwRrZy+UjiSJqb4tZ/6ePHUSY8M+09g4VfNm/ogvvWpwBa6B999NZ6DwhZTKBjVWeZxX9XG8bbQ==",
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/react-native-keyboard-aware-scroll-view/-/react-native-keyboard-aware-scroll-view-0.7.2.tgz",
+ "integrity": "sha512-FCVKAmM5jHwbWZFW/zUOhid18OoSGcbyx2jGk+q6eVjjtj+RPomeqX0aAHf2ALXYJ1BuC5+OtXhFA/hp8ombcQ==",
"requires": {
- "prop-types": "^15.6.0",
- "react-native-iphone-x-helper": "^1.0.1"
+ "prop-types": "^15.6.2",
+ "react-native-iphone-x-helper": "^1.0.3"
}
},
"react-native-lightbox": {
@@ -8914,6 +8923,14 @@
"react-native-animatable": "^1.2.4"
}
},
+ "react-native-modal-dropdown": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/react-native-modal-dropdown/-/react-native-modal-dropdown-0.6.2.tgz",
+ "integrity": "sha512-1jzByA+ME+q0mZJ2rZrLsf6jVwJhNxNHdg7I50xYZ9oYJsmmKwF9r/ks95tZxxks4Zvd7/FnaveNtyd+uevXAw==",
+ "requires": {
+ "prop-types": "^15.6.0"
+ }
+ },
"react-native-modal-popover": {
"version": "0.0.10",
"resolved": "https://registry.npmjs.org/react-native-modal-popover/-/react-native-modal-popover-0.0.10.tgz",
@@ -8956,14 +8973,6 @@
"prop-types": "^15.5.10"
}
},
- "react-native-theming": {
- "version": "1.0.16",
- "resolved": "https://registry.npmjs.org/react-native-theming/-/react-native-theming-1.0.16.tgz",
- "integrity": "sha512-f8P7F3yKW9i+PmsmZo98V933Ggsu6YpsBw8pvNEAOENnNqbFmeDL6K+89F0WmkpF6bSs/qqSbyGUWKvCgNhBkw==",
- "requires": {
- "prop-types": "^15.6.0"
- }
- },
"react-native-vector-icons": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/react-native-vector-icons/-/react-native-vector-icons-4.6.0.tgz",
@@ -9915,7 +9924,7 @@
},
"sha.js": {
"version": "2.4.11",
- "resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
+ "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
"integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
"requires": {
"inherits": "^2.0.1",
diff --git a/package.json b/package.json
index 319c20899..d4ac2ccb1 100644
--- a/package.json
+++ b/package.json
@@ -25,13 +25,14 @@
"react-native-extended-stylesheet": "^0.10.0",
"react-native-fast-image": "^4.0.14",
"react-native-html-renderer": "^1.0.0",
+ "react-native-keyboard-aware-scroll-view": "^0.7.2",
"react-native-markdown-editor": "^1.0.1",
"react-native-modal": "^6.5.0",
+ "react-native-modal-dropdown": "^0.6.2",
"react-native-modal-popover": "0.0.10",
"react-native-navigation": "^2.0.2519",
"react-native-restart": "0.0.6",
"react-native-slider": "^0.11.0",
- "react-native-theming": "^1.0.16",
"react-native-vector-icons": "^4.6.0",
"react-redux": "^5.0.7",
"realm": "^2.15.3",
diff --git a/src/_EXAMPLES FOR DEVELOPERS/styles/example.styles.js b/src/_EXAMPLES FOR DEVELOPER/actions/.gitkeep
similarity index 100%
rename from src/_EXAMPLES FOR DEVELOPERS/styles/example.styles.js
rename to src/_EXAMPLES FOR DEVELOPER/actions/.gitkeep
diff --git a/src/_EXAMPLES FOR DEVELOPER/components/statefull/container/exampleContainer.js b/src/_EXAMPLES FOR DEVELOPER/components/statefull/container/exampleContainer.js
new file mode 100644
index 000000000..de63d9b50
--- /dev/null
+++ b/src/_EXAMPLES FOR DEVELOPER/components/statefull/container/exampleContainer.js
@@ -0,0 +1,43 @@
+import React, { Component } from "react";
+import { connect } from "react-redux";
+
+// Services and Actions
+
+// Middleware
+
+// Constants
+
+// Utilities
+
+// Component
+import { ExampleView } from "../";
+
+/*
+* Props Name Description Value
+*@props --> props name here description here Value Type Here
+*
+*/
+
+class ExampleContainer extends Component {
+ constructor(props) {
+ super(props);
+ this.state = {};
+ }
+
+ // Component Life Cycle Functions
+
+ // Component Functions
+
+ render() {
+ // eslint-disable-next-line
+ const {} = this.props;
+
+ return ;
+ }
+}
+
+const mapStateToProps = state => ({
+ user: state.user.user,
+});
+
+export default connect(mapStateToProps)(ExampleContainer);
diff --git a/src/_EXAMPLES FOR DEVELOPER/components/statefull/index.js b/src/_EXAMPLES FOR DEVELOPER/components/statefull/index.js
new file mode 100644
index 000000000..d1e9460be
--- /dev/null
+++ b/src/_EXAMPLES FOR DEVELOPER/components/statefull/index.js
@@ -0,0 +1,5 @@
+import ExampleView from "./view/exampleView";
+import ExampleContainer from "./container/exampleContainer";
+
+export { ExampleView, ExampleContainer };
+export default ExampleContainer;
diff --git a/src/_EXAMPLES FOR DEVELOPER/components/statefull/view/exampleStyles.js b/src/_EXAMPLES FOR DEVELOPER/components/statefull/view/exampleStyles.js
new file mode 100644
index 000000000..15460415e
--- /dev/null
+++ b/src/_EXAMPLES FOR DEVELOPER/components/statefull/view/exampleStyles.js
@@ -0,0 +1,7 @@
+import EStyleSheet from "react-native-extended-stylesheet";
+
+export default EStyleSheet.create({
+ styleName: {
+ // TODO: If we need default style. We can put there.
+ },
+});
diff --git a/src/_EXAMPLES FOR DEVELOPERS/componentsScreens/example/screen/exampleScreen.js b/src/_EXAMPLES FOR DEVELOPER/components/statefull/view/exampleView.js
similarity index 72%
rename from src/_EXAMPLES FOR DEVELOPERS/componentsScreens/example/screen/exampleScreen.js
rename to src/_EXAMPLES FOR DEVELOPER/components/statefull/view/exampleView.js
index fc96cd237..ac33f46a1 100644
--- a/src/_EXAMPLES FOR DEVELOPERS/componentsScreens/example/screen/exampleScreen.js
+++ b/src/_EXAMPLES FOR DEVELOPER/components/statefull/view/exampleView.js
@@ -11,11 +11,10 @@ import styles from "./_styles";
class ExampleView extends Component {
/* Props
- * ------------------------------------------------ TODO: Fill fallowlines
- * @prop { type } name - Description.
- * @prop { type } name - Description.
- *
+ * ------------------------------------------------
+ * @prop { type } name - Description....
*/
+
constructor(props) {
super(props);
this.state = {};
diff --git a/src/_EXAMPLES FOR DEVELOPER/components/stateless/exampleStyles.js b/src/_EXAMPLES FOR DEVELOPER/components/stateless/exampleStyles.js
new file mode 100644
index 000000000..15460415e
--- /dev/null
+++ b/src/_EXAMPLES FOR DEVELOPER/components/stateless/exampleStyles.js
@@ -0,0 +1,7 @@
+import EStyleSheet from "react-native-extended-stylesheet";
+
+export default EStyleSheet.create({
+ styleName: {
+ // TODO: If we need default style. We can put there.
+ },
+});
diff --git a/src/_EXAMPLES FOR DEVELOPER/components/stateless/exampleView.js b/src/_EXAMPLES FOR DEVELOPER/components/stateless/exampleView.js
new file mode 100644
index 000000000..0d72efe50
--- /dev/null
+++ b/src/_EXAMPLES FOR DEVELOPER/components/stateless/exampleView.js
@@ -0,0 +1,12 @@
+import React from "react";
+import { View } from "react-native";
+import styles from "./exampleStyles";
+
+/* Props
+* ------------------------------------------------
+* @prop { type } name - Description....
+*/
+
+const ExampleView = ({ x, y, z }) => ;
+
+export default ExampleView;
diff --git a/src/_EXAMPLES FOR DEVELOPER/constant/.gitkeep b/src/_EXAMPLES FOR DEVELOPER/constant/.gitkeep
new file mode 100644
index 000000000..e69de29bb
diff --git a/src/_EXAMPLES FOR DEVELOPER/reducer/.gitkeep b/src/_EXAMPLES FOR DEVELOPER/reducer/.gitkeep
new file mode 100644
index 000000000..e69de29bb
diff --git a/src/_EXAMPLES FOR DEVELOPER/screen/.gitkeep b/src/_EXAMPLES FOR DEVELOPER/screen/.gitkeep
new file mode 100644
index 000000000..e69de29bb
diff --git a/src/_EXAMPLES FOR DEVELOPERS/componentsScreens/example/index.js b/src/_EXAMPLES FOR DEVELOPERS/componentsScreens/example/index.js
deleted file mode 100644
index 35b7a581e..000000000
--- a/src/_EXAMPLES FOR DEVELOPERS/componentsScreens/example/index.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import ExampleView from "./exampleView";
-import ExampleContainer from "./exampleContainer";
-
-export { ExampleView, ExampleContainer };
-export default ExampleContainer;
diff --git a/src/_EXAMPLES FOR DEVELOPERS/componentsScreens/example/screen/exampleStyles.js b/src/_EXAMPLES FOR DEVELOPERS/componentsScreens/example/screen/exampleStyles.js
deleted file mode 100644
index 814b1b4f6..000000000
--- a/src/_EXAMPLES FOR DEVELOPERS/componentsScreens/example/screen/exampleStyles.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import EStyleSheet from "react-native-extended-stylesheet";
-
-export default EStyleSheet.create({});
diff --git a/src/_EXAMPLES FOR DEVELOPERS/componentsScreens/index.js b/src/_EXAMPLES FOR DEVELOPERS/componentsScreens/index.js
deleted file mode 100644
index 4483c09d6..000000000
--- a/src/_EXAMPLES FOR DEVELOPERS/componentsScreens/index.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import Exmaple from "./example/example.container";
-
-export { Exmaple };
diff --git a/src/assets/steem_connect.png b/src/assets/steem_connect.png
new file mode 100644
index 000000000..b7b8bd7f1
Binary files /dev/null and b/src/assets/steem_connect.png differ
diff --git a/src/components/basicUIElements/view/lineBreakStyles.js b/src/components/basicUIElements/view/lineBreakStyles.js
index 864ab5e5b..a3d199d16 100644
--- a/src/components/basicUIElements/view/lineBreakStyles.js
+++ b/src/components/basicUIElements/view/lineBreakStyles.js
@@ -5,5 +5,6 @@ export default EStyleSheet.create({
width: "$deviceWidth",
backgroundColor: "#f6f6f6",
height: 10,
+ justifyContent: "center",
},
});
diff --git a/src/components/basicUIElements/view/lineBreakView.js b/src/components/basicUIElements/view/lineBreakView.js
index 65779d15d..966e4fef8 100644
--- a/src/components/basicUIElements/view/lineBreakView.js
+++ b/src/components/basicUIElements/view/lineBreakView.js
@@ -2,6 +2,10 @@ import React from "react";
import { View } from "react-native";
import styles from "./lineBreakStyles";
-const LineBreak = ({ color }) => ;
+const LineBreak = ({ color, children, height }) => (
+
+ {children}
+
+);
export default LineBreak;
diff --git a/src/components/buttons/index.js b/src/components/buttons/index.js
index 6e06c5bf2..27397c583 100644
--- a/src/components/buttons/index.js
+++ b/src/components/buttons/index.js
@@ -1,5 +1,5 @@
-import GreetingHeaderButton from "./views/greetingHeaderButtonView";
import CircularButton from "./views/circularButtonView";
import IconButton from "./views/iconButtomView";
+import TextButton from "./views/textButtonView";
-export { GreetingHeaderButton, CircularButton, IconButton };
+export { CircularButton, IconButton, TextButton };
diff --git a/src/components/buttons/views/greetingHeaderButtonView.js b/src/components/buttons/views/greetingHeaderButtonView.js
deleted file mode 100644
index 7f32598dc..000000000
--- a/src/components/buttons/views/greetingHeaderButtonView.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import React, { Fragment } from "react";
-import { TouchableWithoutFeedback, Text } from "react-native";
-
-import styles from "./greetingHeaderButtonStyles";
-
-const GreetingHeaderButtonView = ({ text, onPress, style }) => (
-
- onPress && onPress()}
- >
- {text}
-
-
-);
-
-export default GreetingHeaderButtonView;
diff --git a/src/components/buttons/views/greetingHeaderButtonStyles.js b/src/components/buttons/views/textButtonStyles.js
similarity index 86%
rename from src/components/buttons/views/greetingHeaderButtonStyles.js
rename to src/components/buttons/views/textButtonStyles.js
index 8fb2f46b4..21e3a19b7 100644
--- a/src/components/buttons/views/greetingHeaderButtonStyles.js
+++ b/src/components/buttons/views/textButtonStyles.js
@@ -2,6 +2,8 @@ import EStyleSheet from "react-native-extended-stylesheet";
export default EStyleSheet.create({
button: {
+ flex: 1,
+ flexDirection: "row",
width: 54,
backgroundColor: "transparent",
height: 19,
diff --git a/src/components/buttons/views/textButtonView.js b/src/components/buttons/views/textButtonView.js
new file mode 100644
index 000000000..aceda7faf
--- /dev/null
+++ b/src/components/buttons/views/textButtonView.js
@@ -0,0 +1,19 @@
+import React, { Fragment } from "react";
+import { TouchableWithoutFeedback, Text, View } from "react-native";
+
+import styles from "./textButtonStyles";
+
+const TextButtonView = ({ text, onPress, style }) => (
+
+ onPress && onPress()}
+ >
+
+ {text}
+
+
+
+);
+
+export default TextButtonView;
diff --git a/src/components/containerHeader/index.js b/src/components/containerHeader/index.js
new file mode 100644
index 000000000..6c6a4ba60
--- /dev/null
+++ b/src/components/containerHeader/index.js
@@ -0,0 +1,4 @@
+import ContainerHeader from "./view/containerHeaderView";
+
+export { ContainerHeader };
+export default ContainerHeader;
diff --git a/src/components/containerHeader/view/containerHeaderStyles.js b/src/components/containerHeader/view/containerHeaderStyles.js
new file mode 100644
index 000000000..b9eed7795
--- /dev/null
+++ b/src/components/containerHeader/view/containerHeaderStyles.js
@@ -0,0 +1,20 @@
+import EStyleSheet from "react-native-extended-stylesheet";
+
+export default EStyleSheet.create({
+ wrapper: {
+ width: "$deviceWidth",
+ height: 50,
+ backgroundColor: "$white",
+ borderTopColor: "#cfcfcf",
+ justifyContent: "center",
+ borderTopColor: "#e7e7e7",
+ borderTopWidth: 1,
+ },
+ title: {
+ alignSelf: "flex-start",
+ fontSize: 14,
+ color: "$primaryGray",
+ fontWeight: "bold",
+ marginLeft: 26,
+ },
+});
diff --git a/src/components/containerHeader/view/containerHeaderView.js b/src/components/containerHeader/view/containerHeaderView.js
new file mode 100644
index 000000000..a5d91df65
--- /dev/null
+++ b/src/components/containerHeader/view/containerHeaderView.js
@@ -0,0 +1,37 @@
+import React, { Component } from "react";
+import { View, Text } from "react-native";
+
+// Constants
+
+// Components
+
+// Styles
+import styles from "./containerHeaderStyles";
+
+class ContainerHeaderView extends Component {
+ /* Props
+ * ------------------------------------------------
+ * @prop { type } title - Renderable title for header.
+ *
+ */
+ constructor(props) {
+ super(props);
+ this.state = {};
+ }
+
+ // Component Life Cycles
+
+ // Component Functions
+
+ render() {
+ const { title } = this.props;
+
+ return (
+
+ {title}
+
+ );
+ }
+}
+
+export default ContainerHeaderView;
diff --git a/src/components/dropdownButton/index.js b/src/components/dropdownButton/index.js
new file mode 100644
index 000000000..9a4b49faa
--- /dev/null
+++ b/src/components/dropdownButton/index.js
@@ -0,0 +1,4 @@
+import DropdownButton from "./view/dropdownButtonView";
+
+export { DropdownButton };
+export default DropdownButton;
diff --git a/src/components/dropdownButton/view/dropdownButtonStyles.js b/src/components/dropdownButton/view/dropdownButtonStyles.js
new file mode 100644
index 000000000..ba821047c
--- /dev/null
+++ b/src/components/dropdownButton/view/dropdownButtonStyles.js
@@ -0,0 +1,85 @@
+import EStyleSheet from "react-native-extended-stylesheet";
+
+export default EStyleSheet.create({
+ container: {
+ flexDirection: "row",
+ justifyContent: "center",
+ alignItems: "center",
+ alignSelf: "flex-start",
+ height: 35,
+ },
+ dropdownText: {
+ fontSize: 9,
+ color: "$primaryGray",
+ marginLeft: 25,
+ },
+ dropdownIcon: {
+ fontSize: 18,
+ color: "#c1c5c7",
+ marginLeft: 7,
+ marginTop: 1,
+ },
+ dropdown: {
+ marginTop: 5,
+ marginLeft: -2,
+ paddingTop: 10,
+ paddingBottom: 10,
+ minWidth: "$deviceWidth / 2",
+ borderColor: "#e7e7e7",
+ borderRadius: 5,
+ shadowOpacity: 0.8,
+ shadowColor: "#e7e7e7",
+ },
+ iconWrapper: {
+ justifyContent: "center",
+ alignItems: "center",
+ },
+ dropdownText: {
+ fontSize: 9,
+ color: "$primaryGray",
+ padding: 5,
+ borderColor: "#e7e7e7",
+ },
+ dropdownTextHighlight: {
+ backgroundColor: "#387be5",
+ width: "$deviceWidth / 3",
+ },
+ button: {
+ marginLeft: 25,
+ },
+ buttonText: {
+ fontSize: 9,
+ alignSelf: "center",
+ color: "$primaryGray",
+ fontWeight: "normal",
+ },
+ rowWrapper: {
+ height: 35,
+ justifyContent: "center",
+ borderTopRightRadius: 20,
+ borderBottomRightRadius: 20,
+ width: "$deviceWidth / 2.5",
+ padding: 5,
+ },
+ dropdownRow: {
+ marginLeft: 30,
+ justifyContent: "center",
+ },
+ highlightedRow: {
+ borderRadius: 20,
+ height: 35,
+ backgroundColor: "$primaryBlue",
+ alignSelf: "flex-start",
+ paddingLeft: 11,
+ paddingRight: 11,
+ marginLeft: 20,
+ },
+ highlightedRowText: {
+ color: "$white",
+ fontWeight: "bold",
+ },
+ rowText: {
+ fontSize: 9,
+ color: "$primaryGray",
+ },
+});
diff --git a/src/components/dropdownButton/view/dropdownButtonView.js b/src/components/dropdownButton/view/dropdownButtonView.js
new file mode 100644
index 000000000..580414947
--- /dev/null
+++ b/src/components/dropdownButton/view/dropdownButtonView.js
@@ -0,0 +1,70 @@
+import React from "react";
+import { View, Text, TouchableHighlight } from "react-native";
+import { Dimensions } from "react-native";
+
+// Constants
+const DEVICE_HEIGHT = Dimensions.get("window").height;
+
+// External components
+import ModalDropdown from "react-native-modal-dropdown";
+import Ionicons from "react-native-vector-icons/Ionicons";
+
+// Styles
+import styles from "./dropdownButtonStyles";
+
+/* Props TODO: Fill all description
+ * ------------------------------------------------
+ * @prop { string } defaultText - Description....
+ * @prop { string } iconName - Description....
+ * @prop { array } options - Description....
+ * @prop { function } onSelect - Description....
+ *
+ */
+
+const renderDropdownRow = (rowData, rowID, highlighted) => {
+ return (
+
+
+
+ {rowData}
+
+
+
+ );
+};
+
+const DropdownButtonView = ({
+ defaultText,
+ iconName,
+ options,
+ onSelect,
+ defaultIndex,
+}) => (
+
+ onSelect && onSelect(e)}
+ defaultIndex={defaultIndex}
+ defaultValue={defaultText}
+ renderSeparator={() => null}
+ renderRow={(rowData, rowID, highlighted) =>
+ renderDropdownRow(rowData, rowID, highlighted)
+ }
+ />
+
+
+
+
+);
+
+export default DropdownButtonView;
diff --git a/src/components/filterBar/index.js b/src/components/filterBar/index.js
new file mode 100644
index 000000000..7e821ff1e
--- /dev/null
+++ b/src/components/filterBar/index.js
@@ -0,0 +1,4 @@
+import FilterBar from "./view/filterBarView";
+
+export { FilterBar };
+export default FilterBar;
diff --git a/src/components/filterBar/view/filterBarStyles.js b/src/components/filterBar/view/filterBarStyles.js
new file mode 100644
index 000000000..327703c72
--- /dev/null
+++ b/src/components/filterBar/view/filterBarStyles.js
@@ -0,0 +1,20 @@
+import EStyleSheet from "react-native-extended-stylesheet";
+
+export default EStyleSheet.create({
+ container: {
+ justifyContent: "center",
+ },
+ filterBarWrapper: {
+ flexDirection: "row",
+ justifyContent: "space-between",
+ },
+ rightIconWrapper: {
+ marginRight: 32,
+ },
+ rightIcon: {
+ color: "#c1c5c7",
+ fontSize: 32,
+ textAlign: "center",
+ width: 32,
+ },
+});
diff --git a/src/components/filterBar/view/filterBarView.js b/src/components/filterBar/view/filterBarView.js
new file mode 100644
index 000000000..30c8e94ce
--- /dev/null
+++ b/src/components/filterBar/view/filterBarView.js
@@ -0,0 +1,47 @@
+import React from "react";
+import { View, TouchableOpacity, Text } from "react-native";
+import Ionicons from "react-native-vector-icons/Ionicons";
+
+// External Components
+import { DropdownButton } from "../../../components/dropdownButton";
+
+// Components
+import { LineBreak } from "../../basicUIElements";
+
+// Styles
+import styles from "./filterBarStyles";
+
+/* Props
+* ------------------------------------------------
+* @prop { type } name - Description....
+*/
+
+const FilterBarView = ({
+ rightIconName,
+ options,
+ defaultText,
+ dropdownIconName,
+ onDropdownSelect,
+ onRightIconPress,
+}) => (
+
+
+
+
+
+
+
+
+
+
+);
+
+export default FilterBarView;
diff --git a/src/components/formInput/view/formInputStyles.js b/src/components/formInput/view/formInputStyles.js
index d90b10a73..eac09a18a 100644
--- a/src/components/formInput/view/formInputStyles.js
+++ b/src/components/formInput/view/formInputStyles.js
@@ -5,7 +5,7 @@ export default EStyleSheet.create({
borderTopLeftRadius: 8,
borderTopRightRadius: 8,
marginHorizontal: 30,
- marginVertical: 20,
+ marginVertical: 10,
flexDirection: "row",
backgroundColor: "#f5f5f5",
height: 60,
diff --git a/src/components/formInput/view/formInputView.js b/src/components/formInput/view/formInputView.js
index 440e31883..2c0e31a87 100644
--- a/src/components/formInput/view/formInputView.js
+++ b/src/components/formInput/view/formInputView.js
@@ -29,27 +29,34 @@ class FormInputView extends Component {
this.state = {
value: "",
inputBorderColor: "#c1c5c7",
+ isValid: true,
};
}
// Component Life Cycles
+ componentWillReceiveProps(nextProps) {
+ const { isValid } = this.props;
+
+ if (nextProps.isValid !== isValid) {
+ this.setState({ isValid: nextProps.isValid });
+ }
+ }
// Component Functions
_handleOnChange = value => {
const { onChange } = this.props;
- value && this.setState({ value });
- onChange && value && onChange(value);
+ this.setState({ value });
+ onChange && onChange(value);
};
render() {
- const { inputBorderColor, value } = this.state;
+ const { inputBorderColor, isValid, value } = this.state;
const {
placeholder,
type,
isFirstImage,
isEditable,
- isValid,
leftIconName,
rightIconName,
secureTextEntry,
@@ -81,7 +88,7 @@ class FormInputView extends Component {
this.setState({
- inputBorderColor: "#357ce6",
+ inputBorderColor: "$primaryBlue",
})
}
onSubmitEditing={() =>
diff --git a/src/components/index.js b/src/components/index.js
index 727517833..7233d6c57 100644
--- a/src/components/index.js
+++ b/src/components/index.js
@@ -1,6 +1,6 @@
import Logo from "./logo/logo";
import Comment from "./comment/comment";
-import PostCard from "./post-card/postCard";
+import PostCard from "./postCard";
import Reply from "./reply/reply";
import Search from "./search/search";
import { FormInput } from "./formInput";
diff --git a/src/components/informationArea/view/informationAreaStyles.js b/src/components/informationArea/view/informationAreaStyles.js
index d6565c9f3..9fdb127e1 100644
--- a/src/components/informationArea/view/informationAreaStyles.js
+++ b/src/components/informationArea/view/informationAreaStyles.js
@@ -5,7 +5,7 @@ export default EStyleSheet.create({
flexDirection: "row",
paddingLeft: 50,
paddingRight: 32,
- marginTop: 10,
+ marginTop: 20,
},
infoIcon: {
flex: 0.125,
@@ -15,6 +15,6 @@ export default EStyleSheet.create({
infoText: {
flex: 0.875,
fontSize: 12,
- color: "#788187",
+ color: "$primaryGray",
},
});
diff --git a/src/components/leaderBoard/index.js b/src/components/leaderBoard/index.js
new file mode 100644
index 000000000..5ba6a0a20
--- /dev/null
+++ b/src/components/leaderBoard/index.js
@@ -0,0 +1,4 @@
+import LeaderBoard from "./view/leaderBoardView";
+
+export { LeaderBoard };
+export default LeaderBoard;
diff --git a/src/components/leaderBoard/view/leaderBoardStyles.js b/src/components/leaderBoard/view/leaderBoardStyles.js
new file mode 100644
index 000000000..15460415e
--- /dev/null
+++ b/src/components/leaderBoard/view/leaderBoardStyles.js
@@ -0,0 +1,7 @@
+import EStyleSheet from "react-native-extended-stylesheet";
+
+export default EStyleSheet.create({
+ styleName: {
+ // TODO: If we need default style. We can put there.
+ },
+});
diff --git a/src/components/leaderBoard/view/leaderBoardView.js b/src/components/leaderBoard/view/leaderBoardView.js
new file mode 100644
index 000000000..b8f0e3b7c
--- /dev/null
+++ b/src/components/leaderBoard/view/leaderBoardView.js
@@ -0,0 +1,37 @@
+import React, { Component } from "react";
+import { View } from "react-native";
+
+// Constants
+
+// Components
+
+// Styles
+// eslint-disable-next-line
+import styles from "./leaderBoardStyles";
+
+/*
+* Props Name Description Value
+*@props --> props name here description here Value Type Here
+*
+*/
+
+class LeaderBoardView extends Component {
+ constructor(props) {
+ super(props);
+ this.state = {};
+ }
+
+ // Component Life Cycles
+
+ // Component Functions
+
+ render() {
+ // eslint-disable-next-line
+ const {} = this.props;
+
+ // eslint-disable-next-line
+ return ;
+ }
+}
+
+export default LeaderBoardView;
diff --git a/src/components/loginHeader/view/loginHeaderStyles.js b/src/components/loginHeader/view/loginHeaderStyles.js
index 71ed9ce90..9bfd82707 100644
--- a/src/components/loginHeader/view/loginHeaderStyles.js
+++ b/src/components/loginHeader/view/loginHeaderStyles.js
@@ -14,7 +14,7 @@ export default EStyleSheet.create({
},
description: {
textAlignVertical: "center",
- color: "#788187",
+ color: "$primaryGray",
fontSize: 14,
fontWeight: "400",
},
@@ -22,7 +22,7 @@ export default EStyleSheet.create({
textAlignVertical: "center",
fontSize: 20,
fontWeight: "bold",
- color: "#788187",
+ color: "$primaryGray",
marginBottom: 16,
},
mascot: {
diff --git a/src/components/loginHeader/view/loginHeaderView.js b/src/components/loginHeader/view/loginHeaderView.js
index a546e6f4c..ce4db381b 100644
--- a/src/components/loginHeader/view/loginHeaderView.js
+++ b/src/components/loginHeader/view/loginHeaderView.js
@@ -3,7 +3,7 @@ import { View, Text, Image } from "react-native";
// Constants
// Components
-import { GreetingHeaderButton } from "../../buttons";
+import { TextButton } from "../../buttons";
import { LineBreak } from "../../basicUIElements";
// Styles
// eslint-disable-next-line
@@ -26,7 +26,7 @@ class LoginHeaderView extends Component {
// Component Functions
render() {
- const { description, title } = this.props;
+ const { description, title, onPress, isKeyboardOpen } = this.props;
return (
@@ -36,21 +36,23 @@ class LoginHeaderView extends Component {
source={require("../../../assets/esteem.png")}
/>
-
+
-
-
- {title}
- {description}
+ {!isKeyboardOpen && (
+
+
+ {title}
+ {description}
+
+
+
+
-
-
-
-
+ )}
);
diff --git a/src/components/mainButton/index.js b/src/components/mainButton/index.js
new file mode 100644
index 000000000..d7a48f861
--- /dev/null
+++ b/src/components/mainButton/index.js
@@ -0,0 +1,3 @@
+import MainButton from "./view/mainButtonView";
+
+export { MainButton };
diff --git a/src/components/mainButton/view/mainButtonStyles.js b/src/components/mainButton/view/mainButtonStyles.js
new file mode 100644
index 000000000..48f44a474
--- /dev/null
+++ b/src/components/mainButton/view/mainButtonStyles.js
@@ -0,0 +1,51 @@
+import EStyleSheet from "react-native-extended-stylesheet";
+
+export default EStyleSheet.create({
+ wrapper: {},
+ touchable: {
+ maxWidth: 200,
+ minWidth: 56,
+ height: 56,
+ borderRadius: 30,
+ backgroundColor: "$primaryBlue",
+ flexDirection: "row",
+ margin: 5,
+ shadowOffset: {
+ height: 5,
+ },
+ shadowColor: "#5f5f5fbf",
+ shadowOpacity: 0.3,
+ },
+ icon: {
+ alignSelf: "center",
+ fontSize: 25,
+ marginLeft: 20,
+ },
+ text: {
+ color: "white",
+ fontWeight: "400",
+ alignSelf: "center",
+ fontSize: 14,
+ paddingLeft: 10,
+ paddingRight: 20,
+ },
+ secondText: {
+ fontWeight: "bold",
+ },
+ activityIndicator: {
+ minWidth: 56,
+ height: 56,
+ },
+ body: {
+ flexDirection: "row",
+ },
+ image: {
+ marginLeft: 20,
+ alignSelf: "center",
+ width: 20,
+ height: 20,
+ },
+ disableTouchable: {
+ backgroundColor: "#c1c5c7",
+ },
+});
diff --git a/src/components/mainButton/view/mainButtonView.js b/src/components/mainButton/view/mainButtonView.js
new file mode 100644
index 000000000..48a0b3d6b
--- /dev/null
+++ b/src/components/mainButton/view/mainButtonView.js
@@ -0,0 +1,108 @@
+import React, { Component, Fragment } from "react";
+import {
+ ActivityIndicator,
+ Image,
+ Text,
+ TouchableOpacity,
+ View,
+} from "react-native";
+import Ionicons from "react-native-vector-icons/Ionicons";
+
+// Constants
+
+// Components
+
+// Styles
+import styles from "./mainButtonStyles";
+
+class MainButton extends Component {
+ /* Props
+ * ------------------------------------------------
+ * @prop { string } isLoading - TODO:
+ * @prop { string } text - TODO:
+ * @prop { boolean } secondText - TODO:
+ * @prop { boolean } iconColor - TODO:
+ * @prop { boolean } iconName - TODO:
+ * @prop { boolean } isDisable - TODO:
+ *
+ *
+ */
+ constructor(props) {
+ super(props);
+
+ this.state = {
+ isDisable: !props.isLoading && props.isDisable,
+ };
+ }
+
+ // Component Life Cycles
+ componentWillReceiveProps(nextProps) {
+ const { isLoading, isDisable } = this.props;
+ if (
+ nextProps.isLoading !== isLoading ||
+ nextProps.isDisable !== isDisable
+ ) {
+ this.setState({
+ isDisable: !nextProps.isLoading && nextProps.isDisable,
+ });
+ }
+ }
+
+ // Component Functions
+ _handleOnPress = () => {
+ const { onPress } = this.props;
+
+ onPress && onPress();
+ };
+
+ _getBody = () => {
+ const {
+ isLoading,
+ text,
+ secondText,
+ iconColor,
+ iconName,
+ source,
+ } = this.props;
+
+ if (isLoading) {
+ return (
+
+ );
+ } else if (text) {
+ return (
+
+ {source ? (
+
+ ) : (
+
+ )}
+
+ {text}
+ {secondText && {secondText}}
+
+
+ );
+ }
+ return ;
+ };
+
+ render() {
+ const { wrapperStyle } = this.props;
+ const { isDisable } = this.state;
+
+ return (
+
+ this._handleOnPress()}
+ style={[styles.touchable, isDisable && styles.disableTouchable]}
+ >
+ {this._getBody()}
+
+
+ );
+ }
+}
+
+export default MainButton;
diff --git a/src/components/notification/index.js b/src/components/notification/index.js
new file mode 100644
index 000000000..dda0d4f48
--- /dev/null
+++ b/src/components/notification/index.js
@@ -0,0 +1,4 @@
+import Notification from "./view/notificationView";
+
+export { Notification };
+export default Notification;
diff --git a/src/components/notification/view/notificationStyles.js b/src/components/notification/view/notificationStyles.js
new file mode 100644
index 000000000..5fe75c81c
--- /dev/null
+++ b/src/components/notification/view/notificationStyles.js
@@ -0,0 +1,62 @@
+import EStyleSheet from "react-native-extended-stylesheet";
+
+export default EStyleSheet.create({
+ container: {
+ backgroundColor: "#fff",
+ },
+ notificationWrapper: {
+ flex: 1,
+ flexDirection: "row",
+ width: "$deviceWidth",
+ justifyContent: "space-between",
+ alignItems: "center",
+ height: 64,
+ },
+ avatar: {
+ width: 32,
+ height: 32,
+ borderRadius: 32 / 2,
+ marginLeft: 24,
+ },
+ image: {
+ width: 32,
+ height: 32,
+ borderRadius: 32 / 4,
+ marginRight: 24,
+ },
+ body: {
+ flexDirection: "column",
+ flexGrow: 1,
+ fontSize: 12,
+ marginRight: 28,
+ marginLeft: 16,
+ alignSelf: "center",
+ width: "$deviceWidth / 1.76",
+ },
+ titleWrapper: {
+ flexDirection: "row",
+ },
+ name: {
+ fontWeight: "bold",
+ },
+ title: {
+ color: "$primaryGray",
+ },
+ description: {
+ color: "#3c4449",
+ fontSize: 12,
+ fontWeight: "500",
+ },
+ scrollView: {
+ height: "$deviceHeight / 1.35",
+ },
+ isNewNotification: {
+ backgroundColor: "#eaf2fc",
+ borderTopWidth: 0.3,
+ borderBottomWidth: 0.3,
+ borderColor: "#e7e7e7",
+ },
+ hasNoAvatar: {
+ backgroundColor: "#d8d8d8",
+ },
+});
diff --git a/src/components/notification/view/notificationView.js b/src/components/notification/view/notificationView.js
new file mode 100644
index 000000000..1c53c6061
--- /dev/null
+++ b/src/components/notification/view/notificationView.js
@@ -0,0 +1,147 @@
+import React, { Component } from "react";
+import { View, ScrollView, Text, FlatList, Image } from "react-native";
+import { ContainerHeader } from "../../containerHeader";
+// Constants
+
+// Components
+import { FilterBar } from "../../../components/filterBar";
+// Styles
+import styles from "./notificationStyles";
+
+class NotificationView extends Component {
+ /* Props
+ * ------------------------------------------------
+ * @prop { type } name - Description....
+ */
+ constructor(props) {
+ super(props);
+ this.state = {
+ // NOTE: DOMI DATA! them gonna remove!
+ notification: [
+ {
+ name: "esteemapp",
+ title: "25% likes your post:",
+ avatar: "https://steemitimages.com/u/feruz/avatar/small",
+ description: "My own Top 5 eSteem Surfer Featuressasasaasasas",
+ image: "https://steemitimages.com/u/feruz/avatar/small",
+ date: "yesterday",
+ isNew: true,
+ },
+ {
+ name: "esteemapp",
+ title: "25% likes your post:",
+ avatar: "https://steemitimages.com/u/feruz/avatar/small",
+ description: "My own Top 5 eSteem Surfer Features",
+ image: "https://steemitimages.com/u/feruz/avatar/small",
+ date: "yesterday",
+ isNew: true,
+ },
+ {
+ name: "esteemapp",
+ title: "25% likes your post:",
+ description: "My own Top 5 eSteem Surfer Features",
+ image: "https://steemitimages.com/u/feruz/avatar/small",
+ date: "yesterday",
+ },
+ {
+ name: "esteemapp",
+ title: "25% likes your post:",
+ avatar: "https://steemitimages.com/u/feruz/avatar/small",
+ description: "My own Top 5 eSteem Surfer Featuresasassasasaasas",
+ date: "yesterday",
+ },
+ {
+ name: "esteemapp",
+ title: "25% likes your post:",
+ avatar: "https://steemitimages.com/u/feruz/avatar/small",
+ description: "My own Top 5 eSteem Surfer Features",
+ image: "https://steemitimages.com/u/feruz/avatar/small",
+ date: "yesterday",
+ },
+ ],
+ };
+ }
+
+ // Component Life Cycles
+
+ // Component Functions
+
+ _handleOnDropdownSelect = index => {
+ console.log("selected index is:" + index);
+ };
+
+ _getRenderItem = item => {
+ return (
+
+
+
+
+ {item.name}
+ {item.title}
+
+
+ {item.description}
+
+
+ {item.image && (
+
+ )}
+
+ );
+ };
+
+ render() {
+ const { notification } = this.state;
+
+ return (
+
+
+
+
+ this._getRenderItem(item)}
+ keyExtractor={item => item.email}
+ />
+ {/* Will remove follow lines */}
+
+ this._getRenderItem(item)}
+ keyExtractor={item => item.email}
+ />
+
+
+ );
+ }
+}
+
+export default NotificationView;
diff --git a/src/components/post-card/postCard.js b/src/components/post-card/postCard.js
deleted file mode 100644
index b726899a3..000000000
--- a/src/components/post-card/postCard.js
+++ /dev/null
@@ -1,653 +0,0 @@
-/* eslint-disable no-unused-vars */
-import React from "react";
-import {
- StyleSheet,
- Image,
- TouchableOpacity,
- Dimensions,
- FlatList,
- ActivityIndicator,
-} from "react-native";
-import {
- Card,
- CardItem,
- Left,
- Right,
- Thumbnail,
- View,
- Icon,
- Body,
- Text,
-} from "native-base";
-import { Navigation } from "react-native-navigation";
-
-import Modal from "react-native-modal";
-import { Popover, PopoverController } from "react-native-modal-popover";
-import Slider from "react-native-slider";
-
-// STEEM
-import { upvote, upvoteAmount } from "../../providers/steem/dsteem";
-import { decryptKey } from "../../utils/crypto";
-import { getUserData } from "../../realm/realm";
-/* eslint-enable no-unused-vars */
-
-class PostCard extends React.PureComponent {
- constructor(props) {
- super(props);
- this.upvoteContent = this.upvoteContent.bind(this);
- this.calculateEstimatedAmount = this.calculateEstimatedAmount.bind(
- this
- );
-
- this.state = {
- value: 0.0,
- isVoting: false,
- isVoted: this.props.content.isVoted,
- amount: "0.00",
- isModalVisible: false,
- };
- }
-
- componentDidMount() {
- if (this.props.isLoggedIn == true) {
- this.calculateEstimatedAmount();
- }
- }
-
- calculateEstimatedAmount = async () => {
- // Calculate total vesting shares
- let total_vests =
- parseFloat(this.props.user.vesting_shares) +
- parseFloat(this.props.user.received_vesting_shares) -
- parseFloat(this.props.user.delegated_vesting_shares);
-
- let final_vest = total_vests * 1e6;
-
- let power =
- (this.props.user.voting_power * (this.state.value * 10000)) /
- 10000 /
- 50;
-
- let rshares = (power * final_vest) / 10000;
-
- let estimated = await upvoteAmount(rshares);
-
- this.setState({
- amount: estimated.toFixed(3),
- });
- };
-
- upvoteContent = async () => {
- let postingKey;
- let userData;
-
- if (this.props.isLoggedIn) {
- await this.setState({
- isVoting: true,
- });
-
- await getUserData().then(result => {
- userData = Array.from(result);
- postingKey = decryptKey(userData[0].postingKey, "pinCode");
- });
- upvote(
- {
- voter: this.props.user.name,
- author: this.props.content.author,
- permlink: this.props.content.permlink,
- weight: (this.state.value * 100).toFixed(0) * 100,
- },
- postingKey
- )
- .then(res => {
- console.log(res);
- this.setState({
- isVoted: true,
- isVoting: false,
- });
- })
- .catch(err => {
- console.log(err);
- this.setState({
- isVoted: false,
- isVoting: false,
- });
- });
- }
- };
-
- toggleModal = () => {
- this.setState({
- isModalVisible: !this.state.isModalVisible,
- });
- };
-
- render() {
- return (
-
-
-
-
- Navigation.push("tab1Stack", {
- component: {
- name: "navigation.eSteem.Author",
- passProps: {
- author: this.props.content.author,
- isLoggedIn: this.props.isLoggedIn,
- user: this.props.user,
- },
- options: {
- topBar: {},
- },
- },
- })
- }
- >
-
-
-
-
-
- {this.props.content.author}
-
-
-
-
- {this.props.content.author_reputation}
-
-
-
-
- {this.props.content.category}
-
-
-
- {" "}
- {this.props.content.created}{" "}
-
-
-
-
-
-
-
-
-
- Navigation.push("tab1Stack", {
- component: {
- name: "navigation.eSteem.Post",
- passProps: {
- content: this.props.content,
- isLoggedIn: this.props.isLoggedIn,
- user: this.props.user,
- },
- options: {
- topBar: {},
- },
- },
- })
- }
- >
-
-
-
- {this.props.content.title}
-
-
- {this.props.content.summary}
-
-
-
-
-
-
-
- {({
- openPopover,
- closePopover,
- popoverVisible,
- setPopoverAnchor,
- popoverAnchorRect,
- }) => (
-
-
- {this.state.isVoting ? (
-
- ) : (
-
- {this.state.isVoted ? (
-
- ) : (
-
- )}
-
- )}
-
-
- ${this.state.amount}
-
- {
- closePopover();
- this.upvoteContent();
- }}
- style={{
- flex: 0.1,
- alignSelf: "center",
- }}
- >
-
-
- {
- this.setState(
- { value },
- () => {
- this.calculateEstimatedAmount();
- }
- );
- }}
- />
-
- {(
- this.state.value * 100
- ).toFixed(0)}
- %
-
-
-
-
- )}
-
-
-
- ${this.props.content.pending_payout_value}
-
-
-
-
-
- Tap to close!
-
-
- item.voter.toString()
- }
- renderItem={({ item }) => (
-
-
-
- {" "}
- {item.voter} (
- {item.reputation})
-
-
- {item.value}$
-
-
- {item.percent}%
-
-
- )}
- />
-
-
-
-
-
-
-
-
- {this.props.content.children}
-
-
-
-
- {this.props.content.top_likers ? (
-
-
-
-
-
- @{this.props.content.top_likers[0]}, @
- {this.props.content.top_likers[1]}, @
- {this.props.content.top_likers[2]}
- &
- {this.props.content.vote_count -
- this.props.content.top_likers.length}{" "}
- others like this
-
-
- ) : (
-
-
- {this.props.content.vote_count} likes
-
-
- )}
-
- );
- }
-}
-const styles = StyleSheet.create({
- post: {
- shadowColor: "white",
- padding: 0,
- marginRight: 0,
- marginLeft: 0,
- marginTop: 10,
- marginBottom: 0,
- borderWidth: 1,
- borderColor: "#e5e5e5",
- borderRadius: 5,
- },
- avatar: {
- width: 30,
- height: 30,
- borderRadius: 15,
- borderColor: "lightgray",
- borderWidth: 1,
- },
- author: {
- backgroundColor: "white",
- alignSelf: "flex-start",
- paddingVertical: 5,
- },
- timeAgo: {
- alignSelf: "center",
- fontSize: 9,
- fontWeight: "100",
- marginHorizontal: 3,
- },
- authorName: {
- color: "#222",
- fontWeight: "600",
- fontSize: 10,
- },
- upvoteButton: {
- margin: 0,
- flexDirection: "row",
- paddingVertical: 0,
- },
- upvoteIcon: {
- alignSelf: "flex-start",
- fontSize: 20,
- color: "#007ee5",
- margin: 0,
- width: 18,
- },
- payout: {
- alignSelf: "center",
- fontSize: 10,
- color: "#626262",
- marginLeft: 3,
- },
- payoutIcon: {
- fontSize: 15,
- marginHorizontal: 3,
- color: "#a0a0a0",
- alignSelf: "center",
- },
- payoutButton: {
- flexDirection: "row",
- alignSelf: "flex-start",
- paddingVertical: 2,
- },
- commentButton: {
- padding: 0,
- margin: 0,
- flexDirection: "row",
- },
- comment: {
- alignSelf: "center",
- fontSize: 10,
- color: "#626262",
- marginLeft: 3,
- },
- commentIcon: {
- alignSelf: "flex-start",
- fontSize: 20,
- color: "#007ee5",
- margin: 0,
- width: 20,
- },
- title: {
- fontSize: 12,
- fontWeight: "500",
- marginVertical: 5,
- },
- summary: {
- fontSize: 10,
- fontWeight: "200",
- overflow: "hidden",
- },
- header: {
- shadowColor: "white",
- height: 50,
- borderRadius: 5,
- },
- body: {
- justifyContent: "flex-start",
- flexDirection: "row",
- },
- image: {
- margin: 0,
- width: "100%",
- height: 160,
- },
- badge: {
- alignSelf: "center",
- borderColor: "lightgray",
- borderWidth: 1,
- borderRadius: 10,
- width: 15,
- height: 15,
- padding: 2,
- backgroundColor: "lightgray",
- marginHorizontal: 5,
- },
- category: {
- alignSelf: "center",
- borderRadius: 10,
- height: 15,
- backgroundColor: "#007EE5",
- paddingHorizontal: 5,
- paddingVertical: 1.5,
- },
- categoryText: {
- fontSize: 9,
- color: "white",
- fontWeight: "600",
- },
- text: {
- fontSize: 7,
- alignSelf: "center",
- textAlignVertical: "center",
- color: "white",
- fontWeight: "bold",
- },
- topLikers: {
- shadowColor: "white",
- backgroundColor: "#f8f8f8",
- borderWidth: 0,
- padding: 0,
- borderRadius: 5,
- },
- likers_1: {
- width: 14,
- height: 14,
- borderRadius: 7,
- borderWidth: 0.5,
- borderColor: "lightgray",
- marginVertical: -5,
- },
- likers_2: {
- width: 14,
- height: 14,
- borderRadius: 7,
- borderWidth: 0.5,
- borderColor: "lightgray",
- marginVertical: -5,
- marginLeft: -3,
- },
- likers_3: {
- width: 14,
- height: 14,
- borderRadius: 7,
- borderWidth: 0.5,
- borderColor: "lightgray",
- marginVertical: -5,
- marginLeft: -3,
- },
- footer: {
- shadowColor: "white",
- paddingLeft: 5,
- borderRadius: 5,
- fontSize: 7,
- fontWeight: "100",
- color: "#777777",
- },
- popover: {
- width: Dimensions.get("window").width - 20,
- borderRadius: 5,
- padding: 10,
- },
- track: {
- height: 2,
- borderRadius: 1,
- },
- thumb: {
- width: 30,
- height: 30,
- borderRadius: 30 / 2,
- backgroundColor: "white",
- shadowColor: "black",
- shadowOffset: { width: 0, height: 2 },
- shadowRadius: 2,
- shadowOpacity: 0.35,
- },
-});
-
-export default PostCard;
diff --git a/src/components/postCard/container/postCardContainer.js b/src/components/postCard/container/postCardContainer.js
new file mode 100644
index 000000000..7d4c16483
--- /dev/null
+++ b/src/components/postCard/container/postCardContainer.js
@@ -0,0 +1,35 @@
+import React, { Component } from "react";
+
+// Services and Actions
+
+// Middleware
+
+// Constants
+
+// Utilities
+
+// Component
+import { PostCardView } from "../";
+
+/*
+* Props Name Description Value
+*@props --> props name here description here Value Type Here
+*
+*/
+
+class PostCardContainer extends Component {
+ constructor(props) {
+ super(props);
+ this.state = {};
+ }
+
+ // Component Life Cycle Functions
+
+ // Component Functions
+
+ render() {
+ return ;
+ }
+}
+
+export default PostCardContainer;
diff --git a/src/components/postCard/index.js b/src/components/postCard/index.js
new file mode 100644
index 000000000..53c3a7c5b
--- /dev/null
+++ b/src/components/postCard/index.js
@@ -0,0 +1,5 @@
+import PostCardView from "./view/postCardView";
+import PostCard from "./container/postCardContainer";
+
+export { PostCardView, PostCard };
+export default PostCard;
diff --git a/src/components/postCard/view/postCardStyles.js b/src/components/postCard/view/postCardStyles.js
new file mode 100644
index 000000000..0f8b4b7d7
--- /dev/null
+++ b/src/components/postCard/view/postCardStyles.js
@@ -0,0 +1,200 @@
+import EStyleSheet from "react-native-extended-stylesheet";
+
+export default EStyleSheet.create({
+ post: {
+ shadowColor: "white",
+ padding: 0,
+ marginRight: 0,
+ marginLeft: 0,
+ marginTop: 10,
+ marginBottom: 0,
+ borderWidth: 1,
+ borderColor: "#e5e5e5",
+ borderRadius: 5,
+ },
+ avatar: {
+ width: 30,
+ height: 30,
+ borderRadius: 15,
+ borderColor: "lightgray",
+ borderWidth: 1,
+ },
+ author: {
+ backgroundColor: "white",
+ alignSelf: "flex-start",
+ paddingVertical: 5,
+ },
+ timeAgo: {
+ alignSelf: "center",
+ fontSize: 9,
+ fontWeight: "100",
+ marginHorizontal: 3,
+ },
+ authorName: {
+ color: "#222",
+ fontWeight: "600",
+ fontSize: 10,
+ },
+ upvoteButton: {
+ margin: 0,
+ flexDirection: "row",
+ paddingVertical: 0,
+ },
+ upvoteIcon: {
+ alignSelf: "flex-start",
+ fontSize: 20,
+ color: "#007ee5",
+ margin: 0,
+ width: 18,
+ },
+ payout: {
+ alignSelf: "center",
+ fontSize: 10,
+ color: "#626262",
+ marginLeft: 3,
+ },
+ payoutIcon: {
+ fontSize: 15,
+ marginHorizontal: 3,
+ color: "#a0a0a0",
+ alignSelf: "center",
+ },
+ payoutButton: {
+ flexDirection: "row",
+ alignSelf: "flex-start",
+ paddingVertical: 2,
+ },
+ commentButton: {
+ padding: 0,
+ margin: 0,
+ flexDirection: "row",
+ },
+ comment: {
+ alignSelf: "center",
+ fontSize: 10,
+ color: "#626262",
+ marginLeft: 3,
+ },
+ commentIcon: {
+ alignSelf: "flex-start",
+ fontSize: 20,
+ color: "#007ee5",
+ margin: 0,
+ width: 20,
+ },
+ title: {
+ fontSize: 12,
+ fontWeight: "500",
+ marginVertical: 5,
+ },
+ summary: {
+ fontSize: 10,
+ fontWeight: "200",
+ overflow: "hidden",
+ },
+ header: {
+ shadowColor: "white",
+ height: 50,
+ borderRadius: 5,
+ },
+ body: {
+ justifyContent: "flex-start",
+ flexDirection: "row",
+ },
+ image: {
+ margin: 0,
+ width: "100%",
+ height: 160,
+ },
+ badge: {
+ alignSelf: "center",
+ borderColor: "lightgray",
+ borderWidth: 1,
+ borderRadius: 10,
+ width: 15,
+ height: 15,
+ padding: 2,
+ backgroundColor: "lightgray",
+ marginHorizontal: 5,
+ },
+ category: {
+ alignSelf: "center",
+ borderRadius: 10,
+ height: 15,
+ backgroundColor: "#007EE5",
+ paddingHorizontal: 5,
+ paddingVertical: 1.5,
+ },
+ categoryText: {
+ fontSize: 9,
+ color: "white",
+ fontWeight: "600",
+ },
+ text: {
+ fontSize: 7,
+ alignSelf: "center",
+ textAlignVertical: "center",
+ color: "white",
+ fontWeight: "bold",
+ },
+ topLikers: {
+ shadowColor: "white",
+ backgroundColor: "#f8f8f8",
+ borderWidth: 0,
+ padding: 0,
+ borderRadius: 5,
+ },
+ likers_1: {
+ width: 14,
+ height: 14,
+ borderRadius: 7,
+ borderWidth: 0.5,
+ borderColor: "lightgray",
+ marginVertical: -5,
+ },
+ likers_2: {
+ width: 14,
+ height: 14,
+ borderRadius: 7,
+ borderWidth: 0.5,
+ borderColor: "lightgray",
+ marginVertical: -5,
+ marginLeft: -3,
+ },
+ likers_3: {
+ width: 14,
+ height: 14,
+ borderRadius: 7,
+ borderWidth: 0.5,
+ borderColor: "lightgray",
+ marginVertical: -5,
+ marginLeft: -3,
+ },
+ footer: {
+ shadowColor: "white",
+ paddingLeft: 5,
+ borderRadius: 5,
+ fontSize: 7,
+ fontWeight: "100",
+ color: "#777777",
+ },
+ popover: {
+ width: "$deviceWidth - 20",
+ borderRadius: 5,
+ padding: 10,
+ },
+ track: {
+ height: 2,
+ borderRadius: 1,
+ },
+ thumb: {
+ width: 30,
+ height: 30,
+ borderRadius: 30 / 2,
+ backgroundColor: "white",
+ shadowColor: "black",
+ shadowOffset: { width: 0, height: 2 },
+ shadowRadius: 2,
+ shadowOpacity: 0.35,
+ },
+});
diff --git a/src/components/postCard/view/postCardView.js b/src/components/postCard/view/postCardView.js
new file mode 100644
index 000000000..14b10079d
--- /dev/null
+++ b/src/components/postCard/view/postCardView.js
@@ -0,0 +1,423 @@
+import React, { Component } from "react";
+import {
+ Image,
+ TouchableOpacity,
+ FlatList,
+ ActivityIndicator,
+} from "react-native";
+import {
+ Card,
+ CardItem,
+ Left,
+ Right,
+ Thumbnail,
+ View,
+ Icon,
+ Body,
+ Text,
+} from "native-base";
+import { Navigation } from "react-native-navigation";
+import Modal from "react-native-modal";
+import { Popover, PopoverController } from "react-native-modal-popover";
+import Slider from "react-native-slider";
+
+// STEEM
+import { upvote, upvoteAmount } from "../../../providers/steem/dsteem";
+import { decryptKey } from "../../../utils/crypto";
+import { getUserData } from "../../../realm/realm";
+
+// Styles
+import styles from "./postCardStyles";
+
+class PostCard extends Component {
+ /* Props
+ * ------------------------------------------------
+ * @prop { string } description - Description texts.
+ * @prop { string } iconName - For icon render name.
+ *
+ */
+ constructor(props) {
+ super(props);
+ this.upvoteContent = this.upvoteContent.bind(this);
+ this.calculateEstimatedAmount = this.calculateEstimatedAmount.bind(this);
+
+ this.state = {
+ value: 0.0,
+ isVoting: false,
+ isVoted: props.content && props.content.isVoted,
+ amount: "0.00",
+ isModalVisible: false,
+ };
+ }
+
+ // Component Lifecycle Functions
+ componentDidMount() {
+ const { isLoggedIn } = this.props;
+
+ isLoggedIn && this.calculateEstimatedAmount();
+ }
+
+ // Component Functions
+ calculateEstimatedAmount = async () => {
+ const { user } = this.props;
+ const { value } = this.state;
+ // Calculate total vesting shares
+ const total_vests =
+ parseFloat(user.vesting_shares) +
+ parseFloat(user.received_vesting_shares) -
+ parseFloat(user.delegated_vesting_shares);
+
+ const final_vest = total_vests * 1e6;
+
+ const power = (user.voting_power * (value * 10000)) / 10000 / 50;
+
+ const rshares = (power * final_vest) / 10000;
+
+ const estimated = await upvoteAmount(rshares);
+
+ this.setState({
+ amount: estimated.toFixed(3),
+ });
+ };
+
+ upvoteContent = async () => {
+ const { isLoggedIn, user, content } = this.prop;
+ const { value } = this.state;
+
+ let postingKey;
+ let userData;
+
+ if (isLoggedIn) {
+ await this.setState({
+ isVoting: true,
+ });
+
+ await getUserData().then(result => {
+ userData = Array.from(result);
+ postingKey = decryptKey(userData[0].postingKey, "pinCode");
+ });
+ upvote(
+ {
+ voter: user && user.name,
+ author: content && content.author,
+ permlink: content && content.permlink,
+ weight: (value * 100).toFixed(0) * 100,
+ },
+ postingKey
+ )
+ .then(res => {
+ console.log(res);
+ this.setState({
+ isVoted: true,
+ isVoting: false,
+ });
+ })
+ .catch(err => {
+ console.log(err);
+ this.setState({
+ isVoted: false,
+ isVoting: false,
+ });
+ });
+ }
+ };
+
+ toggleModal = () => {
+ const { isModalVisible } = this.state;
+
+ this.setState({
+ isModalVisible: !isModalVisible,
+ });
+ };
+
+ render() {
+ const { content, isLoggedIn, user } = this.props;
+ const { isVoted, isVoting, isModalVisible, value } = this.state;
+
+ // TODO: Should seperate bunch of component REFACTOR ME!
+ return (
+
+
+
+
+ Navigation.push("tab1Stack", {
+ component: {
+ name: "navigation.eSteem.Author",
+ passProps: {
+ author: content && content.author,
+ isLoggedIn: isLoggedIn,
+ user: user,
+ },
+ options: {
+ topBar: {},
+ },
+ },
+ })
+ }
+ >
+
+
+
+
+ {content.author}
+
+
+ {content.author_reputation}
+
+
+ {content.category}
+
+
+ {" "}
+ {content.created}{" "}
+
+
+
+
+
+
+
+
+
+ Navigation.push("tab1Stack", {
+ component: {
+ name: "navigation.eSteem.Post",
+ passProps: {
+ content: content,
+ isLoggedIn: isLoggedIn,
+ user: user,
+ },
+ options: {
+ topBar: {},
+ },
+ },
+ })
+ }
+ >
+
+
+ {content.title}
+ {content.summary}
+
+
+
+
+
+
+ {({
+ openPopover,
+ closePopover,
+ popoverVisible,
+ setPopoverAnchor,
+ popoverAnchorRect,
+ }) => (
+
+
+ {isVoting ? (
+
+ ) : (
+
+ {isVoted ? (
+
+ ) : (
+
+ )}
+
+ )}
+
+
+ ${this.state.amount}
+
+ {
+ closePopover();
+ this.upvoteContent();
+ }}
+ style={{
+ flex: 0.1,
+ alignSelf: "center",
+ }}
+ >
+
+
+ {
+ this.setState({ value }, () => {
+ this.calculateEstimatedAmount();
+ });
+ }}
+ />
+
+ {(value * 100).toFixed(0)}%
+
+
+
+
+ )}
+
+
+ ${content.pending_payout_value}
+
+
+
+
+ Tap to close!
+
+ item.voter.toString()}
+ renderItem={({ item }) => (
+
+
+
+ {" "}
+ {item.voter} ({item.reputation})
+
+ {item.value}$
+ {item.percent}%
+
+ )}
+ />
+
+
+
+
+
+
+
+ {content.children}
+
+
+
+ {content.top_likers ? (
+
+
+
+
+
+ @{content.top_likers[0]}, @{content.top_likers[1]}, @
+ {content.top_likers[2]}
+ &
+ {content.vote_count - content.top_likers.length} others like this
+
+
+ ) : (
+
+ {content.vote_count} likes
+
+ )}
+
+ );
+ }
+}
+
+export default PostCard;
diff --git a/src/components/search/search.js b/src/components/search/search.js
index d1f262e44..7687a99c2 100644
--- a/src/components/search/search.js
+++ b/src/components/search/search.js
@@ -1,12 +1,12 @@
import React, { Component } from "react";
import {
- Text,
- View,
- Dimensions,
- TextInput,
- FlatList,
- Image,
- ActivityIndicator,
+ Text,
+ View,
+ Dimensions,
+ TextInput,
+ FlatList,
+ Image,
+ ActivityIndicator,
} from "react-native";
import Ionicons from "react-native-vector-icons/Ionicons";
import { Navigation } from "react-native-navigation";
@@ -14,202 +14,200 @@ import { lookupAccounts } from "../../providers/steem/dsteem";
import { SEARCH_API_TOKEN } from "../../../config";
export default class Search extends Component {
- constructor() {
- super();
- this.handleSearch = this.handleSearch.bind(this);
- this.state = {
- text: "",
- scroll_id: "",
- posts: [],
- users: [],
- loading: false,
- };
- }
-
- closeSearch = () => {
- Navigation.dismissOverlay(this.props.componentId);
+ constructor() {
+ super();
+ this.handleSearch = this.handleSearch.bind(this);
+ this.state = {
+ text: "",
+ scroll_id: "",
+ posts: [],
+ users: [],
+ loading: false,
};
+ }
- handleSearch = async text => {
- if (text.length < 3) return;
- let users;
- let posts;
- let scroll_id;
+ closeSearch = () => {
+ Navigation.dismissOverlay(this.props.componentId);
+ };
- await this.setState({
- loading: true,
- text: text,
- });
+ handleSearch = async text => {
+ if (text.length < 3) return;
+ let users;
+ let posts;
+ let scroll_id;
- users = await lookupAccounts(text);
+ await this.setState({
+ loading: true,
+ text: text,
+ });
- await this.setState({ users: users });
+ users = await lookupAccounts(text);
- let data = { q: text };
- await fetch("https://api.search.esteem.app/search", {
- method: "POST",
- headers: {
- // TODO: Create a config file for authorization
+ await this.setState({ users: users });
- Authorization: SEARCH_API_TOKEN,
- "Content-Type": "application/json",
- },
- body: JSON.stringify(data),
- })
- .then(result => result.json())
- .then(result => {
- posts = result.results;
- scroll_id = result.scroll_id;
- })
- .catch(error => {
- console.log(error);
- });
+ let data = { q: text };
+ await fetch("https://api.search.esteem.app/search", {
+ method: "POST",
+ headers: {
+ // TODO: Create a config file for authorization
- await this.setState({ loading: false });
+ Authorization: SEARCH_API_TOKEN,
+ "Content-Type": "application/json",
+ },
+ body: JSON.stringify(data),
+ })
+ .then(result => result.json())
+ .then(result => {
+ posts = result.results;
+ scroll_id = result.scroll_id;
+ })
+ .catch(error => {
+ console.log(error);
+ });
- await this.setState({
- posts: posts,
- scroll_id: scroll_id,
- });
- };
+ await this.setState({ loading: false });
- render() {
- return (
-
+
+
+
+ this.handleSearch(text)}
+ value={this.state.text}
+ />
+
+
+
+
+
+ (
+
+
+
+ @{item}
+
+
+ )}
+ keyExtractor={(post, index) => index.toString()}
+ removeClippedSubviews={true}
+ onEndThreshold={0}
+ />
+
+ (
+ // TODO: Create a component to list search results
+
+ >
-
-
- this.handleSearch(text)}
- value={this.state.text}
- />
-
-
-
-
-
- (
-
-
-
- @{item}
-
-
- )}
- keyExtractor={(post, index) => index.toString()}
- removeClippedSubviews={true}
- onEndThreshold={0}
- />
-
- (
- // TODO: Create a component to list search results
-
-
-
-
- {item.author} ({item.author_rep})
-
-
-
- )}
- keyExtractor={(post, index) => index.toString()}
- removeClippedSubviews={true}
- onEndThreshold={0}
- initialNumToRender={20}
- />
+ style={{
+ width: 40,
+ height: 40,
+ borderRadius: 20,
+ borderWidth: 1,
+ borderColor: "gray",
+ }}
+ />
+
+ {item.author} ({item.author_rep})
+
-
- );
- }
+
+ )}
+ keyExtractor={(post, index) => index.toString()}
+ removeClippedSubviews={true}
+ onEndThreshold={0}
+ initialNumToRender={20}
+ />
+
+
+ );
+ }
}
diff --git a/src/components/tabBar/view/tabBarView.js b/src/components/tabBar/view/tabBarView.js
index f1f59d789..07059557a 100644
--- a/src/components/tabBar/view/tabBarView.js
+++ b/src/components/tabBar/view/tabBarView.js
@@ -1,151 +1,143 @@
import React, { Component } from "react";
import {
- Text,
- View,
- Animated,
- TouchableNativeFeedback,
- TouchableOpacity,
- Platform,
- Dimensions,
+ Text,
+ View,
+ Animated,
+ TouchableNativeFeedback,
+ TouchableOpacity,
+ Platform,
+ Dimensions,
} from "react-native";
// Styles
import styles from "./tabBarStyles";
export default class TabBar extends Component {
- /* Props
+ /* Props
* ------------------------------------------------ TODO: Fill fallowlines
* @prop { type } name - Description.
* @prop { type } name - Description.
*
*/
- constructor(props) {
- super(props);
+ constructor(props) {
+ super(props);
- this.state = {};
- }
+ this.state = {};
+ }
- _renderTab = (name, page, isTabActive, onPressHandler) => {
- const { activeColor, inactiveColor } = this.props;
- const textColor = isTabActive ? activeColor : inactiveColor;
- const fontWeight = isTabActive ? "bold" : "normal";
- const Button = Platform.OS == "ios" ? ButtonIos : ButtonAndroid;
- // TODO: make generic component!!
+ _renderTab = (name, page, isTabActive, onPressHandler) => {
+ const { activeColor, inactiveColor } = this.props;
+ const textColor = isTabActive ? activeColor : inactiveColor;
+ const fontWeight = isTabActive ? "bold" : "normal";
+ const Button = Platform.OS == "ios" ? ButtonIos : ButtonAndroid;
+ // TODO: make generic component!!
- return (
-
- );
+ return (
+
+ );
+ };
+
+ _renderUnderline = () => {
+ const {
+ activeColor,
+ tabs,
+ tabUnderlineDefaultWidth,
+ tabUnderlineScaleX,
+ scrollValue,
+ underlineStyle,
+ } = this.props;
+
+ const containerWidth = Dimensions.get("window").width;
+ const numberOfTabs = tabs.length;
+ const underlineWidth =
+ tabUnderlineDefaultWidth || containerWidth / (numberOfTabs * 2);
+ const scale = tabUnderlineScaleX || 2;
+ const deLen = (containerWidth / numberOfTabs - underlineWidth) / 2;
+ const tabUnderlineStyle = {
+ position: "absolute",
+ width: underlineWidth,
+ height: 2,
+ borderRadius: 2,
+ backgroundColor: activeColor,
+ bottom: 0,
+ left: deLen,
};
- _renderUnderline = () => {
- const {
- activeColor,
- tabs,
- tabUnderlineDefaultWidth,
- tabUnderlineScaleX,
- scrollValue,
- underlineStyle,
- } = this.props;
+ const translateX = scrollValue.interpolate({
+ inputRange: [0, 1],
+ outputRange: [0, containerWidth / numberOfTabs],
+ });
- const containerWidth = Dimensions.get("window").width;
- const numberOfTabs = tabs.length;
- const underlineWidth =
- tabUnderlineDefaultWidth || containerWidth / (numberOfTabs * 2);
- const scale = tabUnderlineScaleX || 2;
- const deLen = (containerWidth / numberOfTabs - underlineWidth) / 2;
- const tabUnderlineStyle = {
- position: "absolute",
- width: underlineWidth,
- height: 2,
- borderRadius: 2,
- backgroundColor: activeColor,
- bottom: 0,
- left: deLen,
- };
+ const scaleValue = defaultScale => {
+ const number = 4;
+ const arr = new Array(number * 2);
- const translateX = scrollValue.interpolate({
- inputRange: [0, 1],
- outputRange: [0, containerWidth / numberOfTabs],
- });
-
- const scaleValue = defaultScale => {
- const number = 4;
- const arr = new Array(number * 2);
-
- return arr.fill(0).reduce(
- function(pre, cur, idx) {
- idx == 0
- ? pre.inputRange.push(cur)
- : pre.inputRange.push(pre.inputRange[idx - 1] + 0.5);
- idx % 2
- ? pre.outputRange.push(defaultScale)
- : pre.outputRange.push(1);
- return pre;
- },
- { inputRange: [], outputRange: [] }
- );
- };
-
- const scaleX = scrollValue.interpolate(scaleValue(scale));
-
- return (
-
- );
+ return arr.fill(0).reduce(
+ function(pre, cur, idx) {
+ idx == 0
+ ? pre.inputRange.push(cur)
+ : pre.inputRange.push(pre.inputRange[idx - 1] + 0.5);
+ idx % 2
+ ? pre.outputRange.push(defaultScale)
+ : pre.outputRange.push(1);
+ return pre;
+ },
+ { inputRange: [], outputRange: [] }
+ );
};
- render() {
- const { activeTab, backgroundColor, goToPage, style } = this.props;
+ const scaleX = scrollValue.interpolate(scaleValue(scale));
- return (
-
- {this.props.tabs.map((name, page) => {
- const isTabActive = activeTab === page;
- return this._renderTab(name, page, isTabActive, goToPage);
- })}
- {this._renderUnderline()}
-
- );
- }
+ return (
+
+ );
+ };
+
+ render() {
+ const { activeTab, backgroundColor, goToPage, style } = this.props;
+
+ return (
+
+ {this.props.tabs.map((name, page) => {
+ const isTabActive = activeTab === page;
+ return this._renderTab(name, page, isTabActive, goToPage);
+ })}
+ {this._renderUnderline()}
+
+ );
+ }
}
const ButtonAndroid = props => (
-
- {props.children}
-
+
+ {props.children}
+
);
const ButtonIos = props => (
- {props.children}
+ {props.children}
);
diff --git a/src/navigation.js b/src/navigation.js
index 224bbf8c2..5da9761f9 100755
--- a/src/navigation.js
+++ b/src/navigation.js
@@ -40,8 +40,8 @@ export const goToAuthScreens = () =>
right: 0,
},
icon: require("./assets/feed.png"),
- iconColor: "gray",
- selectedIconColor: "#222",
+ iconColor: "#c1c5c7",
+ selectedIconColor: "#357ce6",
},
},
},
@@ -67,8 +67,13 @@ export const goToAuthScreens = () =>
right: 0,
},
icon: require("./assets/notification.png"),
- iconColor: "gray",
- selectedIconColor: "#222",
+ iconColor: "#c1c5c7",
+ selectedIconColor: "#357ce6",
+ },
+ topBar: {
+ visible: false,
+ noBorder: true,
+ elevation: 0,
},
},
},
@@ -94,8 +99,8 @@ export const goToAuthScreens = () =>
right: 0,
},
icon: require("./assets/add.png"),
- iconColor: "gray",
- selectedIconColor: "#222",
+ iconColor: "#c1c5c7",
+ selectedIconColor: "#357ce6",
},
},
},
@@ -121,8 +126,8 @@ export const goToAuthScreens = () =>
right: 0,
},
icon: require("./assets/wallet.png"),
- iconColor: "gray",
- selectedIconColor: "#222",
+ iconColor: "#c1c5c7",
+ selectedIconColor: "#357ce6",
},
},
},
@@ -148,8 +153,8 @@ export const goToAuthScreens = () =>
right: 0,
},
icon: require("./assets/wallet.png"),
- iconColor: "gray",
- selectedIconColor: "#222",
+ iconColor: "#c1c5c7",
+ selectedIconColor: "#357ce6",
},
},
},
@@ -161,7 +166,7 @@ export const goToAuthScreens = () =>
textColor: "#AED581",
iconColor: "#AED581",
selectedTextColor: "gray",
- selectedIconColor: "gray",
+ selectediconColor: "#c1c5c7",
fontFamily: "HelveticaNeue-Italic",
fontSize: 13,
},
@@ -188,8 +193,8 @@ export const goToAuthScreens = () =>
animate: false, // Controls whether BottomTabs visibility changes should be animated
},
bottomTab: {
- iconColor: "gray",
- selectedIconColor: "#222",
+ iconColor: "#c1c5c7",
+ selectedIconColor: "#357ce6",
textColor: "#1B4C77",
selectedTextColor: "#0f0",
fontFamily: "HelveticaNeue-Italic",
diff --git a/src/providers/steem/dsteem.js b/src/providers/steem/dsteem.js
index e0c699dda..875c246c1 100644
--- a/src/providers/steem/dsteem.js
+++ b/src/providers/steem/dsteem.js
@@ -12,13 +12,13 @@ let medianPrice = null;
let client = new Client("https://api.steemit.com");
getClient = async () => {
- let server = await AsyncStorage.getItem("server");
+ let server = await AsyncStorage.getItem("server");
- if (server === null || server === undefined || server === "") {
- client = new Client("https://api.steemit.com");
- } else {
- client = new Client(`${server}`);
- }
+ if (server === null || server === undefined || server === "") {
+ client = new Client("https://api.steemit.com");
+ } else {
+ client = new Client(`${server}`);
+ }
};
getClient();
@@ -27,14 +27,14 @@ getClient();
* @param user username
*/
export const getAccount = user => {
- return new Promise((resolve, reject) => {
- try {
- let account = client.database.getAccounts([user]);
- resolve(account);
- } catch (error) {
- reject(error);
- }
- });
+ return new Promise((resolve, reject) => {
+ try {
+ let account = client.database.getAccounts([user]);
+ resolve(account);
+ } catch (error) {
+ reject(error);
+ }
+ });
};
/**
@@ -42,43 +42,43 @@ export const getAccount = user => {
* @param user username
*/
export const getUser = async user => {
- try {
- let account = await client.database.getAccounts([user]);
- // get global properties to calculate Steem Power
- let global_properties = await client.database.getDynamicGlobalProperties();
+ try {
+ let account = await client.database.getAccounts([user]);
+ // get global properties to calculate Steem Power
+ let global_properties = await client.database.getDynamicGlobalProperties();
- // calculate Steem Power (own, received, delegated)
- account[0].steem_power = vestToSteem(
- account[0].vesting_shares,
- global_properties.total_vesting_shares,
- global_properties.total_vesting_fund_steem
- ).toFixed(0);
- account[0].received_steem_power = vestToSteem(
- account[0].received_vesting_shares,
- global_properties.total_vesting_shares,
- global_properties.total_vesting_fund_steem
- ).toFixed(0);
- account[0].delegated_steem_power = vestToSteem(
- account[0].delegated_vesting_shares,
- global_properties.total_vesting_shares,
- global_properties.total_vesting_fund_steem
- ).toFixed(0);
+ // calculate Steem Power (own, received, delegated)
+ account[0].steem_power = vestToSteem(
+ account[0].vesting_shares,
+ global_properties.total_vesting_shares,
+ global_properties.total_vesting_fund_steem
+ ).toFixed(0);
+ account[0].received_steem_power = vestToSteem(
+ account[0].received_vesting_shares,
+ global_properties.total_vesting_shares,
+ global_properties.total_vesting_fund_steem
+ ).toFixed(0);
+ account[0].delegated_steem_power = vestToSteem(
+ account[0].delegated_vesting_shares,
+ global_properties.total_vesting_shares,
+ global_properties.total_vesting_fund_steem
+ ).toFixed(0);
- return account[0];
- } catch (error) {
- return error;
- }
+ return account[0];
+ } catch (error) {
+ return error;
+ }
};
export const vestToSteem = (
- vestingShares,
- totalVestingShares,
- totalVestingFundSteem
+ vestingShares,
+ totalVestingShares,
+ totalVestingFundSteem
) => {
- return (
- parseFloat(totalVestingFundSteem) *
- (parseFloat(vestingShares) / parseFloat(totalVestingShares))
- );
+ return (
+ parseFloat(totalVestingFundSteem) *
+ (parseFloat(vestingShares) / parseFloat(totalVestingShares))
+ );
};
/**
@@ -86,16 +86,16 @@ export const vestToSteem = (
* @param user username
*/
export const getFollows = user => {
- return new Promise((resolve, reject) => {
- client
- .call("follow_api", "get_follow_count", [user])
- .then(result => {
- resolve(result);
- })
- .catch(err => {
- reject(err);
- });
- });
+ return new Promise((resolve, reject) => {
+ client
+ .call("follow_api", "get_follow_count", [user])
+ .then(result => {
+ resolve(result);
+ })
+ .catch(err => {
+ reject(err);
+ });
+ });
};
/**
@@ -104,16 +104,16 @@ export const getFollows = user => {
* TODO: Pagination
*/
export const getFollowers = user => {
- return new Promise((resolve, reject) => {
- client
- .call("follow_api", "get_followers", [user, "", "blog", 50])
- .then(result => {
- resolve(result);
- })
- .catch(err => {
- reject(err);
- });
- });
+ return new Promise((resolve, reject) => {
+ client
+ .call("follow_api", "get_followers", [user, "", "blog", 50])
+ .then(result => {
+ resolve(result);
+ })
+ .catch(err => {
+ reject(err);
+ });
+ });
};
/**
@@ -122,33 +122,33 @@ export const getFollowers = user => {
* TODO: Pagination
*/
export const getFollowing = user => {
- return new Promise((resolve, reject) => {
- client
- .call("follow_api", "get_following", [user, "", "blog", 50])
- .then(result => {
- resolve(result);
- })
- .catch(err => {
- reject(err);
- });
- });
+ return new Promise((resolve, reject) => {
+ client
+ .call("follow_api", "get_following", [user, "", "blog", 50])
+ .then(result => {
+ resolve(result);
+ })
+ .catch(err => {
+ reject(err);
+ });
+ });
};
export const isFolllowing = (author, user) => {
- return new Promise((resolve, reject) => {
- client
- .call("follow_api", "get_followers", [author, user, "blog", 10])
- .then(result => {
- if (result[0].follower === user) {
- resolve(true);
- } else {
- resolve(false);
- }
- })
- .catch(err => {
- reject(err);
- });
- });
+ return new Promise((resolve, reject) => {
+ client
+ .call("follow_api", "get_followers", [author, user, "blog", 10])
+ .then(result => {
+ if (result[0].follower === user) {
+ resolve(true);
+ } else {
+ resolve(false);
+ }
+ })
+ .catch(err => {
+ reject(err);
+ });
+ });
};
/**
@@ -157,26 +157,26 @@ export const isFolllowing = (author, user) => {
* @param query tag, limit, start_author?, start_permalink?
*/
export const getPosts = async (by, query, user) => {
- try {
- let posts = await client.database.getDiscussions(by, query);
- console.log("comments");
- console.log(posts);
- posts = await parsePosts(posts, user);
- return posts;
- } catch (error) {
- return error;
- }
+ try {
+ let posts = await client.database.getDiscussions(by, query);
+ console.log("comments");
+ console.log(posts);
+ posts = await parsePosts(posts, user);
+ return posts;
+ } catch (error) {
+ return error;
+ }
};
export const getUserComments = async query => {
- try {
- let comments = await client.database.getDiscussions("comments", query);
- comments = parseComments(comments);
- console.log(comments);
- return comments;
- } catch (error) {
- return error;
- }
+ try {
+ let comments = await client.database.getDiscussions("comments", query);
+ comments = parseComments(comments);
+ console.log(comments);
+ return comments;
+ } catch (error) {
+ return error;
+ }
};
/**
@@ -185,14 +185,14 @@ export const getUserComments = async query => {
* @param permlink post permlink
*/
export const getPost = (user, permlink) => {
- return new Promise((resolve, reject) => {
- try {
- let post = client.database.call("get_content", [user, permlink]);
- resolve(post);
- } catch (error) {
- reject(error);
- }
- });
+ return new Promise((resolve, reject) => {
+ try {
+ let post = client.database.call("get_content", [user, permlink]);
+ resolve(post);
+ } catch (error) {
+ reject(error);
+ }
+ });
};
/**
@@ -201,20 +201,20 @@ export const getPost = (user, permlink) => {
* @param permlink post permlink
*/
export const getComments = (user, permlink) => {
- let comments;
- return new Promise((resolve, reject) => {
- client.database
- .call("get_content_replies", [user, permlink])
- .then(result => {
- comments = parseComments(result);
- })
- .then(() => {
- resolve(comments);
- })
- .catch(error => {
- reject(error);
- });
- });
+ let comments;
+ return new Promise((resolve, reject) => {
+ client.database
+ .call("get_content_replies", [user, permlink])
+ .then(result => {
+ comments = parseComments(result);
+ })
+ .then(() => {
+ resolve(comments);
+ })
+ .catch(error => {
+ reject(error);
+ });
+ });
};
/**
@@ -223,17 +223,17 @@ export const getComments = (user, permlink) => {
* @param permlink post permlink
*/
export const getPostWithComments = async (user, permlink) => {
- let post;
- let comments;
+ let post;
+ let comments;
- await getPost(user, permlink).then(result => {
- post = result;
- });
- await getComments(user, permlink).then(result => {
- comments = result;
- });
+ await getPost(user, permlink).then(result => {
+ post = result;
+ });
+ await getComments(user, permlink).then(result => {
+ comments = result;
+ });
- return [post, comments];
+ return [post, comments];
};
/**
@@ -242,43 +242,43 @@ export const getPostWithComments = async (user, permlink) => {
* @param postingKey private posting key
*/
export const upvote = (vote, postingKey) => {
- let key = PrivateKey.fromString(postingKey);
- return new Promise((resolve, reject) => {
- client.broadcast
- .vote(vote, key)
- .then(result => {
- console.log(result);
- resolve(result);
- })
- .catch(err => {
- console.log(err);
- reject(err);
- });
- });
+ let key = PrivateKey.fromString(postingKey);
+ return new Promise((resolve, reject) => {
+ client.broadcast
+ .vote(vote, key)
+ .then(result => {
+ console.log(result);
+ resolve(result);
+ })
+ .catch(err => {
+ console.log(err);
+ reject(err);
+ });
+ });
};
/**
* @method upvoteAmount estimate upvote amount
*/
export const upvoteAmount = async input => {
- if (rewardFund == null || medianPrice == null) {
- rewardFund = await client.database.call("get_reward_fund", ["post"]);
+ if (!rewardFund || !medianPrice) {
+ rewardFund = await client.database.call("get_reward_fund", ["post"]);
- await client.database
- .getCurrentMedianHistoryPrice()
- .then(res => {
- medianPrice = res;
- })
- .catch(err => {
- console.log(err);
- });
- }
+ await client.database
+ .getCurrentMedianHistoryPrice()
+ .then(res => {
+ medianPrice = res;
+ })
+ .catch(err => {
+ console.log(err);
+ });
+ }
- let estimated =
- (input / parseFloat(rewardFund.recent_claims)) *
- parseFloat(rewardFund.reward_balance) *
- parseFloat(medianPrice.base);
- return estimated;
+ let estimated =
+ (input / parseFloat(rewardFund.recent_claims)) *
+ parseFloat(rewardFund.reward_balance) *
+ parseFloat(medianPrice.base);
+ return estimated;
};
/**
@@ -287,258 +287,255 @@ export const upvoteAmount = async input => {
* @param PrivateKey Private posting key
*/
export const postComment = (comment, postingKey) => {
- let key = PrivateKey.fromString(postingKey);
- return new Promise((resolve, reject) => {
- try {
- client.broadcast.comment(comment, key).then(result => {
- resolve(result);
- });
- } catch (error) {
- console.log(error);
- reject(error);
- }
- });
+ let key = PrivateKey.fromString(postingKey);
+ return new Promise((resolve, reject) => {
+ try {
+ client.broadcast.comment(comment, key).then(result => {
+ resolve(result);
+ });
+ } catch (error) {
+ console.log(error);
+ reject(error);
+ }
+ });
};
export const transferToken = (data, activeKey) => {
- let key = PrivateKey.fromString(activeKey);
- return new Promise((resolve, reject) => {
- client.broadcast
- .transfer(data, key)
- .then(result => {
- console.log(result);
- resolve(result);
- })
- .catch(err => {
- console.log(err);
- reject(err);
- });
- });
+ let key = PrivateKey.fromString(activeKey);
+ return new Promise((resolve, reject) => {
+ client.broadcast
+ .transfer(data, key)
+ .then(result => {
+ console.log(result);
+ resolve(result);
+ })
+ .catch(err => {
+ console.log(err);
+ reject(err);
+ });
+ });
};
export const followUser = (data, postingKey) => {
- let key;
- try {
- key = PrivateKey.fromString(postingKey);
- } catch (error) {
- console.log(error);
- }
- let json = {
- id: "follow",
- json: JSON.stringify([
- "follow",
- {
- follower: `${data.follower}`,
- following: `${data.following}`,
- what: ["blog"],
- },
- ]),
- required_auths: [],
- required_posting_auths: [`${data.follower}`],
- };
+ let key;
+ try {
+ key = PrivateKey.fromString(postingKey);
+ } catch (error) {
+ console.log(error);
+ }
+ let json = {
+ id: "follow",
+ json: JSON.stringify([
+ "follow",
+ {
+ follower: `${data.follower}`,
+ following: `${data.following}`,
+ what: ["blog"],
+ },
+ ]),
+ required_auths: [],
+ required_posting_auths: [`${data.follower}`],
+ };
- return new Promise((resolve, reject) => {
- client.broadcast
- .json(json, key)
- .then(result => {
- console.log(result);
- resolve(result);
- })
- .catch(err => {
- console.log(err);
- reject(err);
- });
- });
+ return new Promise((resolve, reject) => {
+ client.broadcast
+ .json(json, key)
+ .then(result => {
+ console.log(result);
+ resolve(result);
+ })
+ .catch(err => {
+ console.log(err);
+ reject(err);
+ });
+ });
};
export const unfollowUser = (data, postingKey) => {
- let key;
- try {
- key = PrivateKey.fromString(postingKey);
- } catch (error) {
- console.log(error);
- }
- let json = {
- id: "follow",
- json: JSON.stringify([
- "follow",
- {
- follower: `${data.follower}`,
- following: `${data.following}`,
- what: [""],
- },
- ]),
- required_auths: [],
- required_posting_auths: [`${data.follower}`],
- };
+ let key;
+ try {
+ key = PrivateKey.fromString(postingKey);
+ } catch (error) {
+ console.log(error);
+ }
+ let json = {
+ id: "follow",
+ json: JSON.stringify([
+ "follow",
+ {
+ follower: `${data.follower}`,
+ following: `${data.following}`,
+ what: [""],
+ },
+ ]),
+ required_auths: [],
+ required_posting_auths: [`${data.follower}`],
+ };
- return new Promise((resolve, reject) => {
- client.broadcast
- .json(json, key)
- .then(result => {
- console.log(result);
- resolve(result);
- })
- .catch(err => {
- console.log(err);
- reject(err);
- });
- });
+ return new Promise((resolve, reject) => {
+ client.broadcast
+ .json(json, key)
+ .then(result => {
+ console.log(result);
+ resolve(result);
+ })
+ .catch(err => {
+ console.log(err);
+ reject(err);
+ });
+ });
};
export const delegate = (data, activeKey) => {
- let key;
- try {
- key = PrivateKey.fromString(activeKey);
- } catch (error) {
- console.log(error);
- }
+ let key;
+ try {
+ key = PrivateKey.fromString(activeKey);
+ } catch (error) {
+ console.log(error);
+ }
- return new Promise((resolve, reject) => {
- client.broadcast
- .delegateVestingShares(data, key)
- .then(result => {
- resolve(result);
- })
- .catch(err => {
- console.log(err);
- reject(err);
- });
- });
+ return new Promise((resolve, reject) => {
+ client.broadcast
+ .delegateVestingShares(data, key)
+ .then(result => {
+ resolve(result);
+ })
+ .catch(err => {
+ console.log(err);
+ reject(err);
+ });
+ });
};
export const globalProps = async () => {
- try {
- let global_properties = await client.database.getDynamicGlobalProperties();
- return global_properties;
- } catch (error) {
- console.log(error);
- return error;
- }
+ try {
+ let global_properties = await client.database.getDynamicGlobalProperties();
+ return global_properties;
+ } catch (error) {
+ console.log(error);
+ return error;
+ }
};
export const transferToVesting = (data, activeKey) => {
- let key;
- try {
- key = PrivateKey.fromString(activeKey);
- console.log(key);
- } catch (error) {
+ let key;
+ try {
+ key = PrivateKey.fromString(activeKey);
+ console.log(key);
+ } catch (error) {
+ console.log(error);
+ }
+
+ const op = [
+ "transfer_to_vesting",
+ {
+ from: data.from,
+ to: data.to,
+ amount: data.amount,
+ },
+ ];
+
+ return new Promise((resolve, reject) => {
+ client.broadcast
+ .sendOperations([op], key)
+ .then(result => {
+ resolve(result);
+ })
+ .catch(error => {
console.log(error);
- }
-
- const op = [
- "transfer_to_vesting",
- {
- from: data.from,
- to: data.to,
- amount: data.amount,
- },
- ];
-
- return new Promise((resolve, reject) => {
- client.broadcast
- .sendOperations([op], key)
- .then(result => {
- resolve(result);
- })
- .catch(error => {
- console.log(error);
- reject(error);
- });
- });
+ reject(error);
+ });
+ });
};
export const withdrawVesting = (data, activeKey) => {
- let key;
- try {
- key = PrivateKey.fromString(activeKey);
- console.log(key);
- } catch (error) {
+ let key;
+ try {
+ key = PrivateKey.fromString(activeKey);
+ console.log(key);
+ } catch (error) {
+ console.log(error);
+ }
+
+ const op = [
+ "withdraw_vesting",
+ {
+ account: data.account,
+ vesting_shares: data.vesting_shares,
+ },
+ ];
+
+ return new Promise((resolve, reject) => {
+ client.broadcast
+ .sendOperations([op], key)
+ .then(result => {
+ resolve(result);
+ })
+ .catch(error => {
console.log(error);
- }
-
- const op = [
- "withdraw_vesting",
- {
- account: data.account,
- vesting_shares: data.vesting_shares,
- },
- ];
-
- return new Promise((resolve, reject) => {
- client.broadcast
- .sendOperations([op], key)
- .then(result => {
- resolve(result);
- })
- .catch(error => {
- console.log(error);
- reject(error);
- });
- });
+ reject(error);
+ });
+ });
};
export const postContent = (data, postingKey) => {
- let key;
+ let key;
- try {
- key = PrivateKey.fromString(postingKey);
- } catch (error) {
+ try {
+ key = PrivateKey.fromString(postingKey);
+ } catch (error) {
+ console.log(error);
+ }
+
+ let post = {
+ author: data.author,
+ body: data.body,
+ parent_author: "",
+ parent_permlink: data.tags[0],
+ permlink: data.permlink,
+ title: data.title,
+ json_metadata: JSON.stringify({
+ app: "esteem/2.0.0-mobile",
+ community: "esteem.app",
+ tags: data.tags,
+ }),
+ };
+
+ let op = {
+ author: data.author,
+ permlink: data.permlink,
+ max_accepted_payout: "1000000.000 SBD",
+ percent_steem_dollars: 10000,
+ allow_votes: true,
+ allow_curation_rewards: true,
+ extensions: [
+ [
+ 0,
+ {
+ beneficiaries: [{ account: "esteemapp", weight: 1000 }],
+ },
+ ],
+ ],
+ };
+
+ return new Promise((resolve, reject) => {
+ client.broadcast
+ .commentWithOptions(post, op, key)
+ .then(result => {
+ resolve(result);
+ })
+ .catch(error => {
console.log(error);
- }
-
- let post = {
- author: data.author,
- body: data.body,
- parent_author: "",
- parent_permlink: data.tags[0],
- permlink: data.permlink,
- title: data.title,
- json_metadata: JSON.stringify({
- app: "esteem/2.0.0-mobile",
- community: "esteem.app",
- tags: data.tags,
- }),
- };
-
- let op = {
- author: data.author,
- permlink: data.permlink,
- max_accepted_payout: "1000000.000 SBD",
- percent_steem_dollars: 10000,
- allow_votes: true,
- allow_curation_rewards: true,
- extensions: [
- [
- 0,
- {
- beneficiaries: [{ account: "esteemapp", weight: 1000 }],
- },
- ],
- ],
- };
-
- return new Promise((resolve, reject) => {
- client.broadcast
- .commentWithOptions(post, op, key)
- .then(result => {
- resolve(result);
- })
- .catch(error => {
- console.log(error);
- reject(error);
- });
- });
+ reject(error);
+ });
+ });
};
export const lookupAccounts = async username => {
- try {
- let users = await client.database.call("lookup_accounts", [
- username,
- 20,
- ]);
- return users;
- } catch (error) {
- throw error;
- }
+ try {
+ let users = await client.database.call("lookup_accounts", [username, 20]);
+ return users;
+ } catch (error) {
+ throw error;
+ }
};
diff --git a/src/screens/authorProfile/screen/authorScreen.js b/src/screens/authorProfile/screen/authorScreen.js
index a7a416bba..07801ddb0 100644
--- a/src/screens/authorProfile/screen/authorScreen.js
+++ b/src/screens/authorProfile/screen/authorScreen.js
@@ -3,14 +3,14 @@ import { FlatList, ActivityIndicator, BackHandler } from "react-native";
// External Components
import {
- Container,
- Card,
- CardItem,
- Body,
- Button,
- Icon,
- Text,
- View,
+ Container,
+ Card,
+ CardItem,
+ Body,
+ Button,
+ Icon,
+ Text,
+ View,
} from "native-base";
import ScrollableTabView from "@esteemapp/react-native-scrollable-tab-view";
import { Navigation } from "react-native-navigation";
@@ -18,526 +18,501 @@ import FastImage from "react-native-fast-image";
// Internal Components
import { TabBar } from "../../../components/tabBar";
-import PostCard from "../../../components/post-card/postCard";
+import { PostCard } from "../../../components/postCard";
+
import Comment from "../../../components/comment/comment";
-// TODO: Make utils for all using moment.
-import moment from "moment";
-
-//import Icon from "react-native-vector-icons/FontAwesome";
+import { getTimeFromNow } from "../../../utils/time";
// Styles
import styles from "./authorStyles";
-//import themes from "../../styles/themes";
import {
- followUser,
- unfollowUser,
- getFollows,
- getPosts,
- getUserComments,
- getUser,
- isFolllowing,
+ followUser,
+ unfollowUser,
+ getFollows,
+ getPosts,
+ getUserComments,
+ getUser,
+ isFolllowing,
} from "../../../providers/steem/dsteem";
import { getAuthStatus, getUserData } from "../../../realm/realm";
import { decryptKey } from "../../../utils/crypto";
class AuthorScreen extends Component {
- static get options() {
- return {
- _statusBar: {
- visible: true,
- drawBehind: false,
- },
- topBar: {
- animate: true,
- hideOnScroll: false,
- drawBehind: false,
- leftButtons: {
- id: "back",
- icon: require("../../../assets/back.png"),
- },
- },
- layout: {
- backgroundColor: "#f5fcff",
- },
- bottomTabs: {
- visible: false,
- drawBehind: true,
- },
- };
- }
- constructor(props) {
- super(props);
- Navigation.events().bindComponent(this);
- this.getBlog = this.getBlog.bind(this);
- this.getMore = this.getMore.bind(this);
- this.getComments = this.getComments.bind(this);
- this.follow = this.follow.bind(this);
- this.unfollow = this.unfollow.bind(this);
- this.state = {
- user: {
- name: "null",
- },
- posts: [],
- commments: [],
- replies: [],
- about: {},
- follows: {},
- loading: false,
- isLoggedIn: false,
- author: "author",
- start_author: "",
- start_permlink: "",
- isFolllowing: false,
- follow_loader: true,
- };
- }
+ static get options() {
+ return {
+ _statusBar: {
+ visible: true,
+ drawBehind: false,
+ },
+ topBar: {
+ animate: true,
+ hideOnScroll: false,
+ drawBehind: false,
+ leftButtons: {
+ id: "back",
+ icon: require("../../../assets/back.png"),
+ },
+ },
+ layout: {
+ backgroundColor: "#f5fcff",
+ },
+ bottomTabs: {
+ visible: false,
+ drawBehind: true,
+ },
+ };
+ }
+ constructor(props) {
+ super(props);
+ Navigation.events().bindComponent(this);
+ this.getBlog = this.getBlog.bind(this);
+ this.getMore = this.getMore.bind(this);
+ this.getComments = this.getComments.bind(this);
+ this.follow = this.follow.bind(this);
+ this.unfollow = this.unfollow.bind(this);
+ this.state = {
+ user: {
+ name: "null",
+ },
+ posts: [],
+ commments: [],
+ replies: [],
+ about: {},
+ follows: {},
+ loading: false,
+ isLoggedIn: false,
+ author: "author",
+ start_author: "",
+ start_permlink: "",
+ isFolllowing: false,
+ follow_loader: true,
+ };
+ }
- async componentDidMount() {
- BackHandler.addEventListener("hardwareBackPress", () => {
- Navigation.pop(this.props.componentId);
- return true;
- });
- /*for (var i = 0; i < themes.length; i++) {
+ async componentDidMount() {
+ BackHandler.addEventListener("hardwareBackPress", () => {
+ Navigation.pop(this.props.componentId);
+ return true;
+ });
+ /*for (var i = 0; i < themes.length; i++) {
themes[i].name == 'Light'?themes[0].apply():'';
}*/
- let info;
- let json_metadata;
- let isLoggedIn;
- let follows;
- let author;
- let user;
+ let info;
+ let json_metadata;
+ let isLoggedIn;
+ let follows;
+ let author;
+ let user;
- await getAuthStatus().then(res => {
- isLoggedIn = res;
+ await getAuthStatus().then(res => {
+ isLoggedIn = res;
+ });
+
+ if (isLoggedIn) {
+ getUserData()
+ .then(res => {
+ user = Array.from(res);
+ user = user[0];
+ })
+ .then(() => {
+ this.setState({
+ user: user,
+ });
+ })
+ .then(() => {
+ getUser(user.username).then(result => {
+ this.setState({
+ user: result,
+ });
+ });
+
+ isFolllowing(this.props.author, user.username).then(result => {
+ this.setState({
+ isFolllowing: result,
+ follow_loader: false,
+ });
+ });
});
-
- if (isLoggedIn == true) {
- getUserData()
- .then(res => {
- user = Array.from(res);
- user = user[0];
- })
- .then(() => {
- this.setState({
- user: user,
- });
- })
- .then(() => {
- getUser(user.username).then(result => {
- this.setState({
- user: result,
- });
- });
-
- isFolllowing(this.props.author, user.username).then(
- result => {
- this.setState({
- isFolllowing: result,
- follow_loader: false,
- });
- }
- );
- });
- }
-
- await getFollows(this.props.author).then(res => {
- follows = res;
- });
-
- author = await getUser(this.props.author);
-
- this.getBlog(this.state.user.name, author.name);
- this.getComments(author.name);
-
- json_metadata = JSON.parse(author.json_metadata);
- info = json_metadata.profile;
- this.setState(
- {
- about: info,
- author: author,
- isLoggedIn: isLoggedIn,
- follows: follows,
- },
- () => {
- console.log(this.state.about);
- }
- );
}
- getBlog = (user, author) => {
- this.setState({ loading: true });
- getPosts("blog", { tag: author, limit: 10 }, user)
- .then(result => {
- this.setState({
- loading: false,
- isReady: true,
- posts: result,
- start_author: result[result.length - 1].author,
- start_permlink: result[result.length - 1].permlink,
- refreshing: false,
- });
- })
- .catch(err => {
- console.log(err);
- });
- };
+ await getFollows(this.props.author).then(res => {
+ follows = res;
+ });
- getMore = () => {
- if (this.state.loading == true) {
- return false;
- } else {
- getPosts(
- "blog",
- {
- tag: this.state.user.name,
- limit: 10,
- start_author: this.state.start_author,
- start_permlink: this.state.start_permlink,
- },
- this.state.user.name
- ).then(result => {
- console.log(result);
- let posts = result;
- posts.shift();
- this.setState({
- posts: [...this.state.posts, ...posts],
- start_author: result[result.length - 1].author,
- start_permlink: result[result.length - 1].permlink,
- loading: false,
- });
- });
- }
- };
+ author = await getUser(this.props.author);
- getComments = async user => {
- await getUserComments({ start_author: user, limit: 10 })
- .then(result => {
- this.setState({
- isReady: true,
- commments: result,
- refreshing: false,
- loading: false,
- });
- })
- .catch(err => {
- console.log(err);
- });
- };
+ this.getBlog(this.state.user.name, author.name);
+ this.getComments(author.name);
- follow = async () => {
- let userData;
- let privateKey;
+ json_metadata = JSON.parse(author.json_metadata);
+ info = json_metadata.profile;
+ this.setState(
+ {
+ about: info,
+ author: author,
+ isLoggedIn: isLoggedIn,
+ follows: follows,
+ },
+ () => {
+ console.log(this.state.about);
+ }
+ );
+ }
- await this.setState({
- follow_loader: true,
+ getBlog = (user, author) => {
+ this.setState({ loading: true });
+ getPosts("blog", { tag: author, limit: 10 }, user)
+ .then(result => {
+ this.setState({
+ loading: false,
+ isReady: true,
+ posts: result,
+ start_author: result[result.length - 1].author,
+ start_permlink: result[result.length - 1].permlink,
+ refreshing: false,
});
+ })
+ .catch(err => {
+ console.log(err);
+ });
+ };
- await getUserData().then(result => {
- userData = Array.from(result);
+ getMore = () => {
+ if (this.state.loading) {
+ return false;
+ } else {
+ getPosts(
+ "blog",
+ {
+ tag: this.state.user.name,
+ limit: 10,
+ start_author: this.state.start_author,
+ start_permlink: this.state.start_permlink,
+ },
+ this.state.user.name
+ ).then(result => {
+ console.log(result);
+ let posts = result;
+ posts.shift();
+ this.setState({
+ posts: [...this.state.posts, ...posts],
+ start_author: result[result.length - 1].author,
+ start_permlink: result[result.length - 1].permlink,
+ loading: false,
});
-
- console.log(userData);
- privateKey = decryptKey(userData[0].postingKey, "pinCode");
-
- followUser(
- {
- follower: userData[0].username,
- following: this.state.author.name,
- },
- privateKey
- )
- .then(result => {
- console.log(result);
- this.setState({
- follow_loader: false,
- isFolllowing: true,
- });
- })
- .catch(err => {
- console.log(err);
- this.setState({
- follow_loader: false,
- isFolllowing: false,
- });
- });
- };
-
- unfollow = async () => {
- let userData;
- let privateKey;
-
- await this.setState({
- follow_loader: true,
- });
-
- await getUserData().then(result => {
- userData = Array.from(result);
- });
-
- console.log(userData);
- privateKey = decryptKey(userData[0].postingKey, "pinCode");
-
- unfollowUser(
- {
- follower: userData[0].username,
- following: this.state.author.name,
- },
- privateKey
- )
- .then(result => {
- this.setState({
- follow_loader: false,
- isFolllowing: false,
- });
- })
- .catch(err => {
- this.setState({
- follow_loader: false,
- });
- });
- };
-
- renderFooter = () => {
- if (!this.state.loading == false) return null;
-
- return (
-
-
-
- );
- };
-
- navigationButtonPressed({ buttonId }) {
- // will be called when "buttonOne" is clicked
- if (buttonId === "back") {
- Navigation.pop(this.props.componentId);
- }
+ });
}
+ };
- componentWillUnmount() {
- BackHandler.removeEventListener("hardwareBackPress");
+ getComments = async user => {
+ await getUserComments({ start_author: user, limit: 10 })
+ .then(result => {
+ this.setState({
+ isReady: true,
+ commments: result,
+ refreshing: false,
+ loading: false,
+ });
+ })
+ .catch(err => {
+ console.log(err);
+ });
+ };
+
+ follow = async () => {
+ let userData;
+ let privateKey;
+
+ await this.setState({
+ follow_loader: true,
+ });
+
+ await getUserData().then(result => {
+ userData = Array.from(result);
+ });
+
+ console.log(userData);
+ privateKey = decryptKey(userData[0].postingKey, "pinCode");
+
+ followUser(
+ {
+ follower: userData[0].username,
+ following: this.state.author.name,
+ },
+ privateKey
+ )
+ .then(result => {
+ console.log(result);
+ this.setState({
+ follow_loader: false,
+ isFolllowing: true,
+ });
+ })
+ .catch(err => {
+ console.log(err);
+ this.setState({
+ follow_loader: false,
+ isFolllowing: false,
+ });
+ });
+ };
+
+ unfollow = async () => {
+ let userData;
+ let privateKey;
+
+ await this.setState({
+ follow_loader: true,
+ });
+
+ await getUserData().then(result => {
+ userData = Array.from(result);
+ });
+
+ console.log(userData);
+ privateKey = decryptKey(userData[0].postingKey, "pinCode");
+
+ unfollowUser(
+ {
+ follower: userData[0].username,
+ following: this.state.author.name,
+ },
+ privateKey
+ )
+ .then(result => {
+ this.setState({
+ follow_loader: false,
+ isFolllowing: false,
+ });
+ })
+ .catch(err => {
+ this.setState({
+ follow_loader: false,
+ });
+ });
+ };
+
+ renderFooter = () => {
+ if (this.state.loading) return null;
+
+ return (
+
+
+
+ );
+ };
+
+ navigationButtonPressed({ buttonId }) {
+ // will be called when "buttonOne" is clicked
+ if (buttonId === "back") {
+ Navigation.pop(this.props.componentId);
}
+ }
- render() {
- return (
-
-
-
-
-
-
-
- {this.state.author.name}
-
- {this.state.about.about}
- {this.state.isFolllowing == true ? (
-
- ) : (
-
- )}
-
-
-
-
-
- {this.state.author.post_count} Posts
-
-
-
-
- {this.state.follows.follower_count}{" "}
- Followers
-
-
-
-
- {this.state.follows.following_count}{" "}
- Following
-
-
-
+ componentWillUnmount() {
+ BackHandler.removeEventListener("hardwareBackPress");
+ }
-
-
-
-
- {this.state.about.location}
-
-
-
-
-
- {moment
- .utc(this.state.author.created)
- .local()
- .fromNow()}
-
-
-
-
-
- (
-
- )}
- >
-
- (
-
- )}
- keyExtractor={(post, index) => index.toString()}
- onEndReached={info => {
- if (this.state.loading == false) {
- console.log(info);
- this.getMore();
- }
- }}
- onEndThreshold={0}
- bounces={false}
- ListFooterComponent={this.renderFooter}
- />
-
-
-
- (
-
- )}
- keyExtractor={(post, index) => index.toString()}
- onEndThreshold={0}
- bounces={false}
- ListFooterComponent={this.renderFooter}
- />
-
-
-
-
-
- STEEM Balance: {this.state.author.balance}
-
-
-
-
- SBD Balance: {this.state.author.sbd_balance}
-
-
-
-
- STEEM Power: {this.state.author.steem_power}{" "}
- SP
-
-
- Received STEEM Power:{" "}
- {this.state.author.received_steem_power} SP
-
-
- Delegated Power Power:{" "}
- {this.state.author.delegated_steem_power} SP
-
-
-
-
- Saving STEEM Balance:{" "}
- {this.state.author.savings_balance}
-
-
- Saving STEEM Balance:{" "}
- {this.state.author.savings_sbd_balance}
-
-
-
-
+ render() {
+ return (
+
+
+
+
+
+
+
+ {this.state.author.name}
+
+ {this.state.about.about}
+ {this.state.isFolllowing ? (
+
+ ) : (
+
+ )}
+
+
+
+
+ {this.state.author.post_count} Posts
-
- );
- }
+
+ {this.state.follows.follower_count} Followers
+
+
+ {this.state.follows.following_count} Following
+
+
+
+
+
+
+
+ {this.state.about.location}
+
+
+
+
+
+ {getTimeFromNow(this.state.author.created)}
+
+
+
+
+
+ (
+
+ )}
+ >
+
+ (
+
+ )}
+ keyExtractor={(post, index) => index.toString()}
+ onEndReached={info => {
+ if (!this.state.loading) {
+ console.log(info);
+ this.getMore();
+ }
+ }}
+ onEndThreshold={0}
+ bounces={false}
+ ListFooterComponent={this.renderFooter}
+ />
+
+
+
+ (
+
+ )}
+ keyExtractor={(post, index) => index.toString()}
+ onEndThreshold={0}
+ bounces={false}
+ ListFooterComponent={this.renderFooter}
+ />
+
+
+
+
+ STEEM Balance: {this.state.author.balance}
+
+
+ SBD Balance: {this.state.author.sbd_balance}
+
+
+ STEEM Power: {this.state.author.steem_power} SP
+
+ Received STEEM Power: {this.state.author.received_steem_power}{" "}
+ SP
+
+
+ Delegated Power Power:{" "}
+ {this.state.author.delegated_steem_power} SP
+
+
+
+
+ Saving STEEM Balance: {this.state.author.savings_balance}
+
+
+ Saving STEEM Balance: {this.state.author.savings_sbd_balance}
+
+
+
+
+
+
+ );
+ }
}
export default AuthorScreen;
diff --git a/src/screens/home/feed.js b/src/screens/home/feed.js
index c3f1391b1..357bec63b 100644
--- a/src/screens/home/feed.js
+++ b/src/screens/home/feed.js
@@ -1,13 +1,5 @@
import React from "react";
-import {
- StyleSheet,
- FlatList,
- View,
- StatusBar,
- Dimensions,
- ActivityIndicator,
- AppState,
-} from "react-native";
+import { FlatList, View, ActivityIndicator, AppState } from "react-native";
import {
Container,
Header,
@@ -28,7 +20,9 @@ import { getPosts } from "../../providers/steem/dsteem";
import Placeholder from "rn-placeholder";
// COMPONENTS
-import PostCard from "../../components/post-card/postCard";
+import { PostCard } from "../../components/postCard";
+import { FilterBar } from "../../components/filterBar";
+
/* eslint-enable no-unused-vars */
class FeedPage extends React.Component {
@@ -138,6 +132,20 @@ class FeedPage extends React.Component {
render() {
return (
+ {this.state.isReady && (
+
+ )}
{this.state.isReady ? (
{
user = Array.from(res);
});
diff --git a/src/screens/home/hot.js b/src/screens/home/hot.js
index ad5f1e290..1f0951296 100644
--- a/src/screens/home/hot.js
+++ b/src/screens/home/hot.js
@@ -1,14 +1,6 @@
/* eslint-disable no-unused-vars */
import React from "react";
-import {
- StyleSheet,
- FlatList,
- View,
- Text,
- TouchableOpacity,
- ActivityIndicator,
-} from "react-native";
-import { Navigation } from "react-native-navigation";
+import { FlatList, View, ActivityIndicator } from "react-native";
import styles from "../../styles/hot.styles";
@@ -19,154 +11,169 @@ import { getPosts } from "../../providers/steem/dsteem";
import Placeholder from "rn-placeholder";
// COMPONENTS
-import PostCard from "../../components/post-card/postCard";
+import { PostCard } from "../../components/postCard";
+import { FilterBar } from "../../components/filterBar";
// SCREENS
/* eslint-enable no-unused-vars */
class HotPage extends React.Component {
- constructor(props) {
- super(props);
+ constructor(props) {
+ super(props);
- this.getHotPosts = this.getHotPosts.bind(this);
- this.getMoreHot = this.getMoreHot.bind(this);
- this.refreshHotPosts = this.refreshHotPosts.bind(this);
- this.state = {
- isReady: false,
- posts: [],
- start_author: "",
- start_permlink: "",
- refreshing: false,
- loading: false,
- isLoggedIn: this.props.isLoggedIn,
- };
- }
-
- componentDidMount() {
- console.log(this.props);
- this.getHotPosts();
- }
-
- getHotPosts = () => {
- getPosts("hot", { tag: "", limit: 10 }, this.props.user.name)
- .then(result => {
- this.setState({
- isReady: true,
- posts: result,
- start_author: result[result.length - 1].author,
- start_permlink: result[result.length - 1].permlink,
- refreshing: false,
- });
- })
- .catch(err => {
- alert(err);
- });
+ this.getHotPosts = this.getHotPosts.bind(this);
+ this.getMoreHot = this.getMoreHot.bind(this);
+ this.refreshHotPosts = this.refreshHotPosts.bind(this);
+ this.state = {
+ isReady: false,
+ posts: [],
+ start_author: "",
+ start_permlink: "",
+ refreshing: false,
+ loading: false,
+ isLoggedIn: this.props.isLoggedIn,
};
+ }
- getMoreHot = () => {
- this.setState({ loading: true });
- getPosts(
- "hot",
- {
- tag: "",
- limit: 10,
- start_author: this.state.start_author,
- start_permlink: this.state.start_permlink,
- },
- this.props.user.name
- ).then(result => {
- let posts = result;
- posts.shift();
- this.setState({
- posts: [...this.state.posts, ...posts],
- start_author: result[result.length - 1].author,
- start_permlink: result[result.length - 1].permlink,
- });
+ componentDidMount() {
+ console.log(this.props);
+ this.getHotPosts();
+ }
+
+ getHotPosts = () => {
+ getPosts("hot", { tag: "", limit: 10 }, this.props.user.name)
+ .then(result => {
+ this.setState({
+ isReady: true,
+ posts: result,
+ start_author: result[result.length - 1].author,
+ start_permlink: result[result.length - 1].permlink,
+ refreshing: false,
});
- };
+ })
+ .catch(err => {
+ alert(err);
+ });
+ };
- refreshHotPosts = () => {
- this.setState(
- {
- refreshing: true,
- },
- () => {
- this.getHotPosts();
- }
- );
- };
+ getMoreHot = () => {
+ this.setState({ loading: true });
+ getPosts(
+ "hot",
+ {
+ tag: "",
+ limit: 10,
+ start_author: this.state.start_author,
+ start_permlink: this.state.start_permlink,
+ },
+ this.props.user.name
+ ).then(result => {
+ let posts = result;
+ posts.shift();
+ this.setState({
+ posts: [...this.state.posts, ...posts],
+ start_author: result[result.length - 1].author,
+ start_permlink: result[result.length - 1].permlink,
+ });
+ });
+ };
- renderFooter = () => {
- if (!this.state.loading) return null;
+ refreshHotPosts = () => {
+ this.setState(
+ {
+ refreshing: true,
+ },
+ () => {
+ this.getHotPosts();
+ }
+ );
+ };
- return (
-
-
+ renderFooter = () => {
+ if (!this.state.loading) return null;
+
+ return (
+
+
+
+ );
+ };
+
+ render() {
+ return (
+
+ {this.state.isReady && (
+
+ )}
+ {this.state.isReady ? (
+ (
+
+ )}
+ keyExtractor={(post, index) => index.toString()}
+ onEndReached={this.getMore}
+ removeClippedSubviews={true}
+ refreshing={this.state.refreshing}
+ onRefresh={() => this.refreshHotPosts()}
+ onEndThreshold={0}
+ initialNumToRender={10}
+ ListFooterComponent={this.renderFooter}
+ />
+ ) : (
+
+
+
- );
- };
-
- render() {
- return (
-
- {this.state.isReady ? (
- (
-
- )}
- keyExtractor={(post, index) => index.toString()}
- onEndReached={this.getMore}
- removeClippedSubviews={true}
- refreshing={this.state.refreshing}
- onRefresh={() => this.refreshHotPosts()}
- onEndThreshold={0}
- initialNumToRender={10}
- ListFooterComponent={this.renderFooter}
- />
- ) : (
-
-
-
-
-
-
-
-
-
-
-
- )}
+
+
- );
- }
+
+
+
+
+ )}
+
+ );
+ }
}
export default HotPage;
diff --git a/src/screens/home/trending.js b/src/screens/home/trending.js
index 29eba0b9a..de81def49 100644
--- a/src/screens/home/trending.js
+++ b/src/screens/home/trending.js
@@ -9,154 +9,154 @@ import { getPosts } from "../../providers/steem/dsteem";
import Placeholder from "rn-placeholder";
// COMPONENTS
-import PostCard from "../../components/post-card/postCard";
+import { PostCard } from "../../components/postCard";
// SCREENS
/* eslint-enable no-unused-vars */
class TrendingPage extends React.Component {
- constructor(props) {
- super(props);
+ constructor(props) {
+ super(props);
- this.getTrending = this.getTrending.bind(this);
- this.getMore = this.getMore.bind(this);
- this.refreshData = this.refreshData.bind(this);
- this.state = {
- isReady: false,
- posts: [],
- user: [],
- start_author: "",
- start_permlink: "",
- refreshing: false,
- loading: false,
- isLoggedIn: this.props.isLoggedIn,
- };
- }
-
- componentDidMount() {
- this.getTrending();
- }
-
- getTrending = () => {
- getPosts("trending", { tag: "", limit: 10 }, this.props.user.name)
- .then(result => {
- this.setState({
- isReady: true,
- posts: result,
- start_author: result[result.length - 1].author,
- start_permlink: result[result.length - 1].permlink,
- refreshing: false,
- });
- })
- .catch(err => {
- alert(err);
- });
+ this.getTrending = this.getTrending.bind(this);
+ this.getMore = this.getMore.bind(this);
+ this.refreshData = this.refreshData.bind(this);
+ this.state = {
+ isReady: false,
+ posts: [],
+ user: [],
+ start_author: "",
+ start_permlink: "",
+ refreshing: false,
+ loading: false,
+ isLoggedIn: this.props.isLoggedIn,
};
+ }
- getMore = () => {
- this.setState({ loading: true });
- getPosts(
- "trending",
- {
- tag: "",
- limit: 10,
- start_author: this.state.start_author,
- start_permlink: this.state.start_permlink,
- },
- this.props.user.name
- ).then(result => {
- let posts = result;
- posts.shift();
- this.setState({
- posts: [...this.state.posts, ...posts],
- start_author: result[result.length - 1].author,
- start_permlink: result[result.length - 1].permlink,
- });
+ componentDidMount() {
+ this.getTrending();
+ }
+
+ getTrending = () => {
+ getPosts("trending", { tag: "", limit: 10 }, this.props.user.name)
+ .then(result => {
+ this.setState({
+ isReady: true,
+ posts: result,
+ start_author: result[result.length - 1].author,
+ start_permlink: result[result.length - 1].permlink,
+ refreshing: false,
});
- };
+ })
+ .catch(err => {
+ alert(err);
+ });
+ };
- refreshData = () => {
- this.setState(
- {
- refreshing: true,
- },
- () => {
- this.getTrending();
- }
- );
- };
+ getMore = () => {
+ this.setState({ loading: true });
+ getPosts(
+ "trending",
+ {
+ tag: "",
+ limit: 10,
+ start_author: this.state.start_author,
+ start_permlink: this.state.start_permlink,
+ },
+ this.props.user.name
+ ).then(result => {
+ let posts = result;
+ posts.shift();
+ this.setState({
+ posts: [...this.state.posts, ...posts],
+ start_author: result[result.length - 1].author,
+ start_permlink: result[result.length - 1].permlink,
+ });
+ });
+ };
- renderFooter = () => {
- if (!this.state.loading) return null;
+ refreshData = () => {
+ this.setState(
+ {
+ refreshing: true,
+ },
+ () => {
+ this.getTrending();
+ }
+ );
+ };
- return (
-
-
+ renderFooter = () => {
+ if (!this.state.loading) return null;
+
+ return (
+
+
+
+ );
+ };
+
+ render() {
+ return (
+
+ {this.state.isReady ? (
+ (
+
+ )}
+ keyExtractor={(post, index) => index.toString()}
+ onEndReached={this.getMore}
+ removeClippedSubviews={true}
+ refreshing={this.state.refreshing}
+ onRefresh={() => this.refreshData()}
+ onEndThreshold={0}
+ initialNumToRender={10}
+ ListFooterComponent={this.renderFooter}
+ />
+ ) : (
+
+
+
- );
- };
-
- render() {
- return (
-
- {this.state.isReady ? (
- (
-
- )}
- keyExtractor={(post, index) => index.toString()}
- onEndReached={this.getMore}
- removeClippedSubviews={true}
- refreshing={this.state.refreshing}
- onRefresh={() => this.refreshData()}
- onEndThreshold={0}
- initialNumToRender={10}
- ListFooterComponent={this.renderFooter}
- />
- ) : (
-
-
-
-
-
-
-
-
-
-
-
- )}
+
+
- );
- }
+
+
+
+
+ )}
+
+ );
+ }
}
export default TrendingPage;
diff --git a/src/screens/login/screen/loginScreen.js b/src/screens/login/screen/loginScreen.js
index 45a5a6bbf..dfd84761e 100644
--- a/src/screens/login/screen/loginScreen.js
+++ b/src/screens/login/screen/loginScreen.js
@@ -1,68 +1,26 @@
import React, { Component } from "react";
-import {
- View,
- ActivityIndicator,
- Text,
- Image,
- TouchableOpacity,
- TextInput,
- BackHandler,
- Linking,
- StatusBar,
-} from "react-native";
-
-import { Navigation } from "react-native-navigation";
-import Ionicons from "react-native-vector-icons/Ionicons";
-import FastImage from "react-native-fast-image";
-
-import { TabBar } from "../../../components/tabBar";
-import { LoginHeader } from "../../../components/loginHeader";
-import { FormInput } from "../../../components/formInput";
-import { InformationArea } from "../../../components/informationArea";
+import { View, BackHandler, Linking, StatusBar } from "react-native";
+import { KeyboardAwareScrollView } from "react-native-keyboard-aware-scroll-view";
import ScrollableTabView from "@esteemapp/react-native-scrollable-tab-view";
+
+// Internal Components
+import { FormInput } from "../../../components/formInput";
+import { TextButton } from "../../../components/buttons";
+import { InformationArea } from "../../../components/informationArea";
import { Login } from "../../../providers/steem/auth";
-
+import { LoginHeader } from "../../../components/loginHeader";
+import { MainButton } from "../../../components/mainButton";
+import { Navigation } from "react-native-navigation";
+import { TabBar } from "../../../components/tabBar";
import { addNewAccount } from "../../../redux/actions/accountAction";
-
-import { lookupAccounts } from "../../../providers/steem/dsteem";
import { goToAuthScreens } from "../../../navigation";
+import { lookupAccounts } from "../../../providers/steem/dsteem";
+import STEEM_CONNECT_LOGO from "../../../assets/steem_connect.png";
// Styles
import styles from "./loginStyles";
class LoginScreen extends Component {
- static get options() {
- return {
- _statusBar: {
- visible: true,
- drawBehind: false,
- },
- topBar: {
- animate: true,
- hideOnScroll: false,
- drawBehind: false,
- noBorder: true,
- visible: true,
- elevation: 0,
- leftButtons: {},
- rightButtons: [
- {
- id: "signup",
- text: "Sign Up",
- color: "#a7adaf",
- marginRight: 50,
- },
- ],
- },
- layout: {
- backgroundColor: "#f5fcff",
- },
- bottomTabs: {
- visible: false,
- drawBehind: true,
- },
- };
- }
constructor(props) {
super(props);
Navigation.events().bindComponent(this);
@@ -71,7 +29,8 @@ class LoginScreen extends Component {
username: "",
password: "",
isLoading: false,
- isUsernameValid: true,
+ isUsernameValid: false,
+ keyboardIsOpen: false,
};
}
@@ -112,7 +71,7 @@ class LoginScreen extends Component {
}
})
.catch(err => {
- alert(err);
+ // alert(err);
this.setState({ isLoading: false });
});
};
@@ -127,15 +86,13 @@ class LoginScreen extends Component {
this.setState({ password: value });
};
- navigationButtonPressed({ buttonId }) {
- if (buttonId === "signup") {
- Linking.openURL("https://signup.steemit.com/?ref=esteem").catch(err =>
- console.error("An error occurred", err)
- );
- }
- }
+ _handleSignUp = () => {
+ Linking.openURL("https://signup.steemit.com/?ref=esteem").catch(err =>
+ console.error("An error occurred", err)
+ );
+ };
- loginwithSc2 = () => {
+ _loginwithSc2 = () => {
Navigation.push(this.props.componentId, {
component: {
name: "navigation.eSteem.SteemConnect",
@@ -152,170 +109,98 @@ class LoginScreen extends Component {
};
render() {
+ const {
+ isLoading,
+ username,
+ isUsernameValid,
+ keyboardIsOpen,
+ password,
+ } = this.state;
+
return (
this._handleSignUp()}
/>
- (
-
- )}
+ this.setState({ keyboardIsOpen: true })}
+ onKeyboardWillHide={() => this.setState({ keyboardIsOpen: false })}
>
-
- this.handleUsername(value)}
- placeholder="Username"
- isEditable
- type="username"
- isFirstImage
- value={this.state.username}
- />
- this._handleOnPasswordChange(value)}
- placeholder="Password or WIF"
- isEditable
- secureTextEntry
- type="password"
- />
-
-
+ )}
+ >
+
+ this.handleUsername(value)}
+ placeholder="Username"
+ isEditable
+ type="username"
+ isFirstImage
+ value={username}
+ />
+ this._handleOnPasswordChange(value)}
+ placeholder="Password or WIF"
+ isEditable
+ secureTextEntry
+ type="password"
+ />
+
-
-
-
-
- Cancel
-
-
+ iconName="ios-information-circle-outline"
+ />
+
+
-
- {!this.state.isLoading ? (
-
-
-
- LOGIN
-
-
- ) : (
-
- )}
-
+ iconName="md-person"
+ iconColor="white"
+ text="LOGIN"
+ isDisable={
+ !isUsernameValid || password.length < 2 || username.length < 2
+ }
+ isLoading={isLoading}
+ />
-
-
-
-
-
-
-
-
- steem
- connect
-
-
-
+
+
+
-
-
+
+
);
}
diff --git a/src/screens/login/screen/loginStyles.js b/src/screens/login/screen/loginStyles.js
index 5b10f1ea5..540a5b73e 100644
--- a/src/screens/login/screen/loginStyles.js
+++ b/src/screens/login/screen/loginStyles.js
@@ -36,9 +36,28 @@ export default EStyleSheet.create({
flex: 1,
backgroundColor: "#ffffff",
minWidth: "$deviceWidth",
+ height: "$deviceHeight / 1.95",
},
steemConnectTab: {
backgroundColor: "#fff",
minWidth: "$deviceWidth",
+ flex: 1,
+ height: "$deviceHeight / 1.95",
+ },
+ mainButtonWrapper: {
+ position: "absolute",
+ right: 24,
+ bottom: 24,
+ flexDirection: "row",
+ },
+ footerButtons: {
+ flex: 1,
+ flexDirection: "row",
+ justifyContent: "center",
+ alignItems: "center",
+ alignSelf: "flex-end",
+ position: "absolute",
+ bottom: 45,
+ left: "$deviceWidth / 2.3",
},
});
diff --git a/src/screens/notification/screen/notificationScreen.js b/src/screens/notification/screen/notificationScreen.js
index 0470b511e..844b9e906 100644
--- a/src/screens/notification/screen/notificationScreen.js
+++ b/src/screens/notification/screen/notificationScreen.js
@@ -1,20 +1,36 @@
-import React from "react";
-import { Container, Text } from "native-base";
-
+import React, { Fragment } from "react";
+import { Text, View, SafeAreaView } from "react-native";
+import ScrollableTabView from "@esteemapp/react-native-scrollable-tab-view";
+import { TabBar } from "../../../components/tabBar";
+import { Notification } from "../../../components/notification";
// Styles
-//import styles from "./notificationStyles";
+import styles from "./notificationStyles";
class NotificationScreen extends React.Component {
- static navigationOptions = {
- title: "Notifications",
- };
-
- render() {
- return (
-
- Notifications
-
- );
- }
+ render() {
+ return (
+
+ (
+
+ )}
+ >
+
+
+
+
+ Leaderboard
+
+
+
+ );
+ }
}
export default NotificationScreen;
diff --git a/src/screens/notification/screen/notificationStyles.js b/src/screens/notification/screen/notificationStyles.js
index 814b1b4f6..7ce8b0bcd 100644
--- a/src/screens/notification/screen/notificationStyles.js
+++ b/src/screens/notification/screen/notificationStyles.js
@@ -1,3 +1,23 @@
import EStyleSheet from "react-native-extended-stylesheet";
-export default EStyleSheet.create({});
+export default EStyleSheet.create({
+ tabbar: {
+ alignSelf: "center",
+ height: 55,
+ backgroundColor: "white",
+ borderBottomColor: "#f1f1f1",
+ },
+ tabView: {
+ alignSelf: "center",
+ backgroundColor: "transparent",
+ },
+ notificationTab: {
+ backgroundColor: "#fff",
+ minWidth: "$deviceWidth",
+ },
+ leaderboardTab: {
+ flex: 1,
+ backgroundColor: "#ffffff",
+ minWidth: "$deviceWidth",
+ },
+});
diff --git a/src/screens/profile/profile.js b/src/screens/profile/profile.js
index df8e97bad..a526782aa 100644
--- a/src/screens/profile/profile.js
+++ b/src/screens/profile/profile.js
@@ -1,387 +1,336 @@
/* eslint-disable no-unused-vars */
import React from "react";
-import {
- StatusBar,
- Dimensions,
- FlatList,
- ActivityIndicator,
-} from "react-native";
+import { FlatList, ActivityIndicator } from "react-native";
-import moment from "moment";
+import { getTimeFromNow } from "../../utils/time";
import FastImage from "react-native-fast-image";
import ScrollableTabView from "@esteemapp/react-native-scrollable-tab-view";
import { TabBar } from "../../../components/tabBar";
import DiscoverPage from "../discover/discover";
-import PostCard from "../../components/post-card/postCard";
+import { PostCard } from "../../components/postCard";
import Comment from "../../components/comment/comment";
-import {
- Content,
- Card,
- CardItem,
- View,
- Header,
- Left,
- Body,
- Right,
- Button,
- Icon,
- Title,
- Text,
- Container,
-} from "native-base";
+import { Card, CardItem, View, Body } from "native-base";
import { getUserData, getAuthStatus } from "../../realm/realm";
import {
- getUser,
- getFollows,
- getPosts,
- getUserComments,
- getUserReplies,
+ getUser,
+ getFollows,
+ getPosts,
+ getUserComments,
} from "../../providers/steem/dsteem";
-import store from "../../redux/store/store";
import styles from "../../styles/profile.styles";
/* eslint-enable no-unused-vars */
class ProfilePage extends React.Component {
- static get options() {
- return {
- _statusBar: {
- visible: true,
- drawBehind: false,
- },
- topBar: {
- animate: true,
- hideOnScroll: false,
- drawBehind: false,
- leftButtons: {
- id: "back",
- },
- },
- layout: {
- backgroundColor: "#f5fcff",
- },
- bottomTabs: {
- visible: false,
- drawBehind: true,
- },
- };
- }
+ static get options() {
+ return {
+ _statusBar: {
+ visible: true,
+ drawBehind: false,
+ },
+ topBar: {
+ animate: true,
+ hideOnScroll: false,
+ drawBehind: false,
+ leftButtons: {
+ id: "back",
+ },
+ },
+ layout: {
+ backgroundColor: "#f5fcff",
+ },
+ bottomTabs: {
+ visible: false,
+ drawBehind: true,
+ },
+ };
+ }
- constructor() {
- super();
- this.getBlog = this.getBlog.bind(this);
- this.getMore = this.getMore.bind(this);
- this.getComments = this.getComments.bind(this);
- this.state = {
- user: [],
- posts: [],
- commments: [],
- replies: [],
- about: {},
- follows: {},
- isLoggedIn: false,
- };
- }
+ constructor() {
+ super();
+ this.getBlog = this.getBlog.bind(this);
+ this.getMore = this.getMore.bind(this);
+ this.getComments = this.getComments.bind(this);
+ this.state = {
+ user: [],
+ posts: [],
+ commments: [],
+ replies: [],
+ about: {},
+ follows: {},
+ isLoggedIn: false,
+ };
+ }
- async componentDidMount() {
- let isLoggedIn;
- let user;
- let userData;
- let follows;
- let about;
+ async componentDidMount() {
+ let isLoggedIn;
+ let user;
+ let userData;
+ let follows;
+ let about;
- await getAuthStatus().then(res => {
- isLoggedIn = res;
- });
+ await getAuthStatus().then(res => {
+ isLoggedIn = res;
+ });
- if (isLoggedIn == true) {
- await getUserData().then(res => {
- userData = Array.from(res);
- });
+ if (isLoggedIn) {
+ await getUserData().then(res => {
+ userData = Array.from(res);
+ });
- await getFollows(userData[0].username).then(res => {
- follows = res;
- });
+ await getFollows(userData[0].username).then(res => {
+ follows = res;
+ });
- user = await getUser(userData[0].username);
- about = JSON.parse(user.json_metadata);
- this.setState(
- {
- user: user,
- isLoggedIn: isLoggedIn,
- follows: follows,
- about: about.profile,
- },
- () => {
- this.getBlog(userData[0].username);
- this.getComments(userData[0].username);
- }
- );
+ user = await getUser(userData[0].username);
+ about = JSON.parse(user.json_metadata);
+ this.setState(
+ {
+ user: user,
+ isLoggedIn: isLoggedIn,
+ follows: follows,
+ about: about.profile,
+ },
+ () => {
+ this.getBlog(userData[0].username);
+ this.getComments(userData[0].username);
}
+ );
}
+ }
- renderFooter = () => {
- if (!this.state.loading == false) return null;
+ renderFooter = () => {
+ if (this.state.loading) return null;
- return (
-
-
-
- );
- };
+ return (
+
+
+
+ );
+ };
- getBlog = user => {
- this.setState({ loading: true });
- getPosts("blog", { tag: user, limit: 10 }, user)
- .then(result => {
- this.setState({
- isReady: true,
- posts: result,
- start_author: result[result.length - 1].author,
- start_permlink: result[result.length - 1].permlink,
- refreshing: false,
- loading: false,
- });
- })
- .catch(err => {
- alert(err);
- });
- };
-
- getMore = async () => {
- console.log("get more");
- await getPosts(
- "blog",
- {
- tag: this.state.user.name,
- limit: 10,
- start_author: this.state.start_author,
- start_permlink: this.state.start_permlink,
- },
- this.state.user.name
- ).then(result => {
- console.log(result);
- let posts = result;
- posts.shift();
- this.setState({
- posts: [...this.state.posts, ...posts],
- start_author: result[result.length - 1].author,
- start_permlink: result[result.length - 1].permlink,
- loading: false,
- });
+ getBlog = user => {
+ this.setState({ loading: true });
+ getPosts("blog", { tag: user, limit: 10 }, user)
+ .then(result => {
+ this.setState({
+ isReady: true,
+ posts: result,
+ start_author: result[result.length - 1].author,
+ start_permlink: result[result.length - 1].permlink,
+ refreshing: false,
+ loading: false,
});
- };
+ })
+ .catch(err => {
+ alert(err);
+ });
+ };
- getComments = async user => {
- await getUserComments({ start_author: user, limit: 10 })
- .then(result => {
- this.setState({
- isReady: true,
- commments: result,
- refreshing: false,
- loading: false,
- });
- })
- .catch(err => {
- console.log(err);
- });
- };
+ getMore = async () => {
+ console.log("get more");
+ await getPosts(
+ "blog",
+ {
+ tag: this.state.user.name,
+ limit: 10,
+ start_author: this.state.start_author,
+ start_permlink: this.state.start_permlink,
+ },
+ this.state.user.name
+ ).then(result => {
+ console.log(result);
+ let posts = result;
+ posts.shift();
+ this.setState({
+ posts: [...this.state.posts, ...posts],
+ start_author: result[result.length - 1].author,
+ start_permlink: result[result.length - 1].permlink,
+ loading: false,
+ });
+ });
+ };
- render() {
- return (
-
- {this.state.isLoggedIn ? (
-
-
-
-
-
-
- {this.state.user.name}
-
- {this.state.about.about}
-
-
-
-
-
- {this.state.user.post_count} Posts
-
-
-
-
- {this.state.follows.follower_count}{" "}
- Followers
-
-
-
-
- {this.state.follows.following_count}{" "}
- Following
-
-
-
+ getComments = async user => {
+ await getUserComments({ start_author: user, limit: 10 })
+ .then(result => {
+ this.setState({
+ isReady: true,
+ commments: result,
+ refreshing: false,
+ loading: false,
+ });
+ })
+ .catch(err => {
+ console.log(err);
+ });
+ };
-
-
-
-
- {this.state.about.location}
-
-
-
-
-
- {moment
- .utc(this.state.user.created)
- .local()
- .fromNow()}
-
-
-
-
-
- (
-
- )}
- >
-
- (
-
- )}
- keyExtractor={(post, index) =>
- index.toString()
- }
- onEndReached={info => {
- if (this.state.loading == false) {
- console.log(info);
- this.getMore();
- }
- }}
- onEndThreshold={0}
- bounces={false}
- ListFooterComponent={this.renderFooter}
- />
-
+ render() {
+ return (
+
+ {this.state.isLoggedIn ? (
+
+
+
+
+
+
+ {this.state.user.name}
+
+ {this.state.about.about}
+
+
+
+
+ {this.state.user.post_count} Posts
+
+
+ {this.state.follows.follower_count} Followers
+
+
+ {this.state.follows.following_count} Following
+
+
-
- (
-
- )}
- keyExtractor={(post, index) =>
- index.toString()
- }
- onEndThreshold={0}
- bounces={false}
- ListFooterComponent={this.renderFooter}
- />
-
-
-
-
-
- STEEM Balance: {this.state.user.balance}
-
-
-
-
- SBD Balance:{" "}
- {this.state.user.sbd_balance}
-
-
-
-
- STEEM Power:{" "}
- {this.state.user.steem_power} SP
-
-
- Received STEEM Power:{" "}
- {this.state.user.received_steem_power}{" "}
- SP
-
-
- Delegated Power Power:{" "}
- {this.state.user.delegated_steem_power}{" "}
- SP
-
-
-
-
- Saving STEEM Balance:{" "}
- {this.state.user.savings_balance}
-
-
- Saving STEEM Balance:{" "}
- {this.state.user.savings_sbd_balance}
-
-
-
-
-
- ) : (
-
- )}
+
+
+
+
+ {this.state.about.location}
+
+
+
+
+
+ {getTimeFromNow(this.state.user.created)}
+
+
+
+
- );
- }
+ (
+
+ )}
+ >
+
+ (
+
+ )}
+ keyExtractor={(post, index) => index.toString()}
+ onEndReached={info => {
+ if (!this.state.loading) {
+ console.log(info);
+ this.getMore();
+ }
+ }}
+ onEndThreshold={0}
+ bounces={false}
+ ListFooterComponent={this.renderFooter}
+ />
+
+
+
+ (
+
+ )}
+ keyExtractor={(post, index) => index.toString()}
+ onEndThreshold={0}
+ bounces={false}
+ ListFooterComponent={this.renderFooter}
+ />
+
+
+
+
+ STEEM Balance: {this.state.user.balance}
+
+
+ SBD Balance: {this.state.user.sbd_balance}
+
+
+ STEEM Power: {this.state.user.steem_power} SP
+
+ Received STEEM Power: {this.state.user.received_steem_power}{" "}
+ SP
+
+
+ Delegated Power Power:{" "}
+ {this.state.user.delegated_steem_power} SP
+
+
+
+
+ Saving STEEM Balance: {this.state.user.savings_balance}
+
+
+ Saving STEEM Balance: {this.state.user.savings_sbd_balance}
+
+
+
+
+
+ ) : (
+
+ )}
+
+ );
+ }
}
export default ProfilePage;
diff --git a/src/screens/profile/screen/profileScreen.js b/src/screens/profile/screen/profileScreen.js
index 94316c0ff..35b6a4816 100644
--- a/src/screens/profile/screen/profileScreen.js
+++ b/src/screens/profile/screen/profileScreen.js
@@ -2,23 +2,24 @@
import React from "react";
import { FlatList, ActivityIndicator } from "react-native";
-import moment from "moment";
+import { getTimeFromNow } from "../../../utils/time";
import FastImage from "react-native-fast-image";
import ScrollableTabView from "@esteemapp/react-native-scrollable-tab-view";
import { TabBar } from "../../../components/tabBar";
import DiscoverPage from "../../discover/discover";
-import PostCard from "../../../components/post-card/postCard";
+import { PostCard } from "../../../components/postCard";
+
import Comment from "../../../components/comment/comment";
import { Card, CardItem, View, Body, Icon, Text } from "native-base";
import { getUserData, getAuthStatus } from "../../../realm/realm";
import {
- getUser,
- getFollows,
- getPosts,
- getUserComments,
+ getUser,
+ getFollows,
+ getPosts,
+ getUserComments,
} from "../../../providers/steem/dsteem";
// Styles
@@ -26,344 +27,314 @@ import styles from "./profileStyles";
/* eslint-enable no-unused-vars */
class ProfileScreen extends React.Component {
- static get options() {
- return {
- _statusBar: {
- visible: true,
- drawBehind: false,
- },
- topBar: {
- animate: true,
- hideOnScroll: false,
- drawBehind: false,
- leftButtons: {
- id: "back",
- },
- },
- layout: {
- backgroundColor: "#f5fcff",
- },
- bottomTabs: {
- visible: false,
- drawBehind: true,
- },
- };
- }
+ static get options() {
+ return {
+ _statusBar: {
+ visible: true,
+ drawBehind: false,
+ },
+ topBar: {
+ animate: true,
+ hideOnScroll: false,
+ drawBehind: false,
+ leftButtons: {
+ id: "back",
+ },
+ },
+ layout: {
+ backgroundColor: "#f5fcff",
+ },
+ bottomTabs: {
+ visible: false,
+ drawBehind: true,
+ },
+ };
+ }
- constructor() {
- super();
- this.getBlog = this.getBlog.bind(this);
- this.getMore = this.getMore.bind(this);
- this.getComments = this.getComments.bind(this);
- this.state = {
- user: [],
- posts: [],
- commments: [],
- replies: [],
- about: {},
- follows: {},
- isLoggedIn: false,
- };
- }
+ constructor() {
+ super();
+ this.getBlog = this.getBlog.bind(this);
+ this.getMore = this.getMore.bind(this);
+ this.getComments = this.getComments.bind(this);
+ this.state = {
+ user: [],
+ posts: [],
+ commments: [],
+ replies: [],
+ about: {},
+ follows: {},
+ isLoggedIn: false,
+ };
+ }
- async componentDidMount() {
- await getAuthStatus().then(res => {
- const isLoggedIn = res;
- });
+ async componentDidMount() {
+ await getAuthStatus().then(res => {
+ const isLoggedIn = res;
+ });
- if (isLoggedIn === true) {
- let user;
- let userData;
- let follows;
- let about;
+ if (isLoggedIn) {
+ let user;
+ let userData;
+ let follows;
+ let about;
- await getUserData().then(res => {
- userData = Array.from(res);
- });
+ await getUserData().then(res => {
+ userData = Array.from(res);
+ });
- await getFollows(userData[0].username).then(res => {
- follows = res;
- });
+ await getFollows(userData[0].username).then(res => {
+ follows = res;
+ });
- user = await getUser(userData[0].username);
- about = JSON.parse(user.json_metadata);
- // BUG: json_metadata: "{}" is coming emty object!!
- this.setState(
- {
- user: user,
- isLoggedIn: isLoggedIn,
- follows: follows,
- about: about.profile,
- },
- () => {
- this.getBlog(userData[0].username);
- this.getComments(userData[0].username);
- }
- );
+ user = await getUser(userData[0].username);
+ about = JSON.parse(user.json_metadata);
+ // BUG: json_metadata: "{}" is coming emty object!!
+ this.setState(
+ {
+ user: user,
+ isLoggedIn: isLoggedIn,
+ follows: follows,
+ about: about.profile,
+ },
+ () => {
+ this.getBlog(userData[0].username);
+ this.getComments(userData[0].username);
}
+ );
}
+ }
- renderFooter = () => {
- if (!this.state.loading == false) return null;
+ renderFooter = () => {
+ if (this.state.loading) return null;
- return (
-
-
-
- );
- };
+ return (
+
+
+
+ );
+ };
- getBlog = user => {
- this.setState({ loading: true });
- getPosts("blog", { tag: user, limit: 10 }, user)
- .then(result => {
- this.setState({
- isReady: true,
- posts: result,
- start_author: result[result.length - 1].author,
- start_permlink: result[result.length - 1].permlink,
- refreshing: false,
- loading: false,
- });
- })
- .catch(err => {
- alert(err);
- });
- };
-
- getMore = async () => {
- console.log("get more");
- await getPosts(
- "blog",
- {
- tag: this.state.user.name,
- limit: 10,
- start_author: this.state.start_author,
- start_permlink: this.state.start_permlink,
- },
- this.state.user.name
- ).then(result => {
- console.log(result);
- let posts = result;
- posts.shift();
- this.setState({
- posts: [...this.state.posts, ...posts],
- start_author: result[result.length - 1].author,
- start_permlink: result[result.length - 1].permlink,
- loading: false,
- });
+ getBlog = user => {
+ this.setState({ loading: true });
+ getPosts("blog", { tag: user, limit: 10 }, user)
+ .then(result => {
+ this.setState({
+ isReady: true,
+ posts: result,
+ start_author: result[result.length - 1].author,
+ start_permlink: result[result.length - 1].permlink,
+ refreshing: false,
+ loading: false,
});
- };
+ })
+ .catch(err => {
+ alert(err);
+ });
+ };
- getComments = async user => {
- await getUserComments({ start_author: user, limit: 10 })
- .then(result => {
- this.setState({
- isReady: true,
- commments: result,
- refreshing: false,
- loading: false,
- });
- })
- .catch(err => {
- console.log(err);
- });
- };
+ getMore = async () => {
+ console.log("get more");
+ await getPosts(
+ "blog",
+ {
+ tag: this.state.user.name,
+ limit: 10,
+ start_author: this.state.start_author,
+ start_permlink: this.state.start_permlink,
+ },
+ this.state.user.name
+ ).then(result => {
+ console.log(result);
+ let posts = result;
+ posts.shift();
+ this.setState({
+ posts: [...this.state.posts, ...posts],
+ start_author: result[result.length - 1].author,
+ start_permlink: result[result.length - 1].permlink,
+ loading: false,
+ });
+ });
+ };
- render() {
- //TODO: Refactor ME !
- return (
-
- {this.state.isLoggedIn ? (
-
-
-
-
-
-
- {this.state.user.name}
-
- {this.state.about.about}
-
-
-
-
-
- {this.state.user.post_count} Posts
-
-
-
-
- {this.state.follows.follower_count}{" "}
- Followers
-
-
-
-
- {this.state.follows.following_count}{" "}
- Following
-
-
-
+ getComments = async user => {
+ await getUserComments({ start_author: user, limit: 10 })
+ .then(result => {
+ this.setState({
+ isReady: true,
+ commments: result,
+ refreshing: false,
+ loading: false,
+ });
+ })
+ .catch(err => {
+ console.log(err);
+ });
+ };
-
-
-
-
- {this.state.about.location}
-
-
-
-
-
- {moment
- .utc(this.state.user.created)
- .local()
- .fromNow()}
-
-
-
-
-
- (
-
- )}
- >
-
- (
-
- )}
- keyExtractor={(post, index) =>
- index.toString()
- }
- onEndReached={info => {
- if (this.state.loading == false) {
- console.log(info);
- this.getMore();
- }
- }}
- onEndThreshold={0}
- bounces={false}
- ListFooterComponent={this.renderFooter}
- />
-
+ render() {
+ //TODO: Refactor ME !
+ return (
+
+ {this.state.isLoggedIn ? (
+
+
+
+
+
+
+ {this.state.user.name}
+
+ {this.state.about.about}
+
+
+
+
+ {this.state.user.post_count} Posts
+
+
+ {this.state.follows.follower_count} Followers
+
+
+ {this.state.follows.following_count} Following
+
+
-
- (
-
- )}
- keyExtractor={(post, index) =>
- index.toString()
- }
- onEndThreshold={0}
- bounces={false}
- ListFooterComponent={this.renderFooter}
- />
-
-
-
-
-
- STEEM Balance: {this.state.user.balance}
-
-
-
-
- SBD Balance:{" "}
- {this.state.user.sbd_balance}
-
-
-
-
- STEEM Power:{" "}
- {this.state.user.steem_power} SP
-
-
- Received STEEM Power:{" "}
- {this.state.user.received_steem_power}{" "}
- SP
-
-
- Delegated Power Power:{" "}
- {this.state.user.delegated_steem_power}{" "}
- SP
-
-
-
-
- Saving STEEM Balance:{" "}
- {this.state.user.savings_balance}
-
-
- Saving STEEM Balance:{" "}
- {this.state.user.savings_sbd_balance}
-
-
-
-
-
- ) : (
-
- )}
+
+
+
+
+ {this.state.about.location}
+
+
+
+
+
+ {getTimeFromNow(this.state.user.created)}
+
+
+
+
- );
- }
+ (
+
+ )}
+ >
+
+ (
+
+ )}
+ keyExtractor={(post, index) => index.toString()}
+ onEndReached={info => {
+ if (!this.state.loading) {
+ console.log(info);
+ this.getMore();
+ }
+ }}
+ onEndThreshold={0}
+ bounces={false}
+ ListFooterComponent={this.renderFooter}
+ />
+
+
+
+ (
+
+ )}
+ keyExtractor={(post, index) => index.toString()}
+ onEndThreshold={0}
+ bounces={false}
+ ListFooterComponent={this.renderFooter}
+ />
+
+
+
+
+ STEEM Balance: {this.state.user.balance}
+
+
+ SBD Balance: {this.state.user.sbd_balance}
+
+
+ STEEM Power: {this.state.user.steem_power} SP
+
+ Received STEEM Power: {this.state.user.received_steem_power}{" "}
+ SP
+
+
+ Delegated Power Power:{" "}
+ {this.state.user.delegated_steem_power} SP
+
+
+
+
+ Saving STEEM Balance: {this.state.user.savings_balance}
+
+
+ Saving STEEM Balance: {this.state.user.savings_sbd_balance}
+
+
+
+
+
+ ) : (
+
+ )}
+
+ );
+ }
}
export default ProfileScreen;
diff --git a/src/screens/registerScreens.js b/src/screens/registerScreens.js
index 2c0713f8a..87be95758 100644
--- a/src/screens/registerScreens.js
+++ b/src/screens/registerScreens.js
@@ -22,7 +22,7 @@ import PinCode from "./pinCode";
// COMPONENTS
import SteemConnect from "./steem-connect/steemConnect";
-import PostCard from "../components/post-card/postCard";
+import { PostCard } from "../components/postCard";
import Search from "../components/search/search";
export const registerScreens = () => {
diff --git a/src/screens/side-menu/authLoading.js b/src/screens/side-menu/authLoading.js
index 53981206e..52201fb4c 100644
--- a/src/screens/side-menu/authLoading.js
+++ b/src/screens/side-menu/authLoading.js
@@ -5,54 +5,54 @@ import { ActivityIndicator, StatusBar, StyleSheet, View } from "react-native";
import { getAuthStatus, getUserData } from "../../realm/realm";
export class AuthLoadingScreen extends React.Component {
- constructor(props) {
- super(props);
- this.checkAuth();
- }
+ constructor(props) {
+ super(props);
+ this.checkAuth();
+ }
- // Fetch the login state from storage then navigate to our appropriate place
- checkAuth = async () => {
- await getAuthStatus()
- .then(result => {
- if (result === true) {
- getUserData()
- .then(userData => {
- // This will switch to the App screen or Auth screen and this loading
- // screen will be unmounted and thrown away.
- this.props.navigation.navigate("LoggedIn", {
- account: userData["0"].username,
- });
- })
- .catch(err => {
- alert(err);
- });
- } else {
- this.props.navigation.navigate("LoggedOut");
- }
+ // Fetch the login state from storage then navigate to our appropriate place
+ checkAuth = async () => {
+ await getAuthStatus()
+ .then(result => {
+ if (result) {
+ getUserData()
+ .then(userData => {
+ // This will switch to the App screen or Auth screen and this loading
+ // screen will be unmounted and thrown away.
+ this.props.navigation.navigate("LoggedIn", {
+ account: userData["0"].username,
+ });
})
.catch(err => {
- alert(err);
+ alert(err);
});
- };
+ } else {
+ this.props.navigation.navigate("LoggedOut");
+ }
+ })
+ .catch(err => {
+ alert(err);
+ });
+ };
- // Render any loading content that you like here
- render() {
- return (
-
-
-
-
- );
- }
+ // Render any loading content that you like here
+ render() {
+ return (
+
+
+
+
+ );
+ }
}
const styles = StyleSheet.create({
- container: {
- flex: 1,
- alignItems: "center",
- justifyContent: "center",
- },
- text: {
- fontSize: 32,
- },
+ container: {
+ flex: 1,
+ alignItems: "center",
+ justifyContent: "center",
+ },
+ text: {
+ fontSize: 32,
+ },
});
diff --git a/src/screens/side-menu/loggedInMenu.js b/src/screens/side-menu/loggedInMenu.js
index 6e1228252..6a61e8a15 100644
--- a/src/screens/side-menu/loggedInMenu.js
+++ b/src/screens/side-menu/loggedInMenu.js
@@ -1,270 +1,262 @@
import React from "react";
/* eslint-disable no-unused-vars */
import {
- Content,
- Text,
- List,
- ListItem,
- Icon,
- Container,
- Left,
- Right,
- View,
- Badge,
- Thumbnail,
+ Content,
+ Text,
+ List,
+ ListItem,
+ Icon,
+ Container,
+ Left,
+ Right,
+ View,
+ Badge,
+ Thumbnail,
} from "native-base";
/* eslint-enable no-unused-vars */
import styles from "./style";
-import FastImage from "react-native-fast-image";
import { getAccount } from "../../providers/steem/dsteem";
import { setAuthStatus } from "../../realm/realm";
import RNRestart from "react-native-restart";
import { Navigation } from "react-native-navigation";
const masterKeyMenuOptions = [
- {
- name: "Profile",
- route: "Profile",
- icon: "contact",
- bg: "#C5F442",
- },
- {
- name: "Bookmarks",
- route: "bookmarks",
- icon: "bookmarks",
- bg: "#DA4437",
- },
- {
- name: "Favorites",
- route: "favorites",
- icon: "heart",
- bg: "#DA4437",
- },
- {
- name: "Drafts",
- route: "drafts",
- icon: "create",
- bg: "#DA4437",
- },
- {
- name: "Schedules",
- route: "schedules",
- icon: "time",
- bg: "#DA4437",
- },
- {
- name: "Gallery",
- route: "galery",
- icon: "images",
- bg: "#DA4437",
- },
- {
- name: "Settings",
- route: "Settings",
- icon: "settings",
- bg: "#DA4437",
- },
+ {
+ name: "Profile",
+ route: "Profile",
+ icon: "contact",
+ bg: "#C5F442",
+ },
+ {
+ name: "Bookmarks",
+ route: "bookmarks",
+ icon: "bookmarks",
+ bg: "#DA4437",
+ },
+ {
+ name: "Favorites",
+ route: "favorites",
+ icon: "heart",
+ bg: "#DA4437",
+ },
+ {
+ name: "Drafts",
+ route: "drafts",
+ icon: "create",
+ bg: "#DA4437",
+ },
+ {
+ name: "Schedules",
+ route: "schedules",
+ icon: "time",
+ bg: "#DA4437",
+ },
+ {
+ name: "Gallery",
+ route: "galery",
+ icon: "images",
+ bg: "#DA4437",
+ },
+ {
+ name: "Settings",
+ route: "Settings",
+ icon: "settings",
+ bg: "#DA4437",
+ },
];
const postingKeyMenuOptions = [
- {
- name: "Profile",
- route: "Profile",
- icon: "contact",
- bg: "#C5F442",
- },
- {
- name: "Bookmarks",
- route: "bookmarks",
- icon: "bookmarks",
- bg: "#DA4437",
- },
- {
- name: "Favorites",
- route: "favorites",
- icon: "heart",
- bg: "#DA4437",
- },
- {
- name: "Drafts",
- route: "drafts",
- icon: "create",
- bg: "#DA4437",
- },
- {
- name: "Schedules",
- route: "schedules",
- icon: "time",
- bg: "#DA4437",
- },
- {
- name: "Gallery",
- route: "galery",
- icon: "images",
- bg: "#DA4437",
- },
- {
- name: "Settings",
- route: "Settings",
- icon: "settings",
- bg: "#DA4437",
- },
+ {
+ name: "Profile",
+ route: "Profile",
+ icon: "contact",
+ bg: "#C5F442",
+ },
+ {
+ name: "Bookmarks",
+ route: "bookmarks",
+ icon: "bookmarks",
+ bg: "#DA4437",
+ },
+ {
+ name: "Favorites",
+ route: "favorites",
+ icon: "heart",
+ bg: "#DA4437",
+ },
+ {
+ name: "Drafts",
+ route: "drafts",
+ icon: "create",
+ bg: "#DA4437",
+ },
+ {
+ name: "Schedules",
+ route: "schedules",
+ icon: "time",
+ bg: "#DA4437",
+ },
+ {
+ name: "Gallery",
+ route: "galery",
+ icon: "images",
+ bg: "#DA4437",
+ },
+ {
+ name: "Settings",
+ route: "Settings",
+ icon: "settings",
+ bg: "#DA4437",
+ },
];
export default class LoggedInSideBar extends React.Component {
- constructor(props) {
- super(props);
- this.state = {
- shadowOffsetWidth: 1,
- shadowRadius: 4,
- user: [],
- loginType: "",
- json_metadata: {},
- };
- }
-
- componentDidMount() {
- getAccount(this.props.user)
- .then(result => {
- let json_metadata = JSON.parse(result[0].json_metadata);
- this.setState({
- user: result[0],
- avatar: `https://steemitimages.com/u/${
- result[0].name
- }/avatar/small`,
- json_metadata: json_metadata.profile,
- });
- })
- .catch(err => {
- alert(err);
- });
- }
-
- hideSideMenu() {
- Navigation.mergeOptions("Component14", {
- sideMenu: {
- ["right"]: {
- visible: false,
- },
- },
- });
- }
-
- Logout = () => {
- let authData = {
- isLoggedIn: false,
- };
- setAuthStatus(authData)
- .then(() => {
- RNRestart.Restart();
- })
- .catch(err => {
- alert(err);
- });
+ constructor(props) {
+ super(props);
+ this.state = {
+ shadowOffsetWidth: 1,
+ shadowRadius: 4,
+ user: [],
+ loginType: "",
+ json_metadata: {},
};
+ }
- render() {
- return (
-
-
-
-
-
-
- {(this.state.json_metadata &&
- this.state.json_metadata.name) ||
- ""}
-
-
- @{this.state.user.name}
-
-
- (
- {
- Navigation.push("tab1Stack", {
- component: {
- name: `navigation.eSteem.${
- data.route
- }`,
- passProps: {},
- options: {
- topBar: {
- title: {},
- },
- },
- },
- });
- this.hideSideMenu();
- }}
- >
-
-
- {data.name}
-
- {data.types && (
-
-
- {`${
- data.types
- } Types`}
-
-
- )}
-
- )}
- />
- this.Logout()}
+ componentDidMount() {
+ getAccount(this.props.user)
+ .then(result => {
+ let json_metadata = JSON.parse(result[0].json_metadata);
+ this.setState({
+ user: result[0],
+ avatar: `https://steemitimages.com/u/${result[0].name}/avatar/small`,
+ json_metadata: json_metadata.profile,
+ });
+ })
+ .catch(err => {
+ alert(err);
+ });
+ }
+
+ hideSideMenu() {
+ Navigation.mergeOptions("Component14", {
+ sideMenu: {
+ ["right"]: {
+ visible: false,
+ },
+ },
+ });
+ }
+
+ Logout = () => {
+ let authData = {
+ isLoggedIn: false,
+ };
+ setAuthStatus(authData)
+ .then(() => {
+ RNRestart.Restart();
+ })
+ .catch(err => {
+ alert(err);
+ });
+ };
+
+ render() {
+ return (
+
+
+
+
+
+
+ {(this.state.json_metadata && this.state.json_metadata.name) ||
+ ""}
+
+ @{this.state.user.name}
+
+ (
+ {
+ Navigation.push("tab1Stack", {
+ component: {
+ name: `navigation.eSteem.${data.route}`,
+ passProps: {},
+ options: {
+ topBar: {
+ title: {},
+ },
+ },
+ },
+ });
+ this.hideSideMenu();
+ }}
+ >
+
+
+ {data.name}
+
+ {data.types && (
+
+
-
-
- Logout
-
-
-
-
- );
- }
+ {`${
+ data.types
+ } Types`}
+
+
+ )}
+
+ )}
+ />
+ this.Logout()}
+ >
+
+
+ Logout
+
+
+
+
+ );
+ }
}
diff --git a/src/screens/sideMenuScreen.js b/src/screens/sideMenuScreen.js
index fdca14386..817444665 100755
--- a/src/screens/sideMenuScreen.js
+++ b/src/screens/sideMenuScreen.js
@@ -7,57 +7,57 @@ import LoggedOutMenu from "./side-menu/loggedOutMenu";
import { getAuthStatus, getUserData } from "../realm/realm";
class SideMenuScreen extends Component {
- constructor() {
- super();
+ constructor() {
+ super();
- this.state = {
- isLoggedIn: false,
- username: "",
- };
+ this.state = {
+ isLoggedIn: false,
+ username: "",
+ };
+ }
+
+ async componentDidMount() {
+ let user;
+ let isLoggedIn;
+
+ await getAuthStatus().then(res => {
+ isLoggedIn = res;
+ });
+
+ if (isLoggedIn) {
+ await getUserData().then(res => {
+ user = Array.from(res);
+ });
+
+ this.setState({
+ username: user[0].username,
+ isLoggedIn: isLoggedIn,
+ isLoading: false,
+ });
+ } else {
+ await this.setState({
+ isLoggedIn: false,
+ });
}
+ }
- async componentDidMount() {
- let user;
- let isLoggedIn;
-
- await getAuthStatus().then(res => {
- isLoggedIn = res;
- });
-
- if (isLoggedIn == true) {
- await getUserData().then(res => {
- user = Array.from(res);
- });
-
- this.setState({
- username: user[0].username,
- isLoggedIn: isLoggedIn,
- isLoading: false,
- });
- } else {
- await this.setState({
- isLoggedIn: false,
- });
- }
- }
-
- render() {
- return (
-
- {this.state.isLoggedIn ? (
-
- ) : (
-
- )}
-
- );
- }
+ render() {
+ return (
+
+ {this.state.isLoggedIn ? (
+
+ ) : (
+
+ )}
+
+ );
+ }
}
module.exports = SideMenuScreen;
const styles = {
- root: {
- flexGrow: 1,
- backgroundColor: "#f5fcff",
- },
+ root: {
+ flexGrow: 1,
+ backgroundColor: "#f5fcff",
+ },
};
diff --git a/src/screens/splash/splashContainer.js b/src/screens/splash/splashContainer.js
index 4fe88fb5f..32951dc58 100644
--- a/src/screens/splash/splashContainer.js
+++ b/src/screens/splash/splashContainer.js
@@ -14,7 +14,7 @@ class SplashContainer extends React.Component {
async componentDidMount() {
await getAuthStatus()
.then(result => {
- if (result === true) {
+ if (result) {
goToAuthScreens();
} else {
goToNoAuthScreens();
diff --git a/src/screens/steem-connect/steemConnect.js b/src/screens/steem-connect/steemConnect.js
index b2d9aedb8..6bedae265 100644
--- a/src/screens/steem-connect/steemConnect.js
+++ b/src/screens/steem-connect/steemConnect.js
@@ -7,58 +7,54 @@ import { Navigation } from "react-native-navigation";
import { goToAuthScreens } from "../../navigation";
export default class SteemConnect extends Component {
- constructor(props) {
- super(props);
- this.state = {};
- }
+ constructor(props) {
+ super(props);
+ this.state = {};
+ }
- onNavigationStateChange(event) {
- let access_token;
- if (event.url.indexOf("?access_token=") > -1) {
- this.webview.stopLoading();
- try {
- access_token = event.url.match(
- /\?(?:access_token)\=([\S\s]*?)\&/
- )[1];
- } catch (error) {
- console.log(error);
- }
+ onNavigationStateChange(event) {
+ let access_token;
+ if (event.url.indexOf("?access_token=") > -1) {
+ this.webview.stopLoading();
+ try {
+ access_token = event.url.match(/\?(?:access_token)\=([\S\s]*?)\&/)[1];
+ } catch (error) {
+ console.log(error);
+ }
- loginWithSC2(access_token, "pinCode")
- .then(result => {
- if (result === true) {
- // TODO: Handle pinCode and navigate to home page
- goToAuthScreens();
- } else {
- // TODO: Error alert (Toast Message)
- console.log("loginWithSC2 error");
- }
- })
- .catch(error => {
- console.log(error);
- });
- }
+ loginWithSC2(access_token, "pinCode")
+ .then(result => {
+ if (result) {
+ // TODO: Handle pinCode and navigate to home page
+ goToAuthScreens();
+ } else {
+ // TODO: Error alert (Toast Message)
+ console.log("loginWithSC2 error");
+ }
+ })
+ .catch(error => {
+ console.log(error);
+ });
}
+ }
- render() {
- return (
-
- {
- this.webview = ref;
- }}
- />
-
- );
- }
+ render() {
+ return (
+
+ {
+ this.webview = ref;
+ }}
+ />
+
+ );
+ }
}
diff --git a/src/screens/wallet/wallet.js b/src/screens/wallet/wallet.js
index a261ce5b6..4dbefe4e9 100644
--- a/src/screens/wallet/wallet.js
+++ b/src/screens/wallet/wallet.js
@@ -4,496 +4,447 @@ import Slider from "react-native-slider";
import { Container, Button, Content, Card, Input } from "native-base";
import { getUserData, getAuthStatus } from "../../realm/realm";
import {
- getUser,
- transferToken,
- delegate,
- globalProps,
- transferToVesting,
- withdrawVesting,
+ getUser,
+ transferToken,
+ delegate,
+ globalProps,
+ transferToVesting,
+ withdrawVesting,
} from "../../providers/steem/dsteem";
import { decryptKey } from "../../utils/crypto";
class WalletPage extends Component {
- constructor(props) {
- super(props);
+ constructor(props) {
+ super(props);
- this.state = {
- receiver: "",
- amount: "",
- asset: "STEEM",
- memo: "",
- user: {},
- avail: "",
- globalProps: "",
- vestSteem: "",
- percent: 0.05,
- value: 0.0,
- };
+ this.state = {
+ receiver: "",
+ amount: "",
+ asset: "STEEM",
+ memo: "",
+ user: {},
+ avail: "",
+ globalProps: "",
+ vestSteem: "",
+ percent: 0.05,
+ value: 0.0,
+ };
+ }
+ async componentDidMount() {
+ let isLoggedIn;
+ let user;
+ let userData;
+ let avail;
+ let vestSteem;
+ let globalProperties;
+
+ await getAuthStatus().then(res => {
+ isLoggedIn = res;
+ });
+
+ if (isLoggedIn) {
+ await getUserData().then(res => {
+ userData = Array.from(res);
+ });
+
+ user = await getUser(userData[0].username);
+
+ await this.setState({
+ user: user,
+ });
+
+ globalProperties = await globalProps();
+ avail =
+ parseFloat(this.state.user.vesting_shares) -
+ (parseFloat(this.state.user.to_withdraw) -
+ parseFloat(this.state.user.withdrawn)) /
+ 1e6 -
+ parseFloat(this.state.user.delegated_vesting_shares);
+ vestSteem = parseFloat(
+ parseFloat(globalProperties.total_vesting_fund_steem) *
+ (parseFloat(avail) /
+ parseFloat(globalProperties.total_vesting_shares)),
+ 6
+ );
+
+ console.log(avail);
+ console.log(vestSteem);
+ console.log(globalProperties);
+
+ console.log(
+ (parseFloat(globalProperties.total_vesting_fund_steem) /
+ parseFloat(globalProperties.total_vesting_shares)) *
+ parseFloat(avail * this.state.value)
+ );
+ await this.setState({
+ avail: avail,
+ vestSteem: vestSteem,
+ globalProps: globalProperties,
+ });
}
- async componentDidMount() {
- let isLoggedIn;
- let user;
- let userData;
- let avail;
- let vestSteem;
- let globalProperties;
+ }
- await getAuthStatus().then(res => {
- isLoggedIn = res;
- });
+ sendSteem = async () => {
+ let userData;
+ let activeKey;
- if (isLoggedIn == true) {
- await getUserData().then(res => {
- userData = Array.from(res);
- });
-
- user = await getUser(userData[0].username);
-
- await this.setState({
- user: user,
- });
-
- globalProperties = await globalProps();
- avail =
- parseFloat(this.state.user.vesting_shares) -
- (parseFloat(this.state.user.to_withdraw) -
- parseFloat(this.state.user.withdrawn)) /
- 1e6 -
- parseFloat(this.state.user.delegated_vesting_shares);
- vestSteem = parseFloat(
- parseFloat(globalProperties.total_vesting_fund_steem) *
- (parseFloat(avail) /
- parseFloat(globalProperties.total_vesting_shares)),
- 6
- );
-
- console.log(avail);
- console.log(vestSteem);
- console.log(globalProperties);
-
- console.log(
- (parseFloat(globalProperties.total_vesting_fund_steem) /
- parseFloat(globalProperties.total_vesting_shares)) *
- parseFloat(avail * this.state.value)
- );
- await this.setState({
- avail: avail,
- vestSteem: vestSteem,
- globalProps: globalProperties,
- });
- }
- }
-
- sendSteem = async () => {
- let userData;
- let activeKey;
-
- transferData = {
- from: this.state.user.name,
- to: this.state.receiver,
- amount: this.state.amount + " " + this.state.asset,
- memo: this.state.memo,
- };
-
- await getUserData()
- .then(result => {
- userData = Array.from(result);
- activeKey = userData[0].activeKey;
- console.log(userData);
- console.log(activeKey);
- })
- .then(() => {
- activeKey = decryptKey(activeKey, "pinCode");
- transferToken(transferData, activeKey);
- })
- .catch(error => {
- console.log(error);
- });
+ transferData = {
+ from: this.state.user.name,
+ to: this.state.receiver,
+ amount: this.state.amount + " " + this.state.asset,
+ memo: this.state.memo,
};
- delegateSP = async () => {
- let userData;
- let activeKey;
+ await getUserData()
+ .then(result => {
+ userData = Array.from(result);
+ activeKey = userData[0].activeKey;
+ console.log(userData);
+ console.log(activeKey);
+ })
+ .then(() => {
+ activeKey = decryptKey(activeKey, "pinCode");
+ transferToken(transferData, activeKey);
+ })
+ .catch(error => {
+ console.log(error);
+ });
+ };
- vestSteem = parseFloat(
- parseFloat(this.state.globalProps.total_vesting_fund_steem) *
- (parseFloat(this.state.avail * this.state.value) /
- parseFloat(this.state.globalProps.total_vesting_shares)),
- 6
- );
- let toWithdraw =
- (vestSteem * 1e6) /
- (parseFloat(this.state.globalProps.total_vesting_fund_steem) /
- (parseFloat(this.state.globalProps.total_vesting_shares) /
- 1e6));
- console.log(toWithdraw);
- data = {
- delegator: this.state.user.name,
- delegatee: "demo",
- vesting_shares: `${toWithdraw.toFixed(6)} VESTS`,
- };
- await getUserData().then(res => {
- userData = Array.from(res);
- });
+ delegateSP = async () => {
+ let userData;
+ let activeKey;
- activeKey = decryptKey(userData[0].activeKey, "pinCode");
+ vestSteem = parseFloat(
+ parseFloat(this.state.globalProps.total_vesting_fund_steem) *
+ (parseFloat(this.state.avail * this.state.value) /
+ parseFloat(this.state.globalProps.total_vesting_shares)),
+ 6
+ );
+ let toWithdraw =
+ (vestSteem * 1e6) /
+ (parseFloat(this.state.globalProps.total_vesting_fund_steem) /
+ (parseFloat(this.state.globalProps.total_vesting_shares) / 1e6));
+ console.log(toWithdraw);
+ data = {
+ delegator: this.state.user.name,
+ delegatee: "demo",
+ vesting_shares: `${toWithdraw.toFixed(6)} VESTS`,
+ };
+ await getUserData().then(res => {
+ userData = Array.from(res);
+ });
- delegate(data, activeKey)
- .then(res => {
- console.log(res);
- })
- .catch(err => {
- console.log(err);
- });
+ activeKey = decryptKey(userData[0].activeKey, "pinCode");
+
+ delegate(data, activeKey)
+ .then(res => {
+ console.log(res);
+ })
+ .catch(err => {
+ console.log(err);
+ });
+ };
+
+ powerUpSteem = async () => {
+ let userData;
+ let activeKey;
+
+ await getUserData().then(res => {
+ userData = Array.from(res);
+ });
+
+ activeKey = decryptKey(userData[0].activeKey, "pinCode");
+
+ let data = {
+ from: this.state.user.name,
+ to: "hsynterkr",
+ amount: "001.000 STEEM",
};
- powerUpSteem = async () => {
- let userData;
- let activeKey;
+ transferToVesting(data, activeKey)
+ .then(res => {
+ console.log(res);
+ })
+ .catch(error => {
+ console.log(error);
+ });
+ };
- await getUserData().then(res => {
- userData = Array.from(res);
- });
+ powerDownSteem = async () => {
+ let userData;
+ let activeKey;
+ let avail;
- activeKey = decryptKey(userData[0].activeKey, "pinCode");
+ await getUserData().then(res => {
+ userData = Array.from(res);
+ });
- let data = {
- from: this.state.user.name,
- to: "hsynterkr",
- amount: "001.000 STEEM",
- };
+ activeKey = decryptKey(userData[0].activeKey, "pinCode");
- transferToVesting(data, activeKey)
- .then(res => {
- console.log(res);
- })
- .catch(error => {
- console.log(error);
- });
+ avail =
+ parseFloat(this.state.user.vesting_shares) -
+ (parseFloat(this.state.user.to_withdraw) -
+ parseFloat(this.state.user.withdrawn)) /
+ 1e6 -
+ parseFloat(this.state.user.delegated_vesting_shares);
+ let vestSteem = parseFloat(
+ parseFloat(this.state.globalProps.total_vesting_fund_steem) *
+ (parseFloat(avail * this.state.value) /
+ parseFloat(this.state.globalProps.total_vesting_shares)),
+ 6
+ );
+ let toWithdraw =
+ (vestSteem * 1e6) /
+ (parseFloat(this.state.globalProps.total_vesting_fund_steem) /
+ (parseFloat(this.state.globalProps.total_vesting_shares) / 1e6));
+
+ let data = {
+ account: this.state.user.name,
+ vesting_shares: `${toWithdraw.toFixed(6)} VESTS`,
};
- powerDownSteem = async () => {
- let userData;
- let activeKey;
- let avail;
+ withdrawVesting(data, activeKey)
+ .then(result => {
+ console.log(result);
+ })
+ .catch(error => {
+ console.log(error);
+ });
+ };
- await getUserData().then(res => {
- userData = Array.from(res);
- });
+ render() {
+ return (
+
+
+
+ STEEM Balance: {this.state.user.balance}
+
+
+ SBD Balance: {this.state.user.sbd_balance}
+
+
+ STEEM Power: {this.state.user.steem_power} SP
+
+ Received STEEM Power: {this.state.user.received_steem_power} SP
+
+
+ Delegated Power Power: {this.state.user.delegated_steem_power} SP
+
+
+
+ Saving STEEM Balance: {this.state.user.savings_balance}
+
+ Saving STEEM Balance: {this.state.user.savings_sbd_balance}
+
+
- activeKey = decryptKey(userData[0].activeKey, "pinCode");
+
+ this.setState({ receiver: user })}
+ value={this.state.receiver}
+ />
+ this.setState({ amount: amount })}
+ value={this.state.amount}
+ />
+ this.setState({ memo: memo })}
+ value={this.state.memo}
+ />
+
+
+ this.setState({ asset: itemValue })
+ }
+ >
+
+
+
+
+
- avail =
- parseFloat(this.state.user.vesting_shares) -
- (parseFloat(this.state.user.to_withdraw) -
- parseFloat(this.state.user.withdrawn)) /
- 1e6 -
- parseFloat(this.state.user.delegated_vesting_shares);
- let vestSteem = parseFloat(
- parseFloat(this.state.globalProps.total_vesting_fund_steem) *
- (parseFloat(avail * this.state.value) /
- parseFloat(this.state.globalProps.total_vesting_shares)),
- 6
- );
- let toWithdraw =
- (vestSteem * 1e6) /
- (parseFloat(this.state.globalProps.total_vesting_fund_steem) /
- (parseFloat(this.state.globalProps.total_vesting_shares) /
- 1e6));
+
+ {
+ this.setState({
+ value: value,
+ percent: Math.floor(value.toFixed(2) * 100),
+ });
+ }}
+ />
+
+ Total:{" "}
+ {(parseInt(this.state.vestSteem) * this.state.percent) / 100} SP
+
+ {Math.floor(this.state.value * 100)}%
+
+
- let data = {
- account: this.state.user.name,
- vesting_shares: `${toWithdraw.toFixed(6)} VESTS`,
- };
+
+
+
- withdrawVesting(data, activeKey)
- .then(result => {
- console.log(result);
- })
- .catch(error => {
- console.log(error);
- });
- };
-
- render() {
- return (
-
-
-
- STEEM Balance: {this.state.user.balance}
-
-
- SBD Balance: {this.state.user.sbd_balance}
-
-
-
- STEEM Power: {this.state.user.steem_power} SP
-
-
- Received STEEM Power:{" "}
- {this.state.user.received_steem_power} SP
-
-
- Delegated Power Power:{" "}
- {this.state.user.delegated_steem_power} SP
-
-
-
-
- Saving STEEM Balance:{" "}
- {this.state.user.savings_balance}
-
-
- Saving STEEM Balance:{" "}
- {this.state.user.savings_sbd_balance}
-
-
-
-
-
- this.setState({ receiver: user })
- }
- value={this.state.receiver}
- />
-
- this.setState({ amount: amount })
- }
- value={this.state.amount}
- />
- this.setState({ memo: memo })}
- value={this.state.memo}
- />
-
-
- this.setState({ asset: itemValue })
- }
- >
-
-
-
-
-
-
-
- {
- this.setState({
- value: value,
- percent: Math.floor(
- value.toFixed(2) * 100
- ),
- });
- }}
- />
-
- Total:{" "}
- {(parseInt(this.state.vestSteem) *
- this.state.percent) /
- 100}{" "}
- SP
-
- {Math.floor(this.state.value * 100)}%
-
-
-
-
-
-
-
-
- {
- this.setState(
- {
- value: value,
- percent: Math.floor(
- value.toFixed(2) * 100
- ),
- },
- () => {
- let avail =
- parseFloat(
- this.state.user
- .vesting_shares
- ) -
- (parseFloat(
- this.state.user.to_withdraw
- ) -
- parseFloat(
- this.state.user
- .withdrawn
- )) /
- 1e6 -
- parseFloat(
- this.state.user
- .delegated_vesting_shares
- );
- let vestSteem = parseFloat(
- parseFloat(
- this.state.globalProps
- .total_vesting_fund_steem
- ) *
- (parseFloat(
- avail * this.state.value
- ) /
- parseFloat(
- this.state
- .globalProps
- .total_vesting_shares
- )),
- 6
- );
- console.log(vestSteem);
- console.log(
- (vestSteem * 1e6) /
- (parseFloat(
- this.state.globalProps
- .total_vesting_fund_steem
- ) /
- (parseFloat(
- this.state
- .globalProps
- .total_vesting_shares
- ) /
- 1e6))
- );
- }
- );
- }}
- />
-
- Total Steem Power:{" "}
- {(parseInt(this.state.vestSteem) *
- this.state.percent) /
- 100}{" "}
- SP
-
-
- Estimated Weekly:{" "}
- {Math.floor(
- ((
- (parseInt(this.state.vestSteem) *
- this.state.percent) /
- 100
- ).toFixed(0) /
- 13) *
- 100
- ) / 100}{" "}
- SP
-
- {Math.floor(this.state.value * 100)}%
-
-
-
-
-
- );
- }
+
+ {
+ this.setState(
+ {
+ value: value,
+ percent: Math.floor(value.toFixed(2) * 100),
+ },
+ () => {
+ let avail =
+ parseFloat(this.state.user.vesting_shares) -
+ (parseFloat(this.state.user.to_withdraw) -
+ parseFloat(this.state.user.withdrawn)) /
+ 1e6 -
+ parseFloat(this.state.user.delegated_vesting_shares);
+ let vestSteem = parseFloat(
+ parseFloat(
+ this.state.globalProps.total_vesting_fund_steem
+ ) *
+ (parseFloat(avail * this.state.value) /
+ parseFloat(
+ this.state.globalProps.total_vesting_shares
+ )),
+ 6
+ );
+ console.log(vestSteem);
+ console.log(
+ (vestSteem * 1e6) /
+ (parseFloat(
+ this.state.globalProps.total_vesting_fund_steem
+ ) /
+ (parseFloat(
+ this.state.globalProps.total_vesting_shares
+ ) /
+ 1e6))
+ );
+ }
+ );
+ }}
+ />
+
+ Total Steem Power:{" "}
+ {(parseInt(this.state.vestSteem) * this.state.percent) / 100} SP
+
+
+ Estimated Weekly:{" "}
+ {Math.floor(
+ ((
+ (parseInt(this.state.vestSteem) * this.state.percent) /
+ 100
+ ).toFixed(0) /
+ 13) *
+ 100
+ ) / 100}{" "}
+ SP
+
+ {Math.floor(this.state.value * 100)}%
+
+
+
+
+
+ );
+ }
}
export default WalletPage;
diff --git a/src/styles/feed.styles.js b/src/styles/feed.styles.js
index 8219e3831..de94db078 100644
--- a/src/styles/feed.styles.js
+++ b/src/styles/feed.styles.js
@@ -1,36 +1,34 @@
-import { createStyle } from "react-native-theming";
-import { StatusBar, Dimensions } from "react-native";
+import EStyleSheet from "react-native-extended-stylesheet";
+import { StatusBar } from "react-native";
-const styles = createStyle({
- container: {
- backgroundColor: "#F9F9F9",
- flex: 1,
- top: StatusBar.currentHeight,
- },
- placeholder: {
- backgroundColor: "white",
- padding: 20,
- borderStyle: "solid",
- borderWidth: 1,
- borderTopWidth: 1,
- borderColor: "#e2e5e8",
- borderRadius: 5,
- marginRight: 0,
- marginLeft: 0,
- marginTop: 10,
- },
- tabs: {
- position: "absolute",
- top: Dimensions.get("window").width / 30,
- alignItems: "center",
- },
- flatlistFooter: {
- alignContent: "center",
- alignItems: "center",
- marginTop: 10,
- marginBottom: 40,
- borderColor: "#CED0CE",
- },
+export default EStyleSheet.create({
+ container: {
+ backgroundColor: "#F9F9F9",
+ flex: 1,
+ top: StatusBar.currentHeight,
+ },
+ placeholder: {
+ backgroundColor: "white",
+ padding: 20,
+ borderStyle: "solid",
+ borderWidth: 1,
+ borderTopWidth: 1,
+ borderColor: "#e2e5e8",
+ borderRadius: 5,
+ marginRight: 0,
+ marginLeft: 0,
+ marginTop: 10,
+ },
+ tabs: {
+ position: "absolute",
+ top: "$deviceWidth / 30",
+ alignItems: "center",
+ },
+ flatlistFooter: {
+ alignContent: "center",
+ alignItems: "center",
+ marginTop: 10,
+ marginBottom: 40,
+ borderColor: "#CED0CE",
+ },
});
-
-export default styles;
diff --git a/src/styles/formInput.styles.js b/src/styles/formInput.styles.js
index 1a07a8abd..747bd3581 100644
--- a/src/styles/formInput.styles.js
+++ b/src/styles/formInput.styles.js
@@ -1,18 +1,15 @@
-import { createStyle } from "react-native-theming";
-import { Dimensions } from "react-native";
+import EStyleSheet from "react-native-extended-stylesheet";
-const deviceWidth = Dimensions.get("window").width;
-
-export default createStyle({
- container: {
- flex: 1,
- alignItems: "center",
- justifyContent: "center",
- },
- input: {
- backgroundColor: "#f5f5f5",
- borderRadius: 5,
- padding: 15,
- minWidth: deviceWidth / 2,
- },
+export default EStyleSheet.create({
+ container: {
+ flex: 1,
+ alignItems: "center",
+ justifyContent: "center",
+ },
+ input: {
+ backgroundColor: "#f5f5f5",
+ borderRadius: 5,
+ padding: 15,
+ minWidth: "$deviceWidth / 2",
+ },
});
diff --git a/src/styles/home.styles.js b/src/styles/home.styles.js
index 05451ac8d..08b8036a8 100644
--- a/src/styles/home.styles.js
+++ b/src/styles/home.styles.js
@@ -1,61 +1,58 @@
-import { createStyle } from "react-native-theming";
-import { StatusBar, Dimensions } from "react-native";
+import EStyleSheet from "react-native-extended-stylesheet";
-const styles = createStyle({
- container: {
- backgroundColor: "#F9F9F9",
- flex: 1,
- },
- tabs: {
- flex: 1,
- },
- placeholder: {
- backgroundColor: "white",
- padding: 20,
- borderStyle: "solid",
- borderWidth: 1,
- borderTopWidth: 1,
- borderColor: "#e2e5e8",
- borderRadius: 5,
- marginRight: 0,
- marginLeft: 0,
- marginTop: 10,
- },
- header: {
- backgroundColor: "#284b78",
- borderBottomWidth: 0,
- borderColor: "#284b78",
- },
- avatar: {
- width: 30,
- height: 30,
- borderRadius: 15,
- borderWidth: 1,
- borderColor: "white",
- },
- searchButton: {
- color: "white",
- fontWeight: "bold",
- },
- tabView: {
- alignSelf: "center",
- backgroundColor: "transparent",
- },
- tabbar: {
- alignSelf: "center",
- height: 40,
- backgroundColor: "#284b78",
- },
- tabbarItem: {
- flex: 1,
- paddingHorizontal: 7,
- backgroundColor: "#f9f9f9",
- minWidth: Dimensions.get("window").width,
- },
- loginButton: {
- alignSelf: "center",
- marginTop: 100,
- },
+export default EStyleSheet.create({
+ container: {
+ backgroundColor: "#F9F9F9",
+ flex: 1,
+ },
+ tabs: {
+ flex: 1,
+ },
+ placeholder: {
+ backgroundColor: "white",
+ padding: 20,
+ borderStyle: "solid",
+ borderWidth: 1,
+ borderTopWidth: 1,
+ borderColor: "#e2e5e8",
+ borderRadius: 5,
+ marginRight: 0,
+ marginLeft: 0,
+ marginTop: 10,
+ },
+ header: {
+ backgroundColor: "#284b78",
+ borderBottomWidth: 0,
+ borderColor: "#284b78",
+ },
+ avatar: {
+ width: 30,
+ height: 30,
+ borderRadius: 15,
+ borderWidth: 1,
+ borderColor: "white",
+ },
+ searchButton: {
+ color: "white",
+ fontWeight: "bold",
+ },
+ tabView: {
+ alignSelf: "center",
+ backgroundColor: "transparent",
+ },
+ tabbar: {
+ alignSelf: "center",
+ height: 40,
+ backgroundColor: "#284b78",
+ },
+ tabbarItem: {
+ flex: 1,
+ paddingHorizontal: 7,
+ backgroundColor: "#f9f9f9",
+ minWidth: "$deviceWidth",
+ },
+ loginButton: {
+ alignSelf: "center",
+ marginTop: 100,
+ },
});
-
-export default styles;
diff --git a/src/styles/hot.styles.js b/src/styles/hot.styles.js
index 8219e3831..a8377f676 100644
--- a/src/styles/hot.styles.js
+++ b/src/styles/hot.styles.js
@@ -1,36 +1,33 @@
-import { createStyle } from "react-native-theming";
-import { StatusBar, Dimensions } from "react-native";
-
-const styles = createStyle({
- container: {
- backgroundColor: "#F9F9F9",
- flex: 1,
- top: StatusBar.currentHeight,
- },
- placeholder: {
- backgroundColor: "white",
- padding: 20,
- borderStyle: "solid",
- borderWidth: 1,
- borderTopWidth: 1,
- borderColor: "#e2e5e8",
- borderRadius: 5,
- marginRight: 0,
- marginLeft: 0,
- marginTop: 10,
- },
- tabs: {
- position: "absolute",
- top: Dimensions.get("window").width / 30,
- alignItems: "center",
- },
- flatlistFooter: {
- alignContent: "center",
- alignItems: "center",
- marginTop: 10,
- marginBottom: 40,
- borderColor: "#CED0CE",
- },
+import EStyleSheet from "react-native-extended-stylesheet";
+import { StatusBar } from "react-native";
+export default EStyleSheet.create({
+ container: {
+ backgroundColor: "#F9F9F9",
+ flex: 1,
+ top: StatusBar.currentHeight,
+ },
+ placeholder: {
+ backgroundColor: "white",
+ padding: 20,
+ borderStyle: "solid",
+ borderWidth: 1,
+ borderTopWidth: 1,
+ borderColor: "#e2e5e8",
+ borderRadius: 5,
+ marginRight: 0,
+ marginLeft: 0,
+ marginTop: 10,
+ },
+ tabs: {
+ position: "absolute",
+ top: "$deviceWidth / 30",
+ alignItems: "center",
+ },
+ flatlistFooter: {
+ alignContent: "center",
+ alignItems: "center",
+ marginTop: 10,
+ marginBottom: 40,
+ borderColor: "#CED0CE",
+ },
});
-
-export default styles;
diff --git a/src/styles/themes.js b/src/styles/themes.js
deleted file mode 100644
index e79ab1efd..000000000
--- a/src/styles/themes.js
+++ /dev/null
@@ -1,37 +0,0 @@
-import { createTheme } from 'react-native-theming';
-
-const fonts = {
- FONT_SIZE_SMALL: '12',
- FONT_SIZE_MEDIUM: '14',
- FONT_SIZE_LARGE: '16',
- FONT_WEIGHT_LIGHT: '200',
- FONT_WEIGHT_MEDIUM: '600',
- FONT_WEIGHT_HEAVY: '800',
-};
-
-const themes = [
- createTheme(
- {
- backgroundColor: 'white',
- textColor: 'black',
- buttonColor: 'blue',
- buttonText: 'white',
- statusBar: 'dark-content',
- fontSize: fonts.FONT_SIZE_MEDIUM,
- fontWeight: fonts.FONT_WEIGHT_MEDIUM,
- },
- 'Light'
- ),
- createTheme(
- {
- backgroundColor: 'black',
- textColor: 'white',
- buttonColor: 'yellow',
- buttonText: 'black',
- statusBar: 'light-content',
- fontSize: fonts.FONT_SIZE_MEDIUM,
- fontWeight: fonts.FONT_WEIGHT_MEDIUM,
- },
- 'Dark'
- ),
-];
diff --git a/src/utils/formatter.js b/src/utils/formatter.js
new file mode 100644
index 000000000..56dbac23c
--- /dev/null
+++ b/src/utils/formatter.js
@@ -0,0 +1,27 @@
+// TODO: Move all formats functions here!
+
+// const imgRegex = /(https?:\/\/.*\.(?:tiff?|jpe?g|gif|png|svg|ico))/gim;
+// const postRegex = /^https?:\/\/(.*)\/(.*)\/(@[\w\.\d-]+)\/(.*)/i;
+// const youTubeRegex = /(?:https?:\/\/)?(?:www\.)?(?:youtube\.com\/watch\?v=|youtu\.be\/)([^& \n<]+)(?:[^ \n<]+)?/g;
+// const vimeoRegex = /(https?:\/\/)?(www\.)?(?:vimeo)\.com.*(?:videos|video|channels|)\/([\d]+)/i;
+// const dTubeRegex = /(https?:\/\/d.tube.#!\/v\/)(\w+)\/(\w+)/g;
+
+export const getPostSummary = (postBody, length) => {
+ if (!postBody) {
+ return "";
+ }
+
+ postBody = postBody
+ .replace(/(<([^>]+)>)/gi, "") // Remove html tags
+ .replace(/\r?\n|\r/g, " ") // Remove new lines
+ .replace(/(?:https?|ftp):\/\/[\n\S]+/g, "") // Remove urls
+ .trim()
+ .replace(/ +(?= )/g, ""); // Remove all multiple spaces
+
+ if (length) {
+ // Truncate
+ postBody = postBody.substring(0, length);
+ }
+
+ return postBody;
+};
diff --git a/src/utils/postParser.js b/src/utils/postParser.js
index 328a75e23..9c9eef459 100644
--- a/src/utils/postParser.js
+++ b/src/utils/postParser.js
@@ -1,231 +1,210 @@
import Remarkable from "remarkable";
-import { postSummary } from "./postSummary";
-import { reputation } from "./reputation";
-import moment from "moment";
+import { getPostSummary } from "../utils/formatter";
+import { getReputation } from "./reputation";
+import { getTimeFromNow } from "../utils/time";
const md = new Remarkable({ html: true, breaks: true, linkify: true });
export const replaceAuthorNames = input => {
- return input.replace(
- /* eslint-disable-next-line */
- /(^|[^a-zA-Z0-9_!#$%&*@ï¼ \/]|(^|[^a-zA-Z0-9_+~.-\/]))[@ï¼ ]([a-z][-\.a-z\d]+[a-z\d])/gi,
- (match, preceeding1, preceeding2, user) => {
- const userLower = user.toLowerCase();
- const preceedings = (preceeding1 || "") + (preceeding2 || "");
+ return input.replace(
+ /* eslint-disable-next-line */
+ /(^|[^a-zA-Z0-9_!#$%&*@ï¼ \/]|(^|[^a-zA-Z0-9_+~.-\/]))[@ï¼ ]([a-z][-\.a-z\d]+[a-z\d])/gi,
+ (match, preceeding1, preceeding2, user) => {
+ const userLower = user.toLowerCase();
+ const preceedings = (preceeding1 || "") + (preceeding2 || "");
- return `${preceedings}@${user}`;
- }
- );
+ return `${preceedings}@${user}`;
+ }
+ );
};
export const replaceTags = input => {
- return input.replace(/(^|\s|>)(#[-a-z\d]+)/gi, tag => {
- if (/#[\d]+$/.test(tag)) return tag; // do not allow only numbers (like #1)
- const preceding = /^\s|>/.test(tag) ? tag[0] : ""; // space or closing tag (>)
- tag = tag.replace(">", ""); // remove closing tag
- const tag2 = tag.trim().substring(1);
- const tagLower = tag2.toLowerCase();
- return (
- preceding +
- `${tag.trim()}`
- );
- });
+ return input.replace(/(^|\s|>)(#[-a-z\d]+)/gi, tag => {
+ if (/#[\d]+$/.test(tag)) return tag; // do not allow only numbers (like #1)
+ const preceding = /^\s|>/.test(tag) ? tag[0] : ""; // space or closing tag (>)
+ tag = tag.replace(">", ""); // remove closing tag
+ const tag2 = tag.trim().substring(1);
+ const tagLower = tag2.toLowerCase();
+ return (
+ preceding +
+ `${tag.trim()}`
+ );
+ });
};
export const markDown2Html = input => {
- if (!input) {
- return "";
- }
+ if (!input) {
+ return "";
+ }
- // Start replacing user names
- let output = replaceAuthorNames(input);
+ // Start replacing user names
+ let output = replaceAuthorNames(input);
- // Replace tags
- output = replaceTags(output);
+ // Replace tags
+ output = replaceTags(output);
- output = md.render(output);
+ output = md.render(output);
- /* eslint-disable */
- const imgRegex = /(https?:\/\/.*\.(?:tiff?|jpe?g|gif|png|svg|ico))/gim;
- const postRegex = /^https?:\/\/(.*)\/(.*)\/(@[\w\.\d-]+)\/(.*)/i;
- const youTubeRegex = /(?:https?:\/\/)?(?:www\.)?(?:youtube\.com\/watch\?v=|youtu\.be\/)([^& \n<]+)(?:[^ \n<]+)?/g;
- const vimeoRegex = /(https?:\/\/)?(www\.)?(?:vimeo)\.com.*(?:videos|video|channels|)\/([\d]+)/i;
- const dTubeRegex = /(https?:\/\/d.tube.#!\/v\/)(\w+)\/(\w+)/g;
- /* eslint-enable */
+ // TODO: Implement Regex --> Look at utls/formatter.js
- // TODO: Implement Regex
-
- return output;
+ return output;
};
export const parsePosts = (posts, user) => {
- posts.map(post => {
- post.json_metadata = JSON.parse(post.json_metadata);
- post.json_metadata.image
- ? (post.image = post.json_metadata.image[0])
- : "";
- post.pending_payout_value = parseFloat(
- post.pending_payout_value
- ).toFixed(2);
- post.created = moment
- .utc(post.created)
- .local()
- .fromNow();
- post.vote_count = post.active_votes.length;
- post.author_reputation = reputation(post.author_reputation);
- post.avatar = `https://steemitimages.com/u/${post.author}/avatar/small`;
- post.body = markDown2Html(post.body);
- post.summary = postSummary(post.body, 100);
- post.raw_body = post.body;
- post.active_votes.sort((a, b) => {
- return b.rshares - a.rshares;
- });
-
- let totalPayout =
- parseFloat(post.pending_payout_value) +
- parseFloat(post.total_payout_value) +
- parseFloat(post.curator_payout_value);
-
- let voteRshares = post.active_votes.reduce(
- (a, b) => a + parseFloat(b.rshares),
- 0
- );
- let ratio = totalPayout / voteRshares;
- post.isVoted = false;
-
- for (let i in post.active_votes) {
- if (post.active_votes[i].voter == user) {
- post.isVoted = true;
- }
- post.active_votes[i].value = (
- post.active_votes[i].rshares * ratio
- ).toFixed(2);
- post.active_votes[i].reputation = reputation(
- post.active_votes[i].reputation
- );
- post.active_votes[i].percent = post.active_votes[i].percent / 100;
- post.active_votes[i].avatar =
- "https://steemitimages.com/u/" +
- post.active_votes[i].voter +
- "/avatar/small";
- }
-
- if (post.active_votes.length > 2) {
- post.top_likers = [
- post.active_votes[0].voter,
- post.active_votes[1].voter,
- post.active_votes[2].voter,
- ];
- }
- });
- return posts;
-};
-
-export const parsePost = post => {
+ posts.map(post => {
post.json_metadata = JSON.parse(post.json_metadata);
post.json_metadata.image ? (post.image = post.json_metadata.image[0]) : "";
post.pending_payout_value = parseFloat(post.pending_payout_value).toFixed(
- 2
+ 2
);
- post.created = moment
- .utc(post.created)
- .local()
- .fromNow();
+ post.created = getTimeFromNow(post.created);
post.vote_count = post.active_votes.length;
- post.author_reputation = reputation(post.author_reputation);
+ post.author_reputation = getReputation(post.author_reputation);
post.avatar = `https://steemitimages.com/u/${post.author}/avatar/small`;
post.body = markDown2Html(post.body);
- post.summary = postSummary(post.body, 100);
+ post.summary = getPostSummary(post.body, 100);
post.raw_body = post.body;
post.active_votes.sort((a, b) => {
- return b.rshares - a.rshares;
+ return b.rshares - a.rshares;
});
+
let totalPayout =
- parseFloat(post.pending_payout_value) +
- parseFloat(post.total_payout_value) +
- parseFloat(post.curator_payout_value);
+ parseFloat(post.pending_payout_value) +
+ parseFloat(post.total_payout_value) +
+ parseFloat(post.curator_payout_value);
let voteRshares = post.active_votes.reduce(
- (a, b) => a + parseFloat(b.rshares),
- 0
+ (a, b) => a + parseFloat(b.rshares),
+ 0
);
let ratio = totalPayout / voteRshares;
+ post.isVoted = false;
for (let i in post.active_votes) {
- post.active_votes[i].value = (
- post.active_votes[i].rshares * ratio
- ).toFixed(2);
- post.active_votes[i].reputation = reputation(
- post.active_votes[i].reputation
- );
- post.active_votes[i].percent = post.active_votes[i].percent / 100;
- post.active_votes[i].avatar =
- "https://steemitimages.com/u/" +
- post.active_votes[i].voter +
- "/avatar/small";
+ if (post.active_votes[i].voter == user) {
+ post.isVoted = true;
+ }
+ post.active_votes[i].value = (
+ post.active_votes[i].rshares * ratio
+ ).toFixed(2);
+ post.active_votes[i].reputation = getReputation(
+ post.active_votes[i].reputation
+ );
+ post.active_votes[i].percent = post.active_votes[i].percent / 100;
+ post.active_votes[i].avatar =
+ "https://steemitimages.com/u/" +
+ post.active_votes[i].voter +
+ "/avatar/small";
}
if (post.active_votes.length > 2) {
- post.top_likers = [
- post.active_votes[0].voter,
- post.active_votes[1].voter,
- post.active_votes[2].voter,
- ];
+ post.top_likers = [
+ post.active_votes[0].voter,
+ post.active_votes[1].voter,
+ post.active_votes[2].voter,
+ ];
}
- return post;
+ });
+ return posts;
+};
+
+export const parsePost = post => {
+ post.json_metadata = JSON.parse(post.json_metadata);
+ post.json_metadata.image ? (post.image = post.json_metadata.image[0]) : "";
+ post.pending_payout_value = parseFloat(post.pending_payout_value).toFixed(2);
+ post.created = getTimeFromNow(post.created);
+ post.vote_count = post.active_votes.length;
+ post.author_reputation = getReputation(post.author_reputation);
+ post.avatar = `https://steemitimages.com/u/${post.author}/avatar/small`;
+ post.body = markDown2Html(post.body);
+ post.summary = getPostSummary(post.body, 100);
+ post.raw_body = post.body;
+ post.active_votes.sort((a, b) => {
+ return b.rshares - a.rshares;
+ });
+ let totalPayout =
+ parseFloat(post.pending_payout_value) +
+ parseFloat(post.total_payout_value) +
+ parseFloat(post.curator_payout_value);
+
+ let voteRshares = post.active_votes.reduce(
+ (a, b) => a + parseFloat(b.rshares),
+ 0
+ );
+ let ratio = totalPayout / voteRshares;
+
+ for (let i in post.active_votes) {
+ post.active_votes[i].value = (post.active_votes[i].rshares * ratio).toFixed(
+ 2
+ );
+ post.active_votes[i].reputation = getReputation(
+ post.active_votes[i].reputation
+ );
+ post.active_votes[i].percent = post.active_votes[i].percent / 100;
+ post.active_votes[i].avatar =
+ "https://steemitimages.com/u/" +
+ post.active_votes[i].voter +
+ "/avatar/small";
+ }
+
+ if (post.active_votes.length > 2) {
+ post.top_likers = [
+ post.active_votes[0].voter,
+ post.active_votes[1].voter,
+ post.active_votes[2].voter,
+ ];
+ }
+ return post;
};
export const protocolUrl2Obj = url => {
- let urlPart = url.split("://")[1];
+ let urlPart = url.split("://")[1];
- // remove last char if /
- if (urlPart.endsWith("/")) {
- urlPart = urlPart.substring(0, urlPart.length - 1);
- }
+ // remove last char if /
+ if (urlPart.endsWith("/")) {
+ urlPart = urlPart.substring(0, urlPart.length - 1);
+ }
- const parts = urlPart.split("/");
+ const parts = urlPart.split("/");
- // filter
- if (parts.length === 1) {
- return { type: "filter" };
- }
+ // filter
+ if (parts.length === 1) {
+ return { type: "filter" };
+ }
- // filter with tag
- if (parts.length === 2) {
- return { type: "filter-tag", filter: parts[0], tag: parts[1] };
- }
+ // filter with tag
+ if (parts.length === 2) {
+ return { type: "filter-tag", filter: parts[0], tag: parts[1] };
+ }
- // account
- if (parts.length === 1 && parts[0].startsWith("@")) {
- return { type: "account", account: parts[0].replace("@", "") };
- }
+ // account
+ if (parts.length === 1 && parts[0].startsWith("@")) {
+ return { type: "account", account: parts[0].replace("@", "") };
+ }
- // post
- if (parts.length === 3 && parts[1].startsWith("@")) {
- return {
- type: "post",
- cat: parts[0],
- author: parts[1].replace("@", ""),
- permlink: parts[2],
- };
- }
+ // post
+ if (parts.length === 3 && parts[1].startsWith("@")) {
+ return {
+ type: "post",
+ cat: parts[0],
+ author: parts[1].replace("@", ""),
+ permlink: parts[2],
+ };
+ }
};
export const parseComments = comments => {
- comments.map(comment => {
- comment.pending_payout_value = parseFloat(
- comment.pending_payout_value
- ).toFixed(2);
- comment.created = moment
- .utc(comment.created)
- .local()
- .fromNow();
- comment.vote_count = comment.active_votes.length;
- comment.author_reputation = reputation(comment.author_reputation);
- comment.avatar = `https://steemitimages.com/u/${
- comment.author
- }/avatar/small`;
- comment.body = markDown2Html(comment.body);
- });
- return comments;
+ comments.map(comment => {
+ comment.pending_payout_value = parseFloat(
+ comment.pending_payout_value
+ ).toFixed(2);
+ comment.created = getTimeFromNow(comment.created);
+ comment.vote_count = comment.active_votes.length;
+ comment.author_reputation = getReputation(comment.author_reputation);
+ comment.avatar = `https://steemitimages.com/u/${
+ comment.author
+ }/avatar/small`;
+ comment.body = markDown2Html(comment.body);
+ });
+ return comments;
};
diff --git a/src/utils/postSummary.js b/src/utils/postSummary.js
deleted file mode 100644
index eae7044b6..000000000
--- a/src/utils/postSummary.js
+++ /dev/null
@@ -1,19 +0,0 @@
-export const postSummary = (postBody, length) => {
- if (!postBody) {
- return "";
- }
-
- postBody = postBody
- .replace(/(<([^>]+)>)/gi, "") // Remove html tags
- .replace(/\r?\n|\r/g, " ") // Remove new lines
- .replace(/(?:https?|ftp):\/\/[\n\S]+/g, "") // Remove urls
- .trim()
- .replace(/ +(?= )/g, ""); // Remove all multiple spaces
-
- if (length) {
- // Truncate
- postBody = postBody.substring(0, length);
- }
-
- return postBody;
-};
diff --git a/src/utils/reputation.js b/src/utils/reputation.js
index ed8ca4be4..d320902f2 100644
--- a/src/utils/reputation.js
+++ b/src/utils/reputation.js
@@ -1,18 +1,23 @@
-export const reputation = reputation => {
- if (reputation == null) return reputation;
- reputation = parseInt(reputation);
- let rep = String(reputation);
- const neg = rep.charAt(0) === "-";
- rep = neg ? rep.substring(1) : rep;
- const str = rep;
- const leadingDigits = parseInt(str.substring(0, 4));
- const log = Math.log(leadingDigits) / Math.log(10);
- const n = str.length - 1;
- let out = n + (log - parseInt(log));
- if (isNaN(out)) out = 0;
- out = Math.max(out - 9, 0);
- out = (neg ? -1 : 1) * out;
- out = out * 9 + 25;
- out = parseInt(out);
- return out;
+export const getReputation = reputation => {
+ if (reputation === null) return reputation;
+
+ let _reputation = String(parseInt(reputation));
+
+ const neg = _reputation.charAt(0) === "-";
+ _reputation = neg ? _reputation.substring(1) : _reputation;
+
+ const str = _reputation;
+ const leadingDigits = parseInt(str.substring(0, 4));
+ const log = Math.log(leadingDigits) / Math.log(10);
+ const n = str.length - 1;
+ let out = n + (log - parseInt(log));
+
+ if (isNaN(out)) out = 0;
+
+ out = Math.max(out - 9, 0);
+ out = (neg ? -1 : 1) * out;
+ out = out * 9 + 25;
+ out = parseInt(out);
+
+ return out;
};
diff --git a/src/utils/time.js b/src/utils/time.js
new file mode 100644
index 000000000..fab06c050
--- /dev/null
+++ b/src/utils/time.js
@@ -0,0 +1,10 @@
+import moment from "moment";
+
+export const getTimeFromNow = value => {
+ if (!value) return null;
+
+ return moment
+ .utc(value)
+ .local()
+ .fromNow();
+};
diff --git a/yarn.lock b/yarn.lock
index e673503a7..360de0dcd 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -14,18 +14,12 @@
dependencies:
"@babel/highlight" "7.0.0-beta.47"
-"@babel/code-frame@^7.0.0":
+"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.0.0-beta.35":
version "7.0.0"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8"
dependencies:
"@babel/highlight" "^7.0.0"
-"@babel/code-frame@^7.0.0-beta.35":
- version "7.0.0-rc.1"
- resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-rc.1.tgz#5c2154415d6c09959a71845ef519d11157e95d10"
- dependencies:
- "@babel/highlight" "7.0.0-rc.1"
-
"@babel/core@7.0.0-beta.47":
version "7.0.0-beta.47"
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.0.0-beta.47.tgz#b9c164fb9a1e1083f067c236a9da1d7a7d759271"
@@ -255,14 +249,6 @@
esutils "^2.0.2"
js-tokens "^3.0.0"
-"@babel/highlight@7.0.0-rc.1":
- version "7.0.0-rc.1"
- resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-rc.1.tgz#e0ca4731fa4786f7b9500421d6ff5e5a7753e81e"
- dependencies:
- chalk "^2.0.0"
- esutils "^2.0.2"
- js-tokens "^3.0.0"
-
"@babel/highlight@^7.0.0":
version "7.0.0"
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4"
@@ -598,18 +584,9 @@
dependencies:
any-observable "^0.3.0"
-"@types/prop-types@*", "@types/prop-types@^15.5.2":
- version "15.5.5"
- resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.5.5.tgz#17038dd322c2325f5da650a94d5f9974943625e3"
- dependencies:
- "@types/react" "*"
-
-"@types/react@*":
- version "16.4.14"
- resolved "https://registry.yarnpkg.com/@types/react/-/react-16.4.14.tgz#47c604c8e46ed674bbdf4aabf82b34b9041c6a04"
- dependencies:
- "@types/prop-types" "*"
- csstype "^2.2.0"
+"@types/prop-types@^15.5.2":
+ version "15.5.6"
+ resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.5.6.tgz#9c03d3fed70a8d517c191b7734da2879b50ca26c"
abab@^2.0.0:
version "2.0.0"
@@ -631,10 +608,11 @@ accepts@~1.3.3, accepts@~1.3.5:
negotiator "0.6.1"
acorn-globals@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.1.0.tgz#ab716025dbe17c54d3ef81d32ece2b2d99fe2538"
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.0.tgz#e3b6f8da3c1552a95ae627571f7dd6923bb54103"
dependencies:
- acorn "^5.0.0"
+ acorn "^6.0.1"
+ acorn-walk "^6.0.1"
acorn-jsx@^4.1.1:
version "4.1.1"
@@ -642,14 +620,18 @@ acorn-jsx@^4.1.1:
dependencies:
acorn "^5.0.3"
-acorn@^5.0.0, acorn@^5.5.3:
- version "5.7.1"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.1.tgz#f095829297706a7c9776958c0afc8930a9b9d9d8"
+acorn-walk@^6.0.1:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.1.0.tgz#c957f4a1460da46af4a0388ce28b4c99355b0cbc"
-acorn@^5.0.3, acorn@^5.6.0:
+acorn@^5.0.3, acorn@^5.5.3, acorn@^5.6.0:
version "5.7.3"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279"
+acorn@^6.0.1:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.0.2.tgz#6a459041c320ab17592c6317abbfdf4bbaa98ca4"
+
ajv-keywords@^3.0.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a"
@@ -664,29 +646,17 @@ ajv@^5.3.0:
json-schema-traverse "^0.3.0"
ajv@^6.0.1, ajv@^6.5.3:
- version "6.5.3"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.3.tgz#71a569d189ecf4f4f321224fecb166f071dd90f9"
+ version "6.5.4"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.4.tgz#247d5274110db653706b550fcc2b797ca28cfc59"
dependencies:
fast-deep-equal "^2.0.1"
fast-json-stable-stringify "^2.0.0"
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
-align-text@^0.1.1, align-text@^0.1.3:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117"
- dependencies:
- kind-of "^3.0.2"
- longest "^1.0.1"
- repeat-string "^1.5.2"
-
-amdefine@>=0.0.4:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
-
ansi-colors@^1.0.1:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-1.1.0.tgz#6374b4dd5d4718ff3ce27a671a3b1cad077132a9"
+ resolved "http://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz#6374b4dd5d4718ff3ce27a671a3b1cad077132a9"
dependencies:
ansi-wrap "^0.1.0"
@@ -783,11 +753,11 @@ appcenter@1.8.1, appcenter@^1.7.1:
dependencies:
appcenter-link-scripts "1.8.1"
-append-transform@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-1.0.0.tgz#046a52ae582a228bd72f58acfbe2967c678759ab"
+append-transform@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991"
dependencies:
- default-require-extensions "^2.0.0"
+ default-require-extensions "^1.0.0"
aproba@^1.0.3:
version "1.2.0"
@@ -933,11 +903,7 @@ async-limiter@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8"
-async@^1.4.0:
- version "1.5.2"
- resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
-
-async@^2.1.4, async@^2.4.0:
+async@^2.1.4, async@^2.4.0, async@^2.5.0:
version "2.6.1"
resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610"
dependencies:
@@ -1102,13 +1068,20 @@ babel-helpers@^6.24.1:
babel-runtime "^6.22.0"
babel-template "^6.24.1"
-babel-jest@23.4.2, babel-jest@^23.4.2:
+babel-jest@23.4.2:
version "23.4.2"
resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-23.4.2.tgz#f276de67798a5d68f2d6e87ff518c2f6e1609877"
dependencies:
babel-plugin-istanbul "^4.1.6"
babel-preset-jest "^23.2.0"
+babel-jest@^23.6.0:
+ version "23.6.0"
+ resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-23.6.0.tgz#a644232366557a2240a0c083da6b25786185a2f1"
+ dependencies:
+ babel-plugin-istanbul "^4.1.6"
+ babel-preset-jest "^23.2.0"
+
babel-messages@^6.23.0:
version "6.23.0"
resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e"
@@ -1129,7 +1102,7 @@ babel-plugin-external-helpers@^6.22.0:
babel-plugin-istanbul@^4.1.6:
version "4.1.6"
- resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz#36c59b2192efce81c5b378321b74175add1c9a45"
+ resolved "http://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz#36c59b2192efce81c5b378321b74175add1c9a45"
dependencies:
babel-plugin-syntax-object-rest-spread "^6.13.0"
find-up "^2.1.0"
@@ -1142,19 +1115,19 @@ babel-plugin-jest-hoist@^23.2.0:
babel-plugin-syntax-class-properties@^6.8.0:
version "6.13.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de"
+ resolved "http://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de"
babel-plugin-syntax-flow@^6.18.0, babel-plugin-syntax-flow@^6.8.0:
version "6.18.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d"
+ resolved "http://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d"
babel-plugin-syntax-jsx@^6.8.0:
version "6.18.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946"
+ resolved "http://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946"
babel-plugin-syntax-object-rest-spread@^6.13.0, babel-plugin-syntax-object-rest-spread@^6.8.0:
version "6.13.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5"
+ resolved "http://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5"
babel-plugin-syntax-trailing-function-commas@^6.8.0:
version "6.22.0"
@@ -1362,8 +1335,8 @@ babel-preset-es2015-node@^6.1.1:
semver "5.x"
babel-preset-fbjs@^2.1.2, babel-preset-fbjs@^2.1.4:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/babel-preset-fbjs/-/babel-preset-fbjs-2.2.0.tgz#c25b879a914feefd964052b1bce4c90ee915023a"
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/babel-preset-fbjs/-/babel-preset-fbjs-2.3.0.tgz#92ff81307c18b926895114f9828ae1674c097f80"
dependencies:
babel-plugin-check-es2015-constants "^6.8.0"
babel-plugin-syntax-class-properties "^6.8.0"
@@ -1532,10 +1505,10 @@ base@^0.11.1:
pascalcase "^0.1.1"
basic-auth@~2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.0.tgz#015db3f353e02e56377755f962742e8981e7bbba"
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a"
dependencies:
- safe-buffer "5.1.1"
+ safe-buffer "5.1.2"
bcrypt-pbkdf@^1.0.0:
version "1.0.2"
@@ -1544,8 +1517,8 @@ bcrypt-pbkdf@^1.0.0:
tweetnacl "^0.14.3"
big-integer@^1.6.7:
- version "1.6.34"
- resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.34.tgz#701affc8f0d73c490930a6b482dc23ed6ffc7484"
+ version "1.6.36"
+ resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.36.tgz#78631076265d4ae3555c04f85e7d9d2f3a071a36"
bindings@^1.2.1:
version "1.3.0"
@@ -1619,8 +1592,8 @@ brorand@^1.0.1:
resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
browser-process-hrtime@^0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz#425d68a58d3447f02a04aa894187fce8af8b7b8e"
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz#616f00faef1df7ec1b5bf9cfe2bdc3170f26c7b4"
browser-resolve@^1.11.3:
version "1.11.3"
@@ -1655,7 +1628,7 @@ buffer-alloc-unsafe@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0"
-buffer-alloc@^1.1.0:
+buffer-alloc@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec"
dependencies:
@@ -1736,10 +1709,6 @@ callsites@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50"
-camelcase@^1.0.2:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
-
camelcase@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
@@ -1758,13 +1727,6 @@ caseless@~0.12.0:
version "0.12.0"
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
-center-align@^0.1.1:
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad"
- dependencies:
- align-text "^0.1.3"
- lazy-cache "^1.0.3"
-
chalk@1.1.1:
version "1.1.1"
resolved "http://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz#509afb67066e7499f7eb3535c77445772ae2d019"
@@ -1802,12 +1764,12 @@ chardet@^0.7.0:
resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
chownr@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181"
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494"
-ci-info@^1.3.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.4.0.tgz#4841d53cad49f11b827b648ebde27a6e189b412f"
+ci-info@^1.5.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497"
cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
version "1.0.4"
@@ -1856,14 +1818,6 @@ cli-width@^2.0.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639"
-cliui@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1"
- dependencies:
- center-align "^0.1.1"
- right-align "^0.1.1"
- wordwrap "0.0.2"
-
cliui@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d"
@@ -1895,26 +1849,20 @@ collection-visit@^1.0.0:
map-visit "^1.0.0"
object-visit "^1.0.0"
-color-convert@^1.8.2:
+color-convert@^1.8.2, color-convert@^1.9.0:
version "1.9.3"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
dependencies:
color-name "1.1.3"
-color-convert@^1.9.0:
- version "1.9.2"
- resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.2.tgz#49881b8fba67df12a96bdf3f56c0aab9e7913147"
- dependencies:
- color-name "1.1.1"
-
-color-name@1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.1.tgz#4b1415304cf50028ea81643643bd82ea05803689"
-
-color-name@1.1.3, color-name@^1.0.0:
+color-name@1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
+color-name@^1.0.0:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
+
color-string@^1.4.0:
version "1.5.3"
resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc"
@@ -1933,9 +1881,15 @@ color@~1.0.3:
color-convert "^1.8.2"
color-string "^1.4.0"
-combined-stream@1.0.6, combined-stream@~1.0.6:
+combined-stream@1.0.6:
version "1.0.6"
- resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818"
+ resolved "http://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818"
+ dependencies:
+ delayed-stream "~1.0.0"
+
+combined-stream@~1.0.6:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828"
dependencies:
delayed-stream "~1.0.0"
@@ -1947,18 +1901,18 @@ command-line-args@^4.0.6:
find-replace "^1.0.3"
typical "^2.6.1"
-commander@^2.14.1:
+commander@^2.14.1, commander@^2.9.0:
version "2.18.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.18.0.tgz#2bf063ddee7c7891176981a2cc798e5754bc6970"
-commander@^2.9.0:
- version "2.17.1"
- resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf"
-
commander@~2.13.0:
version "2.13.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c"
+commander@~2.17.1:
+ version "2.17.1"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf"
+
commander@~2.8.1:
version "2.8.1"
resolved "http://registry.npmjs.org/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4"
@@ -1969,19 +1923,15 @@ commondir@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
-compare-versions@^3.1.0:
- version "3.3.1"
- resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.3.1.tgz#1ede3172b713c15f7c7beb98cb74d2d82576dad3"
-
component-emitter@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
compressible@~2.0.14:
- version "2.0.14"
- resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.14.tgz#326c5f507fbb055f54116782b969a81b67a29da7"
+ version "2.0.15"
+ resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.15.tgz#857a9ab0a7e5a07d8d837ed43fe2defff64fe212"
dependencies:
- mime-db ">= 1.34.0 < 2"
+ mime-db ">= 1.36.0 < 2"
compression@^1.7.1:
version "1.7.3"
@@ -2026,8 +1976,10 @@ contains-path@^0.1.0:
resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a"
convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.5.1:
- version "1.5.1"
- resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5"
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20"
+ dependencies:
+ safe-buffer "~5.1.1"
copy-descriptor@^0.1.0:
version "0.1.1"
@@ -2082,6 +2034,13 @@ create-react-class@^15.6.2, create-react-class@^15.6.3:
loose-envify "^1.3.1"
object-assign "^4.1.1"
+cross-fetch@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-1.1.1.tgz#dede6865ae30f37eae62ac90ebb7bdac002b05a0"
+ dependencies:
+ node-fetch "1.7.3"
+ whatwg-fetch "2.0.3"
+
cross-spawn@^5.0.1, cross-spawn@^5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
@@ -2104,6 +2063,10 @@ crypto-js@^3.1.9-1:
version "3.1.9-1"
resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-3.1.9-1.tgz#fda19e761fc077e01ffbfdc6e9fdfc59e8806cd8"
+css-mediaquery@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/css-mediaquery/-/css-mediaquery-0.1.2.tgz#6a2c37344928618631c54bd33cedd301da18bea0"
+
cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0":
version "0.3.4"
resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.4.tgz#8cd52e8a3acfd68d3aed38ee0a640177d2f9d797"
@@ -2114,10 +2077,6 @@ cssstyle@^1.0.0:
dependencies:
cssom "0.3.x"
-csstype@^2.2.0:
- version "2.5.7"
- resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.5.7.tgz#bf9235d5872141eccfb2d16d82993c6b149179ff"
-
dashdash@^1.12.0:
version "1.14.1"
resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
@@ -2143,12 +2102,18 @@ debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.
ms "2.0.0"
debug@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
+ version "3.2.5"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.5.tgz#c2418fbfd7a29f4d4f70ff4cea604d4b64c46407"
dependencies:
- ms "2.0.0"
+ ms "^2.1.1"
-decamelize@^1.0.0, decamelize@^1.1.1:
+debug@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.0.1.tgz#f9bb36d439b8d1f0dd52d8fb6b46e4ebb8c1cd5b"
+ dependencies:
+ ms "^2.1.1"
+
+decamelize@^1.1.1:
version "1.2.0"
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
@@ -2224,11 +2189,11 @@ deepmerge@2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-2.1.0.tgz#511a54fff405fc346f0240bb270a3e9533a31102"
-default-require-extensions@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-2.0.0.tgz#f5f8fbb18a7d6d50b21f641f649ebb522cfe24f7"
+default-require-extensions@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8"
dependencies:
- strip-bom "^3.0.0"
+ strip-bom "^2.0.0"
define-properties@^1.1.2:
version "1.1.3"
@@ -2279,7 +2244,7 @@ denodeify@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/denodeify/-/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631"
-depd@~1.1.1, depd@~1.1.2:
+depd@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
@@ -2364,9 +2329,9 @@ drbg.js@^1.0.1:
create-hash "^1.1.2"
create-hmac "^1.1.4"
-dsteem@^0.9.0:
- version "0.9.0"
- resolved "https://registry.yarnpkg.com/dsteem/-/dsteem-0.9.0.tgz#43daa6107035a399e7a2e56d716ed4fd5d8cbea8"
+dsteem@^0.10.0:
+ version "0.10.1"
+ resolved "https://registry.yarnpkg.com/dsteem/-/dsteem-0.10.1.tgz#1921d9f662f138c0b52f8fa77c7abc37ceab42f4"
dependencies:
bs58 "^4.0.1"
bytebuffer "^5.0.1"
@@ -2455,12 +2420,12 @@ es-abstract@^1.5.1, es-abstract@^1.7.0:
is-regex "^1.0.4"
es-to-primitive@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d"
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377"
dependencies:
- is-callable "^1.1.1"
+ is-callable "^1.1.4"
is-date-object "^1.0.1"
- is-symbol "^1.0.1"
+ is-symbol "^1.0.2"
escape-html@~1.0.3:
version "1.0.3"
@@ -2573,14 +2538,14 @@ eslint-visitor-keys@^1.0.0:
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d"
eslint@^5.3.0:
- version "5.5.0"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.5.0.tgz#8557fcceab5141a8197da9ffd9904f89f64425c6"
+ version "5.6.1"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.6.1.tgz#348134e32ccc09abb2df1bf282b3f6eed8c7b480"
dependencies:
"@babel/code-frame" "^7.0.0"
ajv "^6.5.3"
chalk "^2.1.0"
cross-spawn "^6.0.5"
- debug "^3.1.0"
+ debug "^4.0.1"
doctrine "^2.1.0"
eslint-scope "^4.0.0"
eslint-utils "^1.3.1"
@@ -2664,7 +2629,7 @@ eventemitter3@^3.0.0:
events@^1.1.0:
version "1.1.1"
- resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924"
+ resolved "http://registry.npmjs.org/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924"
evp_bytestokey@^1.0.3:
version "1.0.3"
@@ -2735,14 +2700,14 @@ expand-range@^1.8.1:
dependencies:
fill-range "^2.1.0"
-expect@^23.5.0:
- version "23.5.0"
- resolved "https://registry.yarnpkg.com/expect/-/expect-23.5.0.tgz#18999a0eef8f8acf99023fde766d9c323c2562ed"
+expect@^23.6.0:
+ version "23.6.0"
+ resolved "https://registry.yarnpkg.com/expect/-/expect-23.6.0.tgz#1e0c8d3ba9a581c87bd71fb9bc8862d443425f98"
dependencies:
ansi-styles "^3.2.0"
- jest-diff "^23.5.0"
+ jest-diff "^23.6.0"
jest-get-type "^22.1.0"
- jest-matcher-utils "^23.5.0"
+ jest-matcher-utils "^23.6.0"
jest-message-util "^23.4.0"
jest-regex-util "^23.3.0"
@@ -2779,7 +2744,7 @@ external-editor@^1.0.1:
external-editor@^2.0.4:
version "2.2.0"
- resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5"
+ resolved "http://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5"
dependencies:
chardet "^0.4.0"
iconv-lite "^0.4.17"
@@ -3133,14 +3098,14 @@ get-own-enumerable-property-symbols@^2.0.1:
get-stream@^2.2.0:
version "2.3.1"
- resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de"
+ resolved "http://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de"
dependencies:
object-assign "^4.0.1"
pinkie-promise "^2.0.0"
get-stream@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
+ resolved "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
get-value@^2.0.3, get-value@^2.0.6:
version "2.0.6"
@@ -3176,8 +3141,8 @@ glob@^5.0.15:
path-is-absolute "^1.0.0"
glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2:
- version "7.1.2"
- resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
+ version "7.1.3"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1"
dependencies:
fs.realpath "^1.0.0"
inflight "^1.0.4"
@@ -3194,8 +3159,8 @@ global@^4.3.0:
process "~0.5.1"
globals@^11.1.0, globals@^11.7.0:
- version "11.7.0"
- resolved "https://registry.yarnpkg.com/globals/-/globals-11.7.0.tgz#a583faa43055b1aca771914bf68258e2fc125673"
+ version "11.8.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-11.8.0.tgz#c1ef45ee9bed6badf0663c5cb90e8d1adec1321d"
globals@^9.18.0:
version "9.18.0"
@@ -3225,14 +3190,14 @@ growly@^1.3.0:
resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081"
handlebars@^4.0.3:
- version "4.0.11"
- resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.11.tgz#630a35dfe0294bc281edae6ffc5d329fc7982dcc"
+ version "4.0.12"
+ resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.12.tgz#2c15c8a96d46da5e266700518ba8cb8d919d5bc5"
dependencies:
- async "^1.4.0"
+ async "^2.5.0"
optimist "^0.6.1"
- source-map "^0.4.4"
+ source-map "^0.6.1"
optionalDependencies:
- uglify-js "^2.6"
+ uglify-js "^3.1.4"
har-schema@^2.0.0:
version "2.0.0"
@@ -3259,6 +3224,10 @@ has-flag@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
+has-symbols@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44"
+
has-unicode@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
@@ -3378,7 +3347,7 @@ http-basic@^2.5.1:
http-errors@~1.6.2:
version "1.6.3"
- resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
+ resolved "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
dependencies:
depd "~1.1.2"
inherits "2.0.3"
@@ -3405,13 +3374,7 @@ husky@^0.14.3:
normalize-path "^1.0.0"
strip-indent "^2.0.0"
-iconv-lite@0.4.23, iconv-lite@^0.4.17, iconv-lite@^0.4.4, iconv-lite@~0.4.13:
- version "0.4.23"
- resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63"
- dependencies:
- safer-buffer ">= 2.1.2 < 3"
-
-iconv-lite@^0.4.24:
+iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13:
version "0.4.24"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
dependencies:
@@ -3557,19 +3520,19 @@ is-buffer@^1.1.5:
is-builtin-module@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe"
+ resolved "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe"
dependencies:
builtin-modules "^1.0.0"
-is-callable@^1.1.1, is-callable@^1.1.3:
+is-callable@^1.1.3, is-callable@^1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75"
is-ci@^1.0.10:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.0.tgz#3f4a08d6303a09882cef3f0fb97439c5f5ce2d53"
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c"
dependencies:
- ci-info "^1.3.0"
+ ci-info "^1.5.0"
is-data-descriptor@^0.1.4:
version "0.1.4"
@@ -3749,9 +3712,11 @@ is-stream@^1.0.1, is-stream@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
-is-symbol@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572"
+is-symbol@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38"
+ dependencies:
+ has-symbols "^1.0.0"
is-typedarray@~1.0.0:
version "1.0.0"
@@ -3795,66 +3760,65 @@ isstream@~0.1.2:
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
istanbul-api@^1.3.1:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.3.1.tgz#4c3b05d18c0016d1022e079b98dc82c40f488954"
+ version "1.3.7"
+ resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.3.7.tgz#a86c770d2b03e11e3f778cd7aedd82d2722092aa"
dependencies:
async "^2.1.4"
- compare-versions "^3.1.0"
fileset "^2.0.2"
- istanbul-lib-coverage "^1.2.0"
- istanbul-lib-hook "^1.2.0"
- istanbul-lib-instrument "^1.10.1"
- istanbul-lib-report "^1.1.4"
- istanbul-lib-source-maps "^1.2.4"
- istanbul-reports "^1.3.0"
+ istanbul-lib-coverage "^1.2.1"
+ istanbul-lib-hook "^1.2.2"
+ istanbul-lib-instrument "^1.10.2"
+ istanbul-lib-report "^1.1.5"
+ istanbul-lib-source-maps "^1.2.6"
+ istanbul-reports "^1.5.1"
js-yaml "^3.7.0"
mkdirp "^0.5.1"
once "^1.4.0"
-istanbul-lib-coverage@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz#f7d8f2e42b97e37fe796114cb0f9d68b5e3a4341"
-
-istanbul-lib-hook@^1.2.0:
+istanbul-lib-coverage@^1.2.0, istanbul-lib-coverage@^1.2.1:
version "1.2.1"
- resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.2.1.tgz#f614ec45287b2a8fc4f07f5660af787575601805"
- dependencies:
- append-transform "^1.0.0"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz#ccf7edcd0a0bb9b8f729feeb0930470f9af664f0"
-istanbul-lib-instrument@^1.10.1:
- version "1.10.1"
- resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.1.tgz#724b4b6caceba8692d3f1f9d0727e279c401af7b"
+istanbul-lib-hook@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.2.2.tgz#bc6bf07f12a641fbf1c85391d0daa8f0aea6bf86"
+ dependencies:
+ append-transform "^0.4.0"
+
+istanbul-lib-instrument@^1.10.1, istanbul-lib-instrument@^1.10.2:
+ version "1.10.2"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz#1f55ed10ac3c47f2bdddd5307935126754d0a9ca"
dependencies:
babel-generator "^6.18.0"
babel-template "^6.16.0"
babel-traverse "^6.18.0"
babel-types "^6.18.0"
babylon "^6.18.0"
- istanbul-lib-coverage "^1.2.0"
+ istanbul-lib-coverage "^1.2.1"
semver "^5.3.0"
-istanbul-lib-report@^1.1.4:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.4.tgz#e886cdf505c4ebbd8e099e4396a90d0a28e2acb5"
+istanbul-lib-report@^1.1.5:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.5.tgz#f2a657fc6282f96170aaf281eb30a458f7f4170c"
dependencies:
- istanbul-lib-coverage "^1.2.0"
+ istanbul-lib-coverage "^1.2.1"
mkdirp "^0.5.1"
path-parse "^1.0.5"
supports-color "^3.1.2"
-istanbul-lib-source-maps@^1.2.4:
- version "1.2.5"
- resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.5.tgz#ffe6be4e7ab86d3603e4290d54990b14506fc9b1"
+istanbul-lib-source-maps@^1.2.4, istanbul-lib-source-maps@^1.2.6:
+ version "1.2.6"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.6.tgz#37b9ff661580f8fca11232752ee42e08c6675d8f"
dependencies:
debug "^3.1.0"
- istanbul-lib-coverage "^1.2.0"
+ istanbul-lib-coverage "^1.2.1"
mkdirp "^0.5.1"
rimraf "^2.6.1"
source-map "^0.5.3"
-istanbul-reports@^1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.3.0.tgz#2f322e81e1d9520767597dca3c20a0cce89a3554"
+istanbul-reports@^1.5.1:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.5.1.tgz#97e4dbf3b515e8c484caea15d6524eebd3ff4e1a"
dependencies:
handlebars "^4.0.3"
@@ -3865,8 +3829,8 @@ jest-changed-files@^23.4.2:
throat "^4.0.0"
jest-cli@^23.5.0:
- version "23.5.0"
- resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-23.5.0.tgz#d316b8e34a38a610a1efc4f0403d8ef8a55e4492"
+ version "23.6.0"
+ resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-23.6.0.tgz#61ab917744338f443ef2baa282ddffdd658a5da4"
dependencies:
ansi-escapes "^3.0.0"
chalk "^2.0.1"
@@ -3880,18 +3844,18 @@ jest-cli@^23.5.0:
istanbul-lib-instrument "^1.10.1"
istanbul-lib-source-maps "^1.2.4"
jest-changed-files "^23.4.2"
- jest-config "^23.5.0"
+ jest-config "^23.6.0"
jest-environment-jsdom "^23.4.0"
jest-get-type "^22.1.0"
- jest-haste-map "^23.5.0"
+ jest-haste-map "^23.6.0"
jest-message-util "^23.4.0"
jest-regex-util "^23.3.0"
- jest-resolve-dependencies "^23.5.0"
- jest-runner "^23.5.0"
- jest-runtime "^23.5.0"
- jest-snapshot "^23.5.0"
+ jest-resolve-dependencies "^23.6.0"
+ jest-runner "^23.6.0"
+ jest-runtime "^23.6.0"
+ jest-snapshot "^23.6.0"
jest-util "^23.4.0"
- jest-validate "^23.5.0"
+ jest-validate "^23.6.0"
jest-watcher "^23.4.0"
jest-worker "^23.2.0"
micromatch "^2.3.11"
@@ -3905,33 +3869,33 @@ jest-cli@^23.5.0:
which "^1.2.12"
yargs "^11.0.0"
-jest-config@^23.5.0:
- version "23.5.0"
- resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-23.5.0.tgz#3770fba03f7507ee15f3b8867c742e48f31a9773"
+jest-config@^23.6.0:
+ version "23.6.0"
+ resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-23.6.0.tgz#f82546a90ade2d8c7026fbf6ac5207fc22f8eb1d"
dependencies:
babel-core "^6.0.0"
- babel-jest "^23.4.2"
+ babel-jest "^23.6.0"
chalk "^2.0.1"
glob "^7.1.1"
jest-environment-jsdom "^23.4.0"
jest-environment-node "^23.4.0"
jest-get-type "^22.1.0"
- jest-jasmine2 "^23.5.0"
+ jest-jasmine2 "^23.6.0"
jest-regex-util "^23.3.0"
- jest-resolve "^23.5.0"
+ jest-resolve "^23.6.0"
jest-util "^23.4.0"
- jest-validate "^23.5.0"
+ jest-validate "^23.6.0"
micromatch "^2.3.11"
- pretty-format "^23.5.0"
+ pretty-format "^23.6.0"
-jest-diff@^23.5.0:
- version "23.5.0"
- resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-23.5.0.tgz#250651a433dd0050290a07642946cc9baaf06fba"
+jest-diff@^23.6.0:
+ version "23.6.0"
+ resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-23.6.0.tgz#1500f3f16e850bb3d71233408089be099f610c7d"
dependencies:
chalk "^2.0.1"
diff "^3.2.0"
jest-get-type "^22.1.0"
- pretty-format "^23.5.0"
+ pretty-format "^23.6.0"
jest-docblock@23.0.1:
version "23.0.1"
@@ -3945,12 +3909,12 @@ jest-docblock@^23.0.1, jest-docblock@^23.2.0:
dependencies:
detect-newline "^2.1.0"
-jest-each@^23.5.0:
- version "23.5.0"
- resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-23.5.0.tgz#77f7e2afe6132a80954b920006e78239862b10ba"
+jest-each@^23.6.0:
+ version "23.6.0"
+ resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-23.6.0.tgz#ba0c3a82a8054387016139c733a05242d3d71575"
dependencies:
chalk "^2.0.1"
- pretty-format "^23.5.0"
+ pretty-format "^23.6.0"
jest-environment-jsdom@^23.4.0:
version "23.4.0"
@@ -3983,9 +3947,9 @@ jest-haste-map@23.1.0:
micromatch "^2.3.11"
sane "^2.0.0"
-jest-haste-map@^23.5.0:
- version "23.5.0"
- resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-23.5.0.tgz#d4ca618188bd38caa6cb20349ce6610e194a8065"
+jest-haste-map@^23.6.0:
+ version "23.6.0"
+ resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-23.6.0.tgz#2e3eb997814ca696d62afdb3f2529f5bbc935e16"
dependencies:
fb-watchman "^2.0.0"
graceful-fs "^4.1.11"
@@ -3996,36 +3960,36 @@ jest-haste-map@^23.5.0:
micromatch "^2.3.11"
sane "^2.0.0"
-jest-jasmine2@^23.5.0:
- version "23.5.0"
- resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-23.5.0.tgz#05fe7f1788e650eeb5a03929e6461ea2e9f3db53"
+jest-jasmine2@^23.6.0:
+ version "23.6.0"
+ resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-23.6.0.tgz#840e937f848a6c8638df24360ab869cc718592e0"
dependencies:
babel-traverse "^6.0.0"
chalk "^2.0.1"
co "^4.6.0"
- expect "^23.5.0"
+ expect "^23.6.0"
is-generator-fn "^1.0.0"
- jest-diff "^23.5.0"
- jest-each "^23.5.0"
- jest-matcher-utils "^23.5.0"
+ jest-diff "^23.6.0"
+ jest-each "^23.6.0"
+ jest-matcher-utils "^23.6.0"
jest-message-util "^23.4.0"
- jest-snapshot "^23.5.0"
+ jest-snapshot "^23.6.0"
jest-util "^23.4.0"
- pretty-format "^23.5.0"
+ pretty-format "^23.6.0"
-jest-leak-detector@^23.5.0:
- version "23.5.0"
- resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-23.5.0.tgz#14ac2a785bd625160a2ea968fd5d98b7dcea3e64"
+jest-leak-detector@^23.6.0:
+ version "23.6.0"
+ resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-23.6.0.tgz#e4230fd42cf381a1a1971237ad56897de7e171de"
dependencies:
- pretty-format "^23.5.0"
+ pretty-format "^23.6.0"
-jest-matcher-utils@^23.5.0:
- version "23.5.0"
- resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-23.5.0.tgz#0e2ea67744cab78c9ab15011c4d888bdd3e49e2a"
+jest-matcher-utils@^23.6.0:
+ version "23.6.0"
+ resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-23.6.0.tgz#726bcea0c5294261a7417afb6da3186b4b8cac80"
dependencies:
chalk "^2.0.1"
jest-get-type "^22.1.0"
- pretty-format "^23.5.0"
+ pretty-format "^23.6.0"
jest-message-util@^23.4.0:
version "23.4.0"
@@ -4049,42 +4013,42 @@ jest-regex-util@^23.3.0:
version "23.3.0"
resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-23.3.0.tgz#5f86729547c2785c4002ceaa8f849fe8ca471bc5"
-jest-resolve-dependencies@^23.5.0:
- version "23.5.0"
- resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-23.5.0.tgz#10c4d135beb9d2256de1fedc7094916c3ad74af7"
+jest-resolve-dependencies@^23.6.0:
+ version "23.6.0"
+ resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-23.6.0.tgz#b4526af24c8540d9a3fab102c15081cf509b723d"
dependencies:
jest-regex-util "^23.3.0"
- jest-snapshot "^23.5.0"
+ jest-snapshot "^23.6.0"
-jest-resolve@^23.5.0:
- version "23.5.0"
- resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-23.5.0.tgz#3b8e7f67e84598f0caf63d1530bd8534a189d0e6"
+jest-resolve@^23.6.0:
+ version "23.6.0"
+ resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-23.6.0.tgz#cf1d1a24ce7ee7b23d661c33ba2150f3aebfa0ae"
dependencies:
browser-resolve "^1.11.3"
chalk "^2.0.1"
realpath-native "^1.0.0"
-jest-runner@^23.5.0:
- version "23.5.0"
- resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-23.5.0.tgz#570f7a044da91648b5bb9b6baacdd511076c71d7"
+jest-runner@^23.6.0:
+ version "23.6.0"
+ resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-23.6.0.tgz#3894bd219ffc3f3cb94dc48a4170a2e6f23a5a38"
dependencies:
exit "^0.1.2"
graceful-fs "^4.1.11"
- jest-config "^23.5.0"
+ jest-config "^23.6.0"
jest-docblock "^23.2.0"
- jest-haste-map "^23.5.0"
- jest-jasmine2 "^23.5.0"
- jest-leak-detector "^23.5.0"
+ jest-haste-map "^23.6.0"
+ jest-jasmine2 "^23.6.0"
+ jest-leak-detector "^23.6.0"
jest-message-util "^23.4.0"
- jest-runtime "^23.5.0"
+ jest-runtime "^23.6.0"
jest-util "^23.4.0"
jest-worker "^23.2.0"
source-map-support "^0.5.6"
throat "^4.0.0"
-jest-runtime@^23.5.0:
- version "23.5.0"
- resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-23.5.0.tgz#eb503525a196dc32f2f9974e3482d26bdf7b63ce"
+jest-runtime@^23.6.0:
+ version "23.6.0"
+ resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-23.6.0.tgz#059e58c8ab445917cd0e0d84ac2ba68de8f23082"
dependencies:
babel-core "^6.0.0"
babel-plugin-istanbul "^4.1.6"
@@ -4093,14 +4057,14 @@ jest-runtime@^23.5.0:
exit "^0.1.2"
fast-json-stable-stringify "^2.0.0"
graceful-fs "^4.1.11"
- jest-config "^23.5.0"
- jest-haste-map "^23.5.0"
+ jest-config "^23.6.0"
+ jest-haste-map "^23.6.0"
jest-message-util "^23.4.0"
jest-regex-util "^23.3.0"
- jest-resolve "^23.5.0"
- jest-snapshot "^23.5.0"
+ jest-resolve "^23.6.0"
+ jest-snapshot "^23.6.0"
jest-util "^23.4.0"
- jest-validate "^23.5.0"
+ jest-validate "^23.6.0"
micromatch "^2.3.11"
realpath-native "^1.0.0"
slash "^1.0.0"
@@ -4112,19 +4076,19 @@ jest-serializer@23.0.1, jest-serializer@^23.0.1:
version "23.0.1"
resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-23.0.1.tgz#a3776aeb311e90fe83fab9e533e85102bd164165"
-jest-snapshot@^23.5.0:
- version "23.5.0"
- resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-23.5.0.tgz#cc368ebd8513e1175e2a7277f37a801b7358ae79"
+jest-snapshot@^23.6.0:
+ version "23.6.0"
+ resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-23.6.0.tgz#f9c2625d1b18acda01ec2d2b826c0ce58a5aa17a"
dependencies:
babel-types "^6.0.0"
chalk "^2.0.1"
- jest-diff "^23.5.0"
- jest-matcher-utils "^23.5.0"
+ jest-diff "^23.6.0"
+ jest-matcher-utils "^23.6.0"
jest-message-util "^23.4.0"
- jest-resolve "^23.5.0"
+ jest-resolve "^23.6.0"
mkdirp "^0.5.1"
natural-compare "^1.4.0"
- pretty-format "^23.5.0"
+ pretty-format "^23.6.0"
semver "^5.5.0"
jest-util@^23.4.0:
@@ -4140,14 +4104,14 @@ jest-util@^23.4.0:
slash "^1.0.0"
source-map "^0.6.0"
-jest-validate@^23.5.0:
- version "23.5.0"
- resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-23.5.0.tgz#f5df8f761cf43155e1b2e21d6e9de8a2852d0231"
+jest-validate@^23.5.0, jest-validate@^23.6.0:
+ version "23.6.0"
+ resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-23.6.0.tgz#36761f99d1ed33fcd425b4e4c5595d62b6597474"
dependencies:
chalk "^2.0.1"
jest-get-type "^22.1.0"
leven "^2.1.0"
- pretty-format "^23.5.0"
+ pretty-format "^23.6.0"
jest-watcher@^23.4.0:
version "23.4.0"
@@ -4270,15 +4234,15 @@ json-stringify-safe@~5.0.1:
json5@^0.4.0:
version "0.4.0"
- resolved "https://registry.yarnpkg.com/json5/-/json5-0.4.0.tgz#054352e4c4c80c86c0923877d449de176a732c8d"
+ resolved "http://registry.npmjs.org/json5/-/json5-0.4.0.tgz#054352e4c4c80c86c0923877d449de176a732c8d"
json5@^0.5.0, json5@^0.5.1:
version "0.5.1"
- resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
+ resolved "http://registry.npmjs.org/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
jsonfile@^2.1.0:
version "2.4.0"
- resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8"
+ resolved "http://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8"
optionalDependencies:
graceful-fs "^4.1.6"
@@ -4309,7 +4273,7 @@ jsx-ast-utils@^2.0.1:
kind-of@^1.1.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-1.1.0.tgz#140a3d2d41a36d2efcfa9377b62c24f8495a5c44"
+ resolved "http://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz#140a3d2d41a36d2efcfa9377b62c24f8495a5c44"
kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
version "3.2.2"
@@ -4338,12 +4302,8 @@ klaw@^1.0.0:
graceful-fs "^4.1.9"
kleur@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/kleur/-/kleur-2.0.1.tgz#7cc64b0d188d0dcbc98bdcdfdda2cc10619ddce8"
-
-lazy-cache@^1.0.3:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/kleur/-/kleur-2.0.2.tgz#b704f4944d95e255d038f0cb05fb8a602c55a300"
lcid@^1.0.0:
version "1.0.0"
@@ -4367,8 +4327,8 @@ levn@^0.3.0, levn@~0.3.0:
type-check "~0.3.2"
lint-staged@^7.2.0:
- version "7.2.2"
- resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-7.2.2.tgz#0983d55d497f19f36d11ff2c8242b2f56cc2dd05"
+ version "7.3.0"
+ resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-7.3.0.tgz#90ff33e5ca61ed3dbac35b6f6502dbefdc0db58d"
dependencies:
chalk "^2.3.1"
commander "^2.14.1"
@@ -4435,7 +4395,7 @@ listr@^0.14.1:
load-json-file@^1.0.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
+ resolved "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
dependencies:
graceful-fs "^4.1.2"
parse-json "^2.2.0"
@@ -4445,7 +4405,7 @@ load-json-file@^1.0.0:
load-json-file@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8"
+ resolved "http://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8"
dependencies:
graceful-fs "^4.1.2"
parse-json "^2.2.0"
@@ -4487,11 +4447,11 @@ lodash.throttle@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4"
-lodash@4.17.10, lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0, lodash@^4.6.1:
+lodash@4.17.10:
version "4.17.10"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7"
-lodash@4.x.x, lodash@^4.0.0, lodash@^4.10.1, lodash@^4.11.1, lodash@^4.2.0:
+lodash@4.x.x, lodash@^4.0.0, lodash@^4.10.1, lodash@^4.11.1, lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.3.0, lodash@^4.6.1:
version "4.17.11"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d"
@@ -4518,10 +4478,6 @@ long@~3:
version "3.2.0"
resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b"
-longest@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
-
loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1:
version "1.4.0"
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
@@ -4562,11 +4518,12 @@ math-random@^1.0.1:
resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.1.tgz#8b3aac588b8a66e4975e3cdea67f7bb329601fac"
md5.js@^1.3.4:
- version "1.3.4"
- resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d"
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f"
dependencies:
hash-base "^3.0.0"
inherits "^2.0.1"
+ safe-buffer "^5.1.2"
mem@^1.1.0:
version "1.1.0"
@@ -4777,7 +4734,7 @@ micromatch@^3.1.4, micromatch@^3.1.8:
snapdragon "^0.8.1"
to-regex "^3.0.2"
-"mime-db@>= 1.34.0 < 2":
+"mime-db@>= 1.36.0 < 2", mime-db@~1.36.0:
version "1.36.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.36.0.tgz#5020478db3c7fe93aad7bbcc4dcf869c43363397"
@@ -4785,10 +4742,6 @@ mime-db@~1.23.0:
version "1.23.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.23.0.tgz#a31b4070adaea27d732ea333740a64d0ec9a6659"
-mime-db@~1.35.0:
- version "1.35.0"
- resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.35.0.tgz#0569d657466491283709663ad379a99b90d9ab47"
-
mime-types@2.1.11:
version "2.1.11"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.11.tgz#c259c471bda808a85d6cd193b430a5fae4473b3c"
@@ -4796,10 +4749,10 @@ mime-types@2.1.11:
mime-db "~1.23.0"
mime-types@^2.1.12, mime-types@~2.1.18, mime-types@~2.1.19:
- version "2.1.19"
- resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.19.tgz#71e464537a7ef81c15f2db9d97e913fc0ff606f0"
+ version "2.1.20"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.20.tgz#930cb719d571e903738520f8470911548ca2cc19"
dependencies:
- mime-db "~1.35.0"
+ mime-db "~1.36.0"
mime@1.4.1:
version "1.4.1"
@@ -4835,15 +4788,15 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
minimist@0.0.8:
version "0.0.8"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
+ resolved "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
minimist@^1.1.1, minimist@^1.2.0:
version "1.2.0"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
+ resolved "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
minimist@~0.0.1:
version "0.0.10"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf"
+ resolved "http://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf"
minipass@^2.2.1, minipass@^2.3.3:
version "2.3.4"
@@ -4867,7 +4820,7 @@ mixin-deep@^1.2.0:
mkdirp@^0.5.0, mkdirp@^0.5.1:
version "0.5.1"
- resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
+ resolved "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
dependencies:
minimist "0.0.8"
@@ -4876,12 +4829,12 @@ moment@^2.22.2:
resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.2.tgz#3c257f9839fc0e93ff53149632239eb90783ff66"
morgan@^1.9.0:
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.9.0.tgz#d01fa6c65859b76fcf31b3cb53a3821a311d8051"
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.9.1.tgz#0a8d16734a1d9afbc824b99df87e738e58e2da59"
dependencies:
basic-auth "~2.0.0"
debug "2.6.9"
- depd "~1.1.1"
+ depd "~1.1.2"
on-finished "~2.3.0"
on-headers "~1.0.1"
@@ -4889,6 +4842,10 @@ ms@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
+ms@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
+
mute-stream@0.0.6:
version "0.0.6"
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.6.tgz#48962b19e169fd1dfc240b3f1e7317627bbc47db"
@@ -4901,13 +4858,9 @@ nan@2.8.0:
version "2.8.0"
resolved "https://registry.yarnpkg.com/nan/-/nan-2.8.0.tgz#ed715f3fe9de02b57a5e6252d90a96675e1f085a"
-nan@^2.2.1:
- version "2.11.0"
- resolved "https://registry.yarnpkg.com/nan/-/nan-2.11.0.tgz#574e360e4d954ab16966ec102c0c049fd961a099"
-
-nan@^2.9.2:
- version "2.10.0"
- resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f"
+nan@^2.2.1, nan@^2.9.2:
+ version "2.11.1"
+ resolved "https://registry.yarnpkg.com/nan/-/nan-2.11.1.tgz#90e22bccb8ca57ea4cd37cc83d3819b52eea6766"
nanomatch@^1.2.9:
version "1.2.13"
@@ -4958,8 +4911,8 @@ natural-compare@^1.4.0:
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
needle@^2.2.1:
- version "2.2.2"
- resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.2.tgz#1120ca4c41f2fcc6976fd28a8968afe239929418"
+ version "2.2.4"
+ resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e"
dependencies:
debug "^2.1.2"
iconv-lite "^0.4.4"
@@ -4973,7 +4926,7 @@ nice-try@^1.0.4:
version "1.0.5"
resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
-node-fetch@^1.0.1, node-fetch@^1.3.3, node-fetch@^1.6.3:
+node-fetch@1.7.3, node-fetch@^1.0.1, node-fetch@^1.3.3, node-fetch@^1.6.3:
version "1.7.3"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef"
dependencies:
@@ -5110,8 +5063,8 @@ number-is-nan@^1.0.0:
resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
nwsapi@^2.0.7:
- version "2.0.8"
- resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.0.8.tgz#e3603579b7e162b3dbedae4fb24e46f771d8fa24"
+ version "2.0.9"
+ resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.0.9.tgz#77ac0cdfdcad52b6a1151a84e73254edc33ed016"
oauth-sign@~0.9.0:
version "0.9.0"
@@ -5133,6 +5086,10 @@ object-keys@^1.0.12:
version "1.0.12"
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2"
+object-resolve-path@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/object-resolve-path/-/object-resolve-path-1.1.1.tgz#a7f8f93e8a20af80e44217ba7db54316d9d12232"
+
object-visit@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
@@ -5187,7 +5144,7 @@ onetime@^2.0.0:
opn@^3.0.2:
version "3.0.3"
- resolved "https://registry.yarnpkg.com/opn/-/opn-3.0.3.tgz#b6d99e7399f78d65c3baaffef1fb288e9b85243a"
+ resolved "http://registry.npmjs.org/opn/-/opn-3.0.3.tgz#b6d99e7399f78d65c3baaffef1fb288e9b85243a"
dependencies:
object-assign "^4.0.1"
@@ -5340,7 +5297,7 @@ path-type@^2.0.0:
pegjs@^0.10.0:
version "0.10.0"
- resolved "https://registry.yarnpkg.com/pegjs/-/pegjs-0.10.0.tgz#cf8bafae6eddff4b5a7efb185269eaaf4610ddbd"
+ resolved "http://registry.npmjs.org/pegjs/-/pegjs-0.10.0.tgz#cf8bafae6eddff4b5a7efb185269eaaf4610ddbd"
pend@~1.2.0:
version "1.2.0"
@@ -5439,19 +5396,19 @@ preserve@^0.2.0:
resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
prettier@^1.14.0:
- version "1.14.2"
- resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.14.2.tgz#0ac1c6e1a90baa22a62925f41963c841983282f9"
+ version "1.14.3"
+ resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.14.3.tgz#90238dd4c0684b7edce5f83b0fb7328e48bd0895"
-pretty-format@^23.5.0:
- version "23.5.0"
- resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-23.5.0.tgz#0f9601ad9da70fe690a269cd3efca732c210687c"
+pretty-format@^23.6.0:
+ version "23.6.0"
+ resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-23.6.0.tgz#5eaac8eeb6b33b987b7fe6097ea6a8a146ab5760"
dependencies:
ansi-regex "^3.0.0"
ansi-styles "^3.2.0"
pretty-format@^4.2.1:
version "4.3.1"
- resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-4.3.1.tgz#530be5c42b3c05b36414a7a2a4337aa80acd0e8d"
+ resolved "http://registry.npmjs.org/pretty-format/-/pretty-format-4.3.1.tgz#530be5c42b3c05b36414a7a2a4337aa80acd0e8d"
print-message@^2.1.0:
version "2.1.0"
@@ -5547,27 +5504,23 @@ rc@^1.2.7:
strip-json-comments "~2.0.1"
react-clone-referenced-element@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/react-clone-referenced-element/-/react-clone-referenced-element-1.0.1.tgz#2bba8c69404c5e4a944398600bcc4c941f860682"
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/react-clone-referenced-element/-/react-clone-referenced-element-1.1.0.tgz#9cdda7f2aeb54fea791f3ab8c6ab96c7a77d0158"
react-deep-force-update@^1.0.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/react-deep-force-update/-/react-deep-force-update-1.1.1.tgz#bcd31478027b64b3339f108921ab520b4313dc2c"
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/react-deep-force-update/-/react-deep-force-update-1.1.2.tgz#3d2ae45c2c9040cbb1772be52f8ea1ade6ca2ee1"
react-devtools-core@^3.2.2:
- version "3.2.3"
- resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-3.2.3.tgz#a37e199d94865e2cbb616b97be8f5820674e6abd"
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-3.4.0.tgz#6b61594dce01b129a9e0b44b5bc4952f8f59ceec"
dependencies:
shell-quote "^1.6.1"
ws "^3.3.1"
-react-is@^16.3.2:
- version "16.5.1"
- resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.5.1.tgz#c6e8734fd548a22e1cef4fd0833afbeb433b85ee"
-
-react-is@^16.4.1:
- version "16.4.2"
- resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.4.2.tgz#84891b56c2b6d9efdee577cc83501dfc5ecead88"
+react-is@^16.3.2, react-is@^16.4.1:
+ version "16.5.2"
+ resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.5.2.tgz#e2a7b7c3f5d48062eb769fcb123505eb928722e3"
react-lifecycles-compat@2.0.0:
version "2.0.0"
@@ -5592,6 +5545,13 @@ react-native-easy-grid@0.2.0:
dependencies:
lodash "^4.11.1"
+react-native-extended-stylesheet@^0.10.0:
+ version "0.10.0"
+ resolved "https://registry.yarnpkg.com/react-native-extended-stylesheet/-/react-native-extended-stylesheet-0.10.0.tgz#bc77caf7494dcc67f681128dd8cb5e07dacef9dd"
+ dependencies:
+ css-mediaquery "^0.1.2"
+ object-resolve-path "^1.1.0"
+
react-native-fast-image@^4.0.14:
version "4.0.14"
resolved "https://registry.yarnpkg.com/react-native-fast-image/-/react-native-fast-image-4.0.14.tgz#1e84c9a01b1471793e294ef4e7c3cc20e09562a0"
@@ -5609,9 +5569,9 @@ react-native-html-renderer@^1.0.0:
react-native-lightbox "git+https://github.com/oblador/react-native-lightbox.git"
stream "0.0.2"
-react-native-iphone-x-helper@^1.0.1:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/react-native-iphone-x-helper/-/react-native-iphone-x-helper-1.1.0.tgz#3a881720900bd8d1c67de2c465ea9aa9296180a7"
+react-native-iphone-x-helper@^1.0.1, react-native-iphone-x-helper@^1.0.3:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/react-native-iphone-x-helper/-/react-native-iphone-x-helper-1.2.0.tgz#9f8a376eb00bc712115abff4420318a0063fa796"
react-native-keyboard-aware-scroll-view@0.5.0:
version "0.5.0"
@@ -5620,6 +5580,13 @@ react-native-keyboard-aware-scroll-view@0.5.0:
prop-types "^15.6.0"
react-native-iphone-x-helper "^1.0.1"
+react-native-keyboard-aware-scroll-view@^0.7.2:
+ version "0.7.2"
+ resolved "https://registry.yarnpkg.com/react-native-keyboard-aware-scroll-view/-/react-native-keyboard-aware-scroll-view-0.7.2.tgz#3c758dea21bfe1d292ad907b89b74fcbd9d13a73"
+ dependencies:
+ prop-types "^15.6.2"
+ react-native-iphone-x-helper "^1.0.3"
+
"react-native-lightbox@git+https://github.com/oblador/react-native-lightbox.git":
version "0.8.0"
resolved "git+https://github.com/oblador/react-native-lightbox.git#4448979323623a56c62b5f8be1032322485cbd31"
@@ -5640,6 +5607,12 @@ react-native-markdown-view@^1.0.0:
react-native-tabular-grid-markdown-view "0.1.x"
simple-markdown "0.3.x"
+react-native-modal-dropdown@^0.6.2:
+ version "0.6.2"
+ resolved "https://registry.yarnpkg.com/react-native-modal-dropdown/-/react-native-modal-dropdown-0.6.2.tgz#da6027b3546d2031fbce46242bffc95561e13599"
+ dependencies:
+ prop-types "^15.6.0"
+
react-native-modal-popover@0.0.10:
version "0.0.10"
resolved "https://registry.yarnpkg.com/react-native-modal-popover/-/react-native-modal-popover-0.0.10.tgz#89271eb45f6c3f83702669378c6af97f0c258711"
@@ -5656,8 +5629,8 @@ react-native-modal@^6.5.0:
react-native-animatable "^1.2.4"
react-native-navigation@^2.0.2519:
- version "2.0.2544"
- resolved "https://registry.yarnpkg.com/react-native-navigation/-/react-native-navigation-2.0.2544.tgz#74987014205db784df79a58ace80b2b8bb714b62"
+ version "2.0.2571"
+ resolved "https://registry.yarnpkg.com/react-native-navigation/-/react-native-navigation-2.0.2571.tgz#d85c566d2c149f08de27595ef9d611a69a163f49"
dependencies:
hoist-non-react-statics "3.x.x"
lodash "4.x.x"
@@ -5680,15 +5653,9 @@ react-native-tabular-grid-markdown-view@0.1.x:
dependencies:
prop-types "^15.5.10"
-react-native-theming@^1.0.16:
- version "1.0.16"
- resolved "https://registry.yarnpkg.com/react-native-theming/-/react-native-theming-1.0.16.tgz#7cf3500c7e951957cf03defc5bea3dfce6a047e9"
- dependencies:
- prop-types "^15.6.0"
-
react-native-vector-icons@4.6.0, react-native-vector-icons@^4.6.0:
version "4.6.0"
- resolved "https://registry.yarnpkg.com/react-native-vector-icons/-/react-native-vector-icons-4.6.0.tgz#e4014311ffa6de397d914ffc31b7097a874cc8d5"
+ resolved "http://registry.npmjs.org/react-native-vector-icons/-/react-native-vector-icons-4.6.0.tgz#e4014311ffa6de397d914ffc31b7097a874cc8d5"
dependencies:
lodash "^4.0.0"
prop-types "^15.5.10"
@@ -5759,7 +5726,7 @@ react-proxy@^1.1.7:
react-redux@^5.0.7:
version "5.0.7"
- resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-5.0.7.tgz#0dc1076d9afb4670f993ffaef44b8f8c1155a4c8"
+ resolved "http://registry.npmjs.org/react-redux/-/react-redux-5.0.7.tgz#0dc1076d9afb4670f993ffaef44b8f8c1155a4c8"
dependencies:
hoist-non-react-statics "^2.5.0"
invariant "^2.0.0"
@@ -5836,7 +5803,7 @@ read-pkg@^2.0.0:
readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.5:
version "2.3.6"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
+ resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
dependencies:
core-util-is "~1.0.0"
inherits "~2.0.3"
@@ -5847,8 +5814,8 @@ readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable
util-deprecate "~1.0.1"
realm@^2.15.3:
- version "2.15.3"
- resolved "https://registry.yarnpkg.com/realm/-/realm-2.15.3.tgz#1ac9916b240fae310de2c039c3ecc2d2f1509e3b"
+ version "2.17.0"
+ resolved "https://registry.yarnpkg.com/realm/-/realm-2.17.0.tgz#91366b8cc05d1f8012da6f18b5a2dacc1d990f59"
dependencies:
command-line-args "^4.0.6"
decompress "^4.2.0"
@@ -5866,8 +5833,8 @@ realm@^2.15.3:
url-parse "^1.2.0"
realpath-native@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.0.1.tgz#07f40a0cce8f8261e2e8b7ebebf5c95965d7b633"
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.0.2.tgz#cd51ce089b513b45cf9b1516c82989b51ccc6560"
dependencies:
util.promisify "^1.0.0"
@@ -6104,12 +6071,6 @@ ret@~0.1.10:
version "0.1.15"
resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
-right-align@^0.1.1:
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef"
- dependencies:
- align-text "^0.1.1"
-
rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1:
version "2.6.2"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36"
@@ -6118,7 +6079,7 @@ rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1:
rimraf@~2.2.6:
version "2.2.8"
- resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582"
+ resolved "http://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582"
ripemd160@^2.0.0, ripemd160@^2.0.1:
version "2.0.2"
@@ -6158,15 +6119,11 @@ rx@^4.1.0:
resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782"
rxjs@^6.1.0:
- version "6.3.2"
- resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.3.2.tgz#6a688b16c4e6e980e62ea805ec30648e1c60907f"
+ version "6.3.3"
+ resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.3.3.tgz#3c6a7fa420e844a81390fb1158a9ec614f4bad55"
dependencies:
tslib "^1.9.0"
-safe-buffer@5.1.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
-
safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
version "5.1.2"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
@@ -6202,7 +6159,13 @@ sax@^1.2.4:
sax@~1.1.1:
version "1.1.6"
- resolved "https://registry.yarnpkg.com/sax/-/sax-1.1.6.tgz#5d616be8a5e607d54e114afae55b7eaf2fcc3240"
+ resolved "http://registry.npmjs.org/sax/-/sax-1.1.6.tgz#5d616be8a5e607d54e114afae55b7eaf2fcc3240"
+
+sc2-sdk@^1.0.2:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/sc2-sdk/-/sc2-sdk-1.1.0.tgz#d44ef79bcc096606cb42154438b4f56327133a0a"
+ dependencies:
+ cross-fetch "^1.1.1"
secp256k1@^3.3.1:
version "3.5.2"
@@ -6420,17 +6383,11 @@ source-map-url@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
-source-map@^0.4.4:
- version "0.4.4"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b"
- dependencies:
- amdefine ">=0.0.4"
-
-source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1:
+source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7:
version "0.5.7"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
-source-map@^0.6.0, source-map@~0.6.1:
+source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
@@ -6442,15 +6399,15 @@ spawn-sync@^1.0.15:
os-shim "^0.1.2"
spdx-correct@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.0.tgz#05a5b4d7153a195bc92c3c425b69f3b2a9524c82"
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.1.tgz#434434ff9d1726b4d9f4219d1004813d80639e30"
dependencies:
spdx-expression-parse "^3.0.0"
spdx-license-ids "^3.0.0"
spdx-exceptions@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz#2c7ae61056c714a5b9b9b2b2af7d311ef5c78fe9"
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977"
spdx-expression-parse@^3.0.0:
version "3.0.0"
@@ -6460,8 +6417,8 @@ spdx-expression-parse@^3.0.0:
spdx-license-ids "^3.0.0"
spdx-license-ids@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz#7a7cd28470cc6d3a1cfe6d66886f6bc430d3ac87"
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz#e2a303236cac54b04031fa7a5a79c7e701df852f"
split-string@^3.0.1, split-string@^3.0.2:
version "3.1.0"
@@ -6579,7 +6536,7 @@ stringify-object@^3.2.2:
strip-ansi@^3.0.0, strip-ansi@^3.0.1:
version "3.0.1"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
+ resolved "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
dependencies:
ansi-regex "^2.0.0"
@@ -6661,15 +6618,15 @@ table@^4.0.3:
string-width "^2.1.1"
tar-stream@^1.5.2:
- version "1.6.1"
- resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.1.tgz#f84ef1696269d6223ca48f6e1eeede3f7e81f395"
+ version "1.6.2"
+ resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555"
dependencies:
bl "^1.0.0"
- buffer-alloc "^1.1.0"
+ buffer-alloc "^1.2.0"
end-of-stream "^1.0.0"
fs-constants "^1.0.0"
readable-stream "^2.3.0"
- to-buffer "^1.1.0"
+ to-buffer "^1.1.1"
xtend "^4.0.0"
tar@^4:
@@ -6692,11 +6649,11 @@ temp@0.8.3:
rimraf "~2.2.6"
test-exclude@^4.2.1:
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.2.1.tgz#dfa222f03480bca69207ca728b37d74b45f724fa"
+ version "4.2.3"
+ resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.2.3.tgz#a9a5e64474e4398339245a0a769ad7c2f4a97c20"
dependencies:
arrify "^1.0.1"
- micromatch "^3.1.8"
+ micromatch "^2.3.11"
object-assign "^4.1.0"
read-pkg-up "^1.0.1"
require-main-filename "^1.0.1"
@@ -6736,7 +6693,7 @@ through2@^2.0.0:
through@^2.3.6:
version "2.3.8"
- resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
+ resolved "http://registry.npmjs.org/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
time-stamp@^1.0.0:
version "1.1.0"
@@ -6758,7 +6715,7 @@ tmpl@1.0.x:
version "1.0.4"
resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1"
-to-buffer@^1.1.0:
+to-buffer@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80"
@@ -6852,18 +6809,12 @@ uglify-es@^3.1.9:
commander "~2.13.0"
source-map "~0.6.1"
-uglify-js@^2.6:
- version "2.8.29"
- resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd"
+uglify-js@^3.1.4:
+ version "3.4.9"
+ resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.9.tgz#af02f180c1207d76432e473ed24a28f4a782bae3"
dependencies:
- source-map "~0.5.1"
- yargs "~3.10.0"
- optionalDependencies:
- uglify-to-browserify "~1.0.0"
-
-uglify-to-browserify@~1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
+ commander "~2.17.1"
+ source-map "~0.6.1"
ultron@1.0.x:
version "1.0.2"
@@ -6874,8 +6825,8 @@ ultron@~1.1.0:
resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c"
unbzip2-stream@^1.0.9:
- version "1.2.5"
- resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.2.5.tgz#73a033a567bbbde59654b193c44d48a7e4f43c47"
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.3.0.tgz#745ad5745bc4d8f1ac2eb6fc707cfa51d52ab215"
dependencies:
buffer "^3.0.1"
through "^2.3.6"
@@ -6969,7 +6920,7 @@ utils-merge@1.0.1:
uuid@3.0.1:
version "3.0.1"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1"
+ resolved "http://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1"
uuid@^3.3.2:
version "3.3.2"
@@ -7018,18 +6969,26 @@ webidl-conversions@^4.0.2:
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad"
whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.4.tgz#63fb016b7435b795d9025632c086a5209dbd2621"
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0"
dependencies:
- iconv-lite "0.4.23"
+ iconv-lite "0.4.24"
-whatwg-fetch@>=0.10.0, whatwg-fetch@^2.0.3:
+whatwg-fetch@2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84"
+
+whatwg-fetch@>=0.10.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb"
+
+whatwg-fetch@^2.0.3:
version "2.0.4"
- resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f"
+ resolved "http://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f"
whatwg-mimetype@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.1.0.tgz#f0f21d76cbba72362eb609dbed2a30cd17fcc7d4"
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.2.0.tgz#a3d58ef10b76009b042d03e25591ece89b88d171"
whatwg-url@^6.4.1:
version "6.5.0"
@@ -7063,14 +7022,6 @@ wide-align@^1.1.0:
dependencies:
string-width "^1.0.2 || 2"
-window-size@0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
-
-wordwrap@0.0.2:
- version "0.0.2"
- resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
-
wordwrap@^1.0.0, wordwrap@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
@@ -7081,7 +7032,7 @@ wordwrap@~0.0.2:
wrap-ansi@^2.0.0:
version "2.1.0"
- resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
+ resolved "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
dependencies:
string-width "^1.0.1"
strip-ansi "^3.0.1"
@@ -7205,7 +7156,7 @@ yargs-parser@^9.0.2:
yargs@^11.0.0:
version "11.1.0"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77"
+ resolved "http://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77"
dependencies:
cliui "^4.0.0"
decamelize "^1.1.1"
@@ -7256,15 +7207,6 @@ yargs@^9.0.0:
y18n "^3.2.1"
yargs-parser "^7.0.0"
-yargs@~3.10.0:
- version "3.10.0"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"
- dependencies:
- camelcase "^1.0.2"
- cliui "^2.1.0"
- decamelize "^1.0.0"
- window-size "0.1.0"
-
yauzl@^2.4.2:
version "2.10.0"
resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"