diff --git a/app.json b/app.json index 8540784..f83d1b5 100644 --- a/app.json +++ b/app.json @@ -7,7 +7,7 @@ "platforms": [ "ios" ], - "version": "0.2.2", + "version": "0.2.3", "orientation": "portrait", "icon": "./src/images/icon-abacus.png", "splash": { @@ -20,7 +20,7 @@ "url": "https://u.expo.dev/292ed6dc-804c-4444-95f5-fa5d76d9913b" }, "ios": { - "buildNumber": "0.2.2", + "buildNumber": "0.2.3", "bundleIdentifier": "abacus.ios.app", "infoPlist": { "NSFaceIDUsageDescription": "Abacus use Authentication with TouchId or FaceID" diff --git a/package-lock.json b/package-lock.json index 244e2ba..598ff79 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "abacus", - "version": "0.2.2", + "version": "0.2.3", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "abacus", - "version": "0.2.2", + "version": "0.2.3", "dependencies": { "@expo/vector-icons": "^13.0.0", "@react-native-async-storage/async-storage": "~1.17.3", @@ -26,7 +26,8 @@ "expo-application": "~4.2.2", "expo-asset": "~8.6.1", "expo-auth-session": "~3.7.1", - "expo-dev-client": "~1.1.1", + "expo-blur": "~11.2.0", + "expo-dev-client": "~1.2.1", "expo-font": "~10.2.0", "expo-haptics": "~11.3.0", "expo-linear-gradient": "~11.4.0", @@ -35,7 +36,7 @@ "expo-secure-store": "~11.3.0", "expo-splash-screen": "~0.16.1", "expo-status-bar": "~1.4.0", - "expo-updates": "~0.14.3", + "expo-updates": "~0.14.4", "expo-web-browser": "~11.0.0", "globally": "^0.0.0", "lodash": "^4.17.21", @@ -2540,9 +2541,9 @@ } }, "node_modules/@expo/config-plugins": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-5.0.0.tgz", - "integrity": "sha512-Bgjgv64f/XqpXXKPAoGhc5dbmuJB8eOBkhV6FMI/RMP06HfL7EQvXgcBBoJThLAZVyd29XikFgaCvABt/NavxQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-5.0.1.tgz", + "integrity": "sha512-1OfnsOrfeSkB0VZfT01UjQ5Uq6p+yYbq8yNkj0e99K/6NLHpyvIxj+5tZIV0nQXgkOcqBIABL2uA7lwB8CkaBQ==", "dependencies": { "@expo/config-types": "^46.0.0", "@expo/json-file": "8.2.36", @@ -13797,6 +13798,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/expo-blur": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/expo-blur/-/expo-blur-11.2.0.tgz", + "integrity": "sha512-bj16aFGqsp7amJZiLvZt2nuwpKVJNCRcf/1c6NaCNrXCnXt/J8MloachNV0VoiiNKfKDV6EJTn+Jwo1sctchCA==", + "peerDependencies": { + "expo": "*" + } + }, "node_modules/expo-constants": { "version": "13.2.3", "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-13.2.3.tgz", @@ -13818,14 +13827,14 @@ } }, "node_modules/expo-dev-client": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/expo-dev-client/-/expo-dev-client-1.1.1.tgz", - "integrity": "sha512-62/QX+tfdGfth4XKtE0zYUHPlW1sEWbY+aFLk0Wt3xZF0Y2tb1I6gAU68X3nSKNueZDPOAgjfG2uyyyOEgq9mw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/expo-dev-client/-/expo-dev-client-1.2.1.tgz", + "integrity": "sha512-LKFfReJbUDF3r3cSjt4PLmykKsfMonT1kdCc1Cepz82/btMzL/RASnRYjk7eGd+fcq06lethEQ+w2MLo/70hDQ==", "dependencies": { "@expo/config-plugins": "~5.0.0", - "expo-dev-launcher": "1.1.1", - "expo-dev-menu": "1.1.1", - "expo-dev-menu-interface": "0.7.1", + "expo-dev-launcher": "1.2.1", + "expo-dev-menu": "1.2.1", + "expo-dev-menu-interface": "0.7.2", "expo-manifests": "~0.3.0", "expo-updates-interface": "~0.7.0" }, @@ -13834,12 +13843,12 @@ } }, "node_modules/expo-dev-launcher": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/expo-dev-launcher/-/expo-dev-launcher-1.1.1.tgz", - "integrity": "sha512-bZyhcVKI3r+d46wx3CfF5mG3fn01/mpUeDEcqfAOp9lEV0/NijbBiA+WzdHyK+mGf8z3igI7g7BuOyCYGLo9nw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/expo-dev-launcher/-/expo-dev-launcher-1.2.1.tgz", + "integrity": "sha512-q1BBnC69mTlbpHpiaezoHJ5rQgkvdvl6NH9rNSrg0tUfNRMNLDhjHwQWSpDGGIww7rVJ354ysjQp8E35OKOEJw==", "dependencies": { "@expo/config-plugins": "~5.0.0", - "expo-dev-menu": "1.1.1", + "expo-dev-menu": "1.2.1", "resolve-from": "^5.0.0", "semver": "^7.3.5" }, @@ -13862,12 +13871,12 @@ } }, "node_modules/expo-dev-menu": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/expo-dev-menu/-/expo-dev-menu-1.1.1.tgz", - "integrity": "sha512-13YOkWmhvQVHuKRJsPIpdo2yWxr+mPneENu5VHsBvAL9WKVh+4KwAMJ35YM7LAoV0VCxxZmcehIQ30koC54DZg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/expo-dev-menu/-/expo-dev-menu-1.2.1.tgz", + "integrity": "sha512-QurTAJitgIIXQKsZCEW+aY4y3RZFFR0ygP17p1odeoiCwsxKnoIkksKGOL46sdcLzONiVGZBu6z58Mg2JymfIQ==", "dependencies": { "@expo/config-plugins": "~5.0.0", - "expo-dev-menu-interface": "0.7.1", + "expo-dev-menu-interface": "0.7.2", "semver": "^7.3.5" }, "peerDependencies": { @@ -13875,9 +13884,9 @@ } }, "node_modules/expo-dev-menu-interface": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/expo-dev-menu-interface/-/expo-dev-menu-interface-0.7.1.tgz", - "integrity": "sha512-EeG6ymydrr/DWy83wQY4uSToVAVLYeOIXc8UH00cpWqYTQRUK7BAuloEItW9/nOrRXJDU6nalSOje5n8kC/BgA==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/expo-dev-menu-interface/-/expo-dev-menu-interface-0.7.2.tgz", + "integrity": "sha512-Ym0IFsgBj9bdInjRcxv6xfczdTCKfPKUAsLZ1sD5twpOs7oBViMnTC0+KTGkkYHG4EapWbu9yApPmbV3N10Zcg==", "peerDependencies": { "expo": "*" } @@ -14236,14 +14245,14 @@ "integrity": "sha512-nY6GuvoS/U5XdhfBNmvXGRoGzIXywXpSZs2wdiP+FbS79P9UWyEqzgARrBTF+6pQxUVMs6/vdffxRpwhjwYPug==" }, "node_modules/expo-updates": { - "version": "0.14.3", - "resolved": "https://registry.npmjs.org/expo-updates/-/expo-updates-0.14.3.tgz", - "integrity": "sha512-WmtwHv3xiqlHDVseTANjj0L0PbMd5v+rcud0I5E5Vd1ou14ADgfCrr9c3qheDyj3TKqpA/9+JY9Ls3iq8G1SjQ==", + "version": "0.14.4", + "resolved": "https://registry.npmjs.org/expo-updates/-/expo-updates-0.14.4.tgz", + "integrity": "sha512-+TbhUmsbjkOMHR/fhZEtcIf7xa8d/UbcvicIAr6jD9FfluBoRatB2sXiswBEohQeQov4P4XlfBKyNE5QTpu0Xw==", "dependencies": { "@expo/code-signing-certificates": "0.0.2", - "@expo/config": "~7.0.0", - "@expo/config-plugins": "~5.0.0", - "@expo/metro-config": "~0.3.18", + "@expo/config": "~7.0.1", + "@expo/config-plugins": "~5.0.1", + "@expo/metro-config": "~0.3.19", "arg": "4.1.0", "expo-eas-client": "~0.3.0", "expo-manifests": "~0.3.0", @@ -14268,6 +14277,62 @@ "expo": "*" } }, + "node_modules/expo-updates/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/expo-updates/node_modules/@expo/config": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-7.0.1.tgz", + "integrity": "sha512-4lu0wr45XXJ2MXiLAm2+fmOyy/jjqF3NuDm92fO6nuulRzEEvTP4w3vsibJ690rT81ohtvhpruKhkRs0wSjKWA==", + "dependencies": { + "@babel/code-frame": "~7.10.4", + "@expo/config-plugins": "~5.0.1", + "@expo/config-types": "^46.0.1", + "@expo/json-file": "8.2.36", + "getenv": "^1.0.0", + "glob": "7.1.6", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0", + "semver": "7.3.2", + "slugify": "^1.3.4", + "sucrase": "^3.20.0" + } + }, + "node_modules/expo-updates/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/expo-updates/node_modules/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/expo-web-browser": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/expo-web-browser/-/expo-web-browser-11.0.0.tgz", @@ -36325,9 +36390,9 @@ } }, "@expo/config-plugins": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-5.0.0.tgz", - "integrity": "sha512-Bgjgv64f/XqpXXKPAoGhc5dbmuJB8eOBkhV6FMI/RMP06HfL7EQvXgcBBoJThLAZVyd29XikFgaCvABt/NavxQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-5.0.1.tgz", + "integrity": "sha512-1OfnsOrfeSkB0VZfT01UjQ5Uq6p+yYbq8yNkj0e99K/6NLHpyvIxj+5tZIV0nQXgkOcqBIABL2uA7lwB8CkaBQ==", "requires": { "@expo/config-types": "^46.0.0", "@expo/json-file": "8.2.36", @@ -44956,6 +45021,12 @@ } } }, + "expo-blur": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/expo-blur/-/expo-blur-11.2.0.tgz", + "integrity": "sha512-bj16aFGqsp7amJZiLvZt2nuwpKVJNCRcf/1c6NaCNrXCnXt/J8MloachNV0VoiiNKfKDV6EJTn+Jwo1sctchCA==", + "requires": {} + }, "expo-constants": { "version": "13.2.3", "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-13.2.3.tgz", @@ -44972,25 +45043,25 @@ "requires": {} }, "expo-dev-client": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/expo-dev-client/-/expo-dev-client-1.1.1.tgz", - "integrity": "sha512-62/QX+tfdGfth4XKtE0zYUHPlW1sEWbY+aFLk0Wt3xZF0Y2tb1I6gAU68X3nSKNueZDPOAgjfG2uyyyOEgq9mw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/expo-dev-client/-/expo-dev-client-1.2.1.tgz", + "integrity": "sha512-LKFfReJbUDF3r3cSjt4PLmykKsfMonT1kdCc1Cepz82/btMzL/RASnRYjk7eGd+fcq06lethEQ+w2MLo/70hDQ==", "requires": { "@expo/config-plugins": "~5.0.0", - "expo-dev-launcher": "1.1.1", - "expo-dev-menu": "1.1.1", - "expo-dev-menu-interface": "0.7.1", + "expo-dev-launcher": "1.2.1", + "expo-dev-menu": "1.2.1", + "expo-dev-menu-interface": "0.7.2", "expo-manifests": "~0.3.0", "expo-updates-interface": "~0.7.0" } }, "expo-dev-launcher": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/expo-dev-launcher/-/expo-dev-launcher-1.1.1.tgz", - "integrity": "sha512-bZyhcVKI3r+d46wx3CfF5mG3fn01/mpUeDEcqfAOp9lEV0/NijbBiA+WzdHyK+mGf8z3igI7g7BuOyCYGLo9nw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/expo-dev-launcher/-/expo-dev-launcher-1.2.1.tgz", + "integrity": "sha512-q1BBnC69mTlbpHpiaezoHJ5rQgkvdvl6NH9rNSrg0tUfNRMNLDhjHwQWSpDGGIww7rVJ354ysjQp8E35OKOEJw==", "requires": { "@expo/config-plugins": "~5.0.0", - "expo-dev-menu": "1.1.1", + "expo-dev-menu": "1.2.1", "resolve-from": "^5.0.0", "semver": "^7.3.5" }, @@ -45006,12 +45077,12 @@ } }, "expo-dev-menu": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/expo-dev-menu/-/expo-dev-menu-1.1.1.tgz", - "integrity": "sha512-13YOkWmhvQVHuKRJsPIpdo2yWxr+mPneENu5VHsBvAL9WKVh+4KwAMJ35YM7LAoV0VCxxZmcehIQ30koC54DZg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/expo-dev-menu/-/expo-dev-menu-1.2.1.tgz", + "integrity": "sha512-QurTAJitgIIXQKsZCEW+aY4y3RZFFR0ygP17p1odeoiCwsxKnoIkksKGOL46sdcLzONiVGZBu6z58Mg2JymfIQ==", "requires": { "@expo/config-plugins": "~5.0.0", - "expo-dev-menu-interface": "0.7.1", + "expo-dev-menu-interface": "0.7.2", "semver": "^7.3.5" }, "dependencies": { @@ -45026,9 +45097,9 @@ } }, "expo-dev-menu-interface": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/expo-dev-menu-interface/-/expo-dev-menu-interface-0.7.1.tgz", - "integrity": "sha512-EeG6ymydrr/DWy83wQY4uSToVAVLYeOIXc8UH00cpWqYTQRUK7BAuloEItW9/nOrRXJDU6nalSOje5n8kC/BgA==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/expo-dev-menu-interface/-/expo-dev-menu-interface-0.7.2.tgz", + "integrity": "sha512-Ym0IFsgBj9bdInjRcxv6xfczdTCKfPKUAsLZ1sD5twpOs7oBViMnTC0+KTGkkYHG4EapWbu9yApPmbV3N10Zcg==", "requires": {} }, "expo-eas-client": { @@ -45285,14 +45356,14 @@ "integrity": "sha512-nY6GuvoS/U5XdhfBNmvXGRoGzIXywXpSZs2wdiP+FbS79P9UWyEqzgARrBTF+6pQxUVMs6/vdffxRpwhjwYPug==" }, "expo-updates": { - "version": "0.14.3", - "resolved": "https://registry.npmjs.org/expo-updates/-/expo-updates-0.14.3.tgz", - "integrity": "sha512-WmtwHv3xiqlHDVseTANjj0L0PbMd5v+rcud0I5E5Vd1ou14ADgfCrr9c3qheDyj3TKqpA/9+JY9Ls3iq8G1SjQ==", + "version": "0.14.4", + "resolved": "https://registry.npmjs.org/expo-updates/-/expo-updates-0.14.4.tgz", + "integrity": "sha512-+TbhUmsbjkOMHR/fhZEtcIf7xa8d/UbcvicIAr6jD9FfluBoRatB2sXiswBEohQeQov4P4XlfBKyNE5QTpu0Xw==", "requires": { "@expo/code-signing-certificates": "0.0.2", - "@expo/config": "~7.0.0", - "@expo/config-plugins": "~5.0.0", - "@expo/metro-config": "~0.3.18", + "@expo/config": "~7.0.1", + "@expo/config-plugins": "~5.0.1", + "@expo/metro-config": "~0.3.19", "arg": "4.1.0", "expo-eas-client": "~0.3.0", "expo-manifests": "~0.3.0", @@ -45301,6 +45372,52 @@ "fbemitter": "^3.0.0", "resolve-from": "^5.0.0", "uuid": "^3.4.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@expo/config": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-7.0.1.tgz", + "integrity": "sha512-4lu0wr45XXJ2MXiLAm2+fmOyy/jjqF3NuDm92fO6nuulRzEEvTP4w3vsibJ690rT81ohtvhpruKhkRs0wSjKWA==", + "requires": { + "@babel/code-frame": "~7.10.4", + "@expo/config-plugins": "~5.0.1", + "@expo/config-types": "^46.0.1", + "@expo/json-file": "8.2.36", + "getenv": "^1.0.0", + "glob": "7.1.6", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0", + "semver": "7.3.2", + "slugify": "^1.3.4", + "sucrase": "^3.20.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==" + } } }, "expo-updates-interface": { diff --git a/package.json b/package.json index 09b5159..721f0c9 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "abacus", "homepage": "https://github.com/victorbalssa/abacus", - "version": "0.2.2", + "version": "0.2.3", "private": true, "jest": { "preset": "jest-expo", @@ -40,7 +40,7 @@ "expo-secure-store": "~11.3.0", "expo-splash-screen": "~0.16.1", "expo-status-bar": "~1.4.0", - "expo-updates": "~0.14.3", + "expo-updates": "~0.14.4", "expo-web-browser": "~11.0.0", "globally": "^0.0.0", "lodash": "^4.17.21", @@ -67,8 +67,9 @@ "slash": "^3.0.0", "victory-native": "^36.3.1", "expo-local-authentication": "~12.3.0", - "expo-dev-client": "~1.1.1", - "expo-application": "~4.2.2" + "expo-dev-client": "~1.2.1", + "expo-application": "~4.2.2", + "expo-blur": "~11.2.0" }, "devDependencies": { "@babel/core": "^7.18.6", diff --git a/src/components/Chart.tsx b/src/components/Chart.tsx index 79d919e..84f9a5d 100644 --- a/src/components/Chart.tsx +++ b/src/components/Chart.tsx @@ -1,52 +1,37 @@ import React from 'react'; -import { RefreshControl } from 'react-native'; import { - Box, ScrollView, } from 'native-base'; +import { View } from 'react-native'; import AssetsHistoryChart from './Charts/AssetsHistoryChart'; import RangeTitle from './UI/RangeTitle'; -import colors from '../constants/colors'; const Chart = ({ - accounts, loading, + accounts, fetchData, filterData, start, end, - enableScroll, - disableScroll, - scrollEnabled, + backendURL, }) => ( <> - - - )} - scrollEnabled={scrollEnabled} - > - - - + + + + ); diff --git a/src/components/Charts/AssetsHistoryChart.tsx b/src/components/Charts/AssetsHistoryChart.tsx index 822c03f..439cebf 100644 --- a/src/components/Charts/AssetsHistoryChart.tsx +++ b/src/components/Charts/AssetsHistoryChart.tsx @@ -1,11 +1,11 @@ -import React, { useState } from 'react'; +import React, { useMemo, useState } from 'react'; import { Stack, Text, VStack, Checkbox, HStack, - Pressable, + Pressable, ScrollView, IconButton, Skeleton, View, } from 'native-base'; import { VictoryAxis, @@ -15,6 +15,9 @@ import { } from 'victory-native'; import { maxBy, minBy } from 'lodash'; import { Line, Circle } from 'react-native-svg'; +import { AntDesign } from '@expo/vector-icons'; +import * as Haptics from 'expo-haptics'; +import * as Linking from 'expo-linking'; import colors from '../../constants/colors'; const CursorPointer = ({ @@ -32,14 +35,50 @@ const Cursor = ({ x, y, minY, maxY, activePoints, }) => ( <> + + + {activePoints.map(({ + y: yPoint, childName, style, + }) => { + const { + data: { + stroke, + }, + } = style; + + return ( + + {` ${childName} ${(yPoint).toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '$&,') || ''}`} + + ); + })} + + + + {`${activePoints.length !== 0 ? new Date(activePoints[0]?.x).toLocaleString('default', { + month: 'short', + day: 'numeric', + year: 'numeric', + }) : ' '}`} + + + {activePoints.map(({ y: yPoint, childName, style, @@ -49,10 +88,10 @@ const Cursor = ({ stroke, }, } = style; - const yMinDisplay = maxY <= 0 ? 0 : 2; - const yMaxDisplay = minY !== 0 ? 218 : 220; + const yMinDisplay = maxY <= 0 ? 10 : 12; + const yMaxDisplay = minY !== 0 ? 294 : 296; const zeroPos = (-((minY / (maxY - minY)) - 1) * (yMaxDisplay - yMinDisplay)) + yMinDisplay; - const yCursorPoint = (-((yPoint / (maxY - minY)) - 1) * (yMaxDisplay - yMinDisplay)) + yMinDisplay - (zeroPos - yMaxDisplay); + const yCursorPoint = ((-((yPoint / (maxY - minY)) - 1) * (yMaxDisplay - yMinDisplay)) + yMinDisplay - (zeroPos - yMaxDisplay)) || 0; return ( @@ -62,15 +101,14 @@ const Cursor = ({ ); const AssetsHistoryChart = ({ + loading, + fetchData, start, end, accounts, filterData, - disableScroll, - enableScroll, + backendURL, }) => { - const [points, setPoints] = useState([]); - const getTickValues = () => { const dateArray = []; const currentDate = new Date(start); @@ -87,11 +125,13 @@ const AssetsHistoryChart = ({ return ( - - - {accounts.map((chart, index) => { - let value = ''; - if (points.filter((v) => v.childName === chart.label).length) { - value = points.filter((v) => v.childName === chart.label)[0].y; - } - - return ( - filterData({ index })} - isDisabled={!chart.skip && accounts.filter((v) => !v.skip).length < 2} - _disabled={{ - style: { - opacity: 0.4, - }, - }} - > - - !v.skip).length < 2} - isChecked={!chart.skip} - value={index} - onChange={() => filterData({ index })} - /> - - {` ${chart.label} ${value ? (chart.currency_symbol + value) : ''}`} - - - - ); - })} - - {`${points.length !== 0 ? new Date(points[0]?.x).toLocaleString('default', { - month: 'short', - day: 'numeric', - year: 'numeric', - }) : ' '}`} - - - + + {accounts.map((chart, index) => ( + filterData({ index })} + isDisabled={!chart.skip && accounts.filter((v) => !v.skip).length < 2} + _disabled={{ + style: { + opacity: 0.4, + }, + }} + > + + !v.skip).length < 2} + isChecked={!chart.skip} + value={index} + onChange={() => filterData({ index })} + /> + + {chart.label} + + + + ))} + + Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light)} + /> + + {loading && ( + + + + + + )} + {!loading && ( disableScroll()} - onTouchEnd={() => { - setPoints([]); - enableScroll(); - }} labels={({ datum }) => datum.childName} labelComponent={( !v.skip), (c: { maxY: number }) => c.maxY)?.maxY} - minY={minBy(accounts.filter((v) => !v.skip), (c: { minY: number }) => c.minY)?.minY} + maxY={maxBy(accounts.filter((v) => !v.skip), (c: { maxY: number }) => c.maxY)?.maxY || 0} + minY={minBy(accounts.filter((v) => !v.skip), (c: { minY: number }) => c.minY)?.minY || 0} /> )} /> )} > (`${x !== 0 ? (Math.round(x) / 1000) : '0'}k`)} /> - {accounts - .filter((v) => !v.skip) - .map((chart) => ( - - ))} + {accounts.filter((v) => !v.skip).map((chart) => chart.entries.length > 0 && ( + + ))} (new Date(x).toLocaleString('default', { month: 'short' }))} style={{ tickLabels: { angle: getTickValues().length > 5 ? -60 : 0 } }} /> + )} + {accounts.length > 4 && ( + + + This chart works best with up to 4 accounts, + {' '} + Linking.openURL(`${backendURL}/preferences`)} underline>click here + {' '} + to choose your preferred accounts in the Firefly III preferences: + {' '} + Home screen + . + + + )} ); }; diff --git a/src/components/Oauth.tsx b/src/components/Oauth.tsx index 22f6e15..e93a54e 100644 --- a/src/components/Oauth.tsx +++ b/src/components/Oauth.tsx @@ -3,11 +3,13 @@ import { Input, Box, FormControl, - Button, + Button, HStack, Text, Pressable, } from 'native-base'; import { KeyboardAvoidingView } from 'react-native'; import * as Haptics from 'expo-haptics'; +import { Ionicons } from '@expo/vector-icons'; +import * as Linking from 'expo-linking'; import { isValidHttpUrl } from '../lib/common'; const Oauth = ({ @@ -63,12 +65,23 @@ const Oauth = ({ All secrets are kept in iOS secure storage. - - Redirect URI must be equal to: `abacusiosapp://redirect` - + + + 🔥 set redirect URI to: + + + + abacusiosapp://redirect + + + + Linking.openURL('https://github.com/victorbalssa/abacus/blob/master/.github/HELP.md')} underline>Need Help? + + {faceId && (