diff --git a/code/android/app/build.gradle b/code/android/app/build.gradle index 7aede75..d20e8b1 100644 --- a/code/android/app/build.gradle +++ b/code/android/app/build.gradle @@ -86,8 +86,8 @@ android { applicationId 'com.pelixpng.PastVuApp' minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 4 - versionName "1.3.0" + versionCode 5 + versionName "1.3.1" buildConfigField("boolean", "REACT_NATIVE_UNSTABLE_USE_RUNTIME_SCHEDULER_ALWAYS", (findProperty("reactNative.unstable_useRuntimeSchedulerAlways") ?: true).toString()) } diff --git a/code/android/app/src/main/AndroidManifest.xml b/code/android/app/src/main/AndroidManifest.xml index d4447e9..3fff0e3 100644 --- a/code/android/app/src/main/AndroidManifest.xml +++ b/code/android/app/src/main/AndroidManifest.xml @@ -16,7 +16,7 @@ - + diff --git a/code/app.json b/code/app.json index 854d985..0a51a87 100644 --- a/code/app.json +++ b/code/app.json @@ -2,7 +2,7 @@ "expo": { "name": "PastVu", "slug": "PastVuApp", - "version": "1.3.0", + "version": "1.3.1", "orientation": "portrait", "icon": "./assets/icon.png", "userInterfaceStyle": "light", @@ -28,7 +28,7 @@ "backgroundColor": "#ffffff" }, "package": "com.pelixpng.PastVuApp", - "versionCode": 4 + "versionCode": 5 }, "web": { "favicon": "./assets/favicon.png" diff --git a/code/assets/avatar.png b/code/assets/avatar.png new file mode 100644 index 0000000..48b72e3 Binary files /dev/null and b/code/assets/avatar.png differ diff --git a/code/babel.config.js b/code/babel.config.js index 2900afe..a3fdb4a 100644 --- a/code/babel.config.js +++ b/code/babel.config.js @@ -1,6 +1,7 @@ -module.exports = function(api) { - api.cache(true); - return { - presets: ['babel-preset-expo'], - }; -}; +module.exports = function (api) { + api.cache(true) + return { + presets: ['babel-preset-expo'], + plugins: ['react-native-reanimated/plugin'] + } +} diff --git a/code/ios/PastVu/Info.plist b/code/ios/PastVu/Info.plist index 6c9d392..e90dcad 100644 --- a/code/ios/PastVu/Info.plist +++ b/code/ios/PastVu/Info.plist @@ -19,7 +19,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.3.0 + 1.3.1 CFBundleSignature ???? CFBundleURLTypes diff --git a/code/package-lock.json b/code/package-lock.json index c75ba46..fe0746d 100644 --- a/code/package-lock.json +++ b/code/package-lock.json @@ -15,6 +15,7 @@ "@react-navigation/native": "^6.1.7", "@react-navigation/native-stack": "^6.9.13", "@react-navigation/stack": "^6.3.17", + "@shopify/flash-list": "1.4.3", "expo": "^49.0.8", "expo-dev-client": "~2.4.12", "expo-file-system": "~15.4.5", @@ -35,6 +36,7 @@ "react-native-mmkv": "^2.10.1", "react-native-pinchable": "^0.2.1", "react-native-pixel-perfect": "^1.0.2", + "react-native-reanimated": "~3.3.0", "react-native-render-html": "^6.3.4", "react-native-safe-area-context": "4.6.3", "react-native-screens": "~3.22.0", @@ -1496,6 +1498,20 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-object-assign": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.23.3.tgz", + "integrity": "sha512-TPJ6O7gVC2rlQH2hvQGRH273G1xdoloCj9Pc07Q7JbIZYDi+Sv5gaE2fu+r5E7qK4zyt6vj0FbZaZTRU5C3OMA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-transform-object-rest-spread": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.5.tgz", @@ -6467,6 +6483,25 @@ "join-component": "^1.1.0" } }, + "node_modules/@shopify/flash-list": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@shopify/flash-list/-/flash-list-1.4.3.tgz", + "integrity": "sha512-jtIReAbwWzYBV0dQ6Io9wBX+pD0C4qQFMrb5/fkEvX8PYDgBl5KRYvpfr9WLLj8CV2Jsn1X0mYOsB+ysWrI/8g==", + "dependencies": { + "recyclerlistview": "4.2.0", + "tslib": "2.4.0" + }, + "peerDependencies": { + "@babel/runtime": "*", + "react": "*", + "react-native": "*" + } + }, + "node_modules/@shopify/flash-list/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, "node_modules/@sideway/address": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", @@ -14716,6 +14751,32 @@ "react-native": "*" } }, + "node_modules/react-native-reanimated": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-3.3.0.tgz", + "integrity": "sha512-LzfpPZ1qXBGy5BcUHqw3pBC0qSd22qXS3t8hWSbozXNrBkzMhhOrcILE/nEg/PHpNNp1xvGOW8NwpAMF006roQ==", + "dependencies": { + "@babel/plugin-transform-object-assign": "^7.16.7", + "@babel/preset-typescript": "^7.16.7", + "convert-source-map": "^2.0.0", + "invariant": "^2.2.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0-0", + "@babel/plugin-proposal-optional-chaining": "^7.0.0-0", + "@babel/plugin-transform-arrow-functions": "^7.0.0-0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0-0", + "@babel/plugin-transform-template-literals": "^7.0.0-0", + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-reanimated/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + }, "node_modules/react-native-render-html": { "version": "6.3.4", "resolved": "https://registry.npmjs.org/react-native-render-html/-/react-native-render-html-6.3.4.tgz", @@ -14855,6 +14916,20 @@ "node": ">=0.10.0" } }, + "node_modules/recyclerlistview": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/recyclerlistview/-/recyclerlistview-4.2.0.tgz", + "integrity": "sha512-uuBCi0c+ggqHKwrzPX4Z/mJOzsBbjZEAwGGmlwpD/sD7raXixdAbdJ6BTcAmuWG50Cg4ru9p12M94Njwhr/27A==", + "dependencies": { + "lodash.debounce": "4.0.8", + "prop-types": "15.8.1", + "ts-object-utils": "0.0.5" + }, + "peerDependencies": { + "react": ">= 15.2.1", + "react-native": ">= 0.30.0" + } + }, "node_modules/regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", @@ -16094,6 +16169,11 @@ "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" }, + "node_modules/ts-object-utils": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/ts-object-utils/-/ts-object-utils-0.0.5.tgz", + "integrity": "sha512-iV0GvHqOmilbIKJsfyfJY9/dNHCs969z3so90dQWsO1eMMozvTpnB1MEaUbb3FYtZTGjv5sIy/xmslEz0Rg2TA==" + }, "node_modules/ts-toolbelt": { "version": "6.15.5", "resolved": "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-6.15.5.tgz", diff --git a/code/package.json b/code/package.json index 0530b1b..4338b5f 100644 --- a/code/package.json +++ b/code/package.json @@ -38,7 +38,9 @@ "react-native-safe-area-context": "4.6.3", "react-native-screens": "~3.22.0", "styled-components": "^6.0.3", - "expo-image": "~1.3.5" + "expo-image": "~1.3.5", + "react-native-reanimated": "~3.3.0", + "@shopify/flash-list": "1.4.3" }, "devDependencies": { "@babel/core": "^7.20.0", diff --git a/code/src/components/post/Comment.tsx b/code/src/components/post/Comment.tsx index 1ac1eb0..e99ac0f 100644 --- a/code/src/components/post/Comment.tsx +++ b/code/src/components/post/Comment.tsx @@ -4,9 +4,10 @@ import { perfectSize } from '../../utils/ScreenSize' import { DefaultTheme, useTheme } from 'styled-components' import RenderHtml from 'react-native-render-html' import { Image } from 'expo-image' +import StandardAvatar from '../../../assets/avatar.png' type CommentProps = { - uri: string | undefined + uri?: string name: string text: string width: string @@ -24,9 +25,7 @@ export const Comment: FC = ({ name, text, uri, width }) => { return ( = observer(({ route }) => { } = route.params return ( - + AlertModalService.infoAlert( 'Ошибка', diff --git a/code/src/screens/settings/AboutApp.tsx b/code/src/screens/settings/AboutApp.tsx index c68ba3f..c9ca6eb 100644 --- a/code/src/screens/settings/AboutApp.tsx +++ b/code/src/screens/settings/AboutApp.tsx @@ -7,6 +7,7 @@ import { } from '../../components/ui/UniversalComponents' import { InsideMenuProps, LinkProps } from '../../types/components' import { InsideMenuComponent } from '../../components/ui/InsideMenuComponent' +import AppIcon from '../../../assets/icon.png' const ResourcesUsed: LinkProps[] = [ { title: 'PastVu Api', url: 'https://docs.pastvu.com/dev/api' }, @@ -44,9 +45,9 @@ export const AppInfo: FC = () => { return ( - + - Версия 1.3.0 от 13 января 2024 г. + Версия 1.3.1 от 18 января 2024 г.