From 8a7eace019aa09e65de46b1bc9ecdea253a1ba3e Mon Sep 17 00:00:00 2001 From: Nikita Elfimov Date: Tue, 4 Jun 2024 13:48:01 +0300 Subject: [PATCH] feat: price formatter --- .../app/android/app/google-services.json | 226 ++++++++++++++++++ .../android/app/src/main/AndroidManifest.xml | 5 +- rn-demo-app/app/android/build.gradle | 2 + .../fragments/product-info/package.json | 1 + .../src/product-info.fragment.tsx | 14 +- .../shared/utils/src/formatters/index.ts | 1 + .../utils/src/formatters/price.formatter.ts | 23 ++ rn-demo-app/shared/utils/src/index.ts | 1 + yarn.lock | 3 +- 9 files changed, 269 insertions(+), 7 deletions(-) create mode 100644 rn-demo-app/app/android/app/google-services.json create mode 100644 rn-demo-app/shared/utils/src/formatters/index.ts create mode 100644 rn-demo-app/shared/utils/src/formatters/price.formatter.ts diff --git a/rn-demo-app/app/android/app/google-services.json b/rn-demo-app/app/android/app/google-services.json new file mode 100644 index 000000000..b59ca5473 --- /dev/null +++ b/rn-demo-app/app/android/app/google-services.json @@ -0,0 +1,226 @@ +{ + "project_info": { + "project_number": "605730184710", + "project_id": "rees46-com", + "storage_bucket": "rees46-com.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:605730184710:android:6c640baac4dda9e05b6d87", + "android_client_info": { + "package_name": "com.demoapp" + } + }, + "oauth_client": [ + { + "client_id": "605730184710-0t1ptvsobvg8pu3v4in9vb0u2lm855kb.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyAMI5DiiCqeZ2JV2m6r0Be520N39WKh_TA" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "605730184710-0t1ptvsobvg8pu3v4in9vb0u2lm855kb.apps.googleusercontent.com", + "client_type": 3 + }, + { + "client_id": "605730184710-33itje7rfcbadqg1j9bh98iip5h02nju.apps.googleusercontent.com", + "client_type": 2, + "ios_info": { + "bundle_id": "Avsi.TestPushSDK1" + } + } + ] + } + } + }, + { + "client_info": { + "mobilesdk_app_id": "1:605730184710:android:7b6eb053665460b55b6d87", + "android_client_info": { + "package_name": "com.example.rees46_java_app" + } + }, + "oauth_client": [ + { + "client_id": "605730184710-0t1ptvsobvg8pu3v4in9vb0u2lm855kb.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyAMI5DiiCqeZ2JV2m6r0Be520N39WKh_TA" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "605730184710-0t1ptvsobvg8pu3v4in9vb0u2lm855kb.apps.googleusercontent.com", + "client_type": 3 + }, + { + "client_id": "605730184710-33itje7rfcbadqg1j9bh98iip5h02nju.apps.googleusercontent.com", + "client_type": 2, + "ios_info": { + "bundle_id": "Avsi.TestPushSDK1" + } + } + ] + } + } + }, + { + "client_info": { + "mobilesdk_app_id": "1:605730184710:android:198526dca19b16ec5b6d87", + "android_client_info": { + "package_name": "com.personaclick.sample" + } + }, + "oauth_client": [ + { + "client_id": "605730184710-0t1ptvsobvg8pu3v4in9vb0u2lm855kb.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyAMI5DiiCqeZ2JV2m6r0Be520N39WKh_TA" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "605730184710-0t1ptvsobvg8pu3v4in9vb0u2lm855kb.apps.googleusercontent.com", + "client_type": 3 + }, + { + "client_id": "605730184710-33itje7rfcbadqg1j9bh98iip5h02nju.apps.googleusercontent.com", + "client_type": 2, + "ios_info": { + "bundle_id": "Avsi.TestPushSDK1" + } + } + ] + } + } + }, + { + "client_info": { + "mobilesdk_app_id": "1:605730184710:android:e3fd667d60c9bdb75b6d87", + "android_client_info": { + "package_name": "com.personalizatio.sample" + } + }, + "oauth_client": [ + { + "client_id": "605730184710-0t1ptvsobvg8pu3v4in9vb0u2lm855kb.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyAMI5DiiCqeZ2JV2m6r0Be520N39WKh_TA" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "605730184710-0t1ptvsobvg8pu3v4in9vb0u2lm855kb.apps.googleusercontent.com", + "client_type": 3 + }, + { + "client_id": "605730184710-33itje7rfcbadqg1j9bh98iip5h02nju.apps.googleusercontent.com", + "client_type": 2, + "ios_info": { + "bundle_id": "Avsi.TestPushSDK1" + } + } + ] + } + } + }, + { + "client_info": { + "mobilesdk_app_id": "1:605730184710:android:75abe9965c01c1c45b6d87", + "android_client_info": { + "package_name": "com.rees46.sample" + } + }, + "oauth_client": [ + { + "client_id": "605730184710-0t1ptvsobvg8pu3v4in9vb0u2lm855kb.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyAMI5DiiCqeZ2JV2m6r0Be520N39WKh_TA" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "605730184710-0t1ptvsobvg8pu3v4in9vb0u2lm855kb.apps.googleusercontent.com", + "client_type": 3 + }, + { + "client_id": "605730184710-33itje7rfcbadqg1j9bh98iip5h02nju.apps.googleusercontent.com", + "client_type": 2, + "ios_info": { + "bundle_id": "Avsi.TestPushSDK1" + } + } + ] + } + } + }, + { + "client_info": { + "mobilesdk_app_id": "1:605730184710:android:9f9c2bc678183a005b6d87", + "android_client_info": { + "package_name": "com.sdkdev" + } + }, + "oauth_client": [ + { + "client_id": "605730184710-0t1ptvsobvg8pu3v4in9vb0u2lm855kb.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyAMI5DiiCqeZ2JV2m6r0Be520N39WKh_TA" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "605730184710-0t1ptvsobvg8pu3v4in9vb0u2lm855kb.apps.googleusercontent.com", + "client_type": 3 + }, + { + "client_id": "605730184710-33itje7rfcbadqg1j9bh98iip5h02nju.apps.googleusercontent.com", + "client_type": 2, + "ios_info": { + "bundle_id": "Avsi.TestPushSDK1" + } + } + ] + } + } + } + ], + "configuration_version": "1" +} diff --git a/rn-demo-app/app/android/app/src/main/AndroidManifest.xml b/rn-demo-app/app/android/app/src/main/AndroidManifest.xml index 1d924d951..a04506296 100644 --- a/rn-demo-app/app/android/app/src/main/AndroidManifest.xml +++ b/rn-demo-app/app/android/app/src/main/AndroidManifest.xml @@ -1,7 +1,10 @@ - + + { return null } + const price = priceFormatter(product.price) + const oldPrice = priceFormatter(product?.oldprice) + return ( <> @@ -93,11 +97,11 @@ export const ProductInfo = memo(({ id }: ProductInfoProps) => { fontSize='smallTitle' fontColor='gray' lineTrough - >{`${product?.oldprice} ${product!.currency}`} + >{`${oldPrice} ${product!.currency}`} - {`${product!.price} ${product!.currency}`} + {`${price} ${product!.currency}`} diff --git a/rn-demo-app/shared/utils/src/formatters/index.ts b/rn-demo-app/shared/utils/src/formatters/index.ts new file mode 100644 index 000000000..47982ceb1 --- /dev/null +++ b/rn-demo-app/shared/utils/src/formatters/index.ts @@ -0,0 +1 @@ +export * from './price.formatter' diff --git a/rn-demo-app/shared/utils/src/formatters/price.formatter.ts b/rn-demo-app/shared/utils/src/formatters/price.formatter.ts new file mode 100644 index 000000000..e8d11b736 --- /dev/null +++ b/rn-demo-app/shared/utils/src/formatters/price.formatter.ts @@ -0,0 +1,23 @@ +export const priceFormatter = (value: string | undefined): string => { + if (!value) return '' + + let result = '' + + if (value.includes('.') + ) { + const priceSplit = value.split('.') + + const majors = priceSplit[0] + result += majors + + const minors = priceSplit[1] + + if (minors.length > 0) { + if (minors !== '0' && minors !== '00') { + result += minors.length > 1 ? `.${minors.slice(0, 2)}` : `.${minors}0` + } + } + } + + return result +} diff --git a/rn-demo-app/shared/utils/src/index.ts b/rn-demo-app/shared/utils/src/index.ts index fc78d3512..3d3027e5a 100644 --- a/rn-demo-app/shared/utils/src/index.ts +++ b/rn-demo-app/shared/utils/src/index.ts @@ -1 +1,2 @@ export * from './hooks' +export * from './formatters' diff --git a/yarn.lock b/yarn.lock index 24a984260..7a2e2b8bb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2186,6 +2186,7 @@ __metadata: "@globals/constants": "workspace:0.0.1" "@globals/types": "workspace:0.0.1" "@navigations/constants": "workspace:0.0.1" + "@shared/utils": "workspace:*" "@stores/rn-sdk": "workspace:0.0.1" "@types/react": "npm:^18.2.6" "@ui/button": "workspace:0.0.1" @@ -3813,7 +3814,7 @@ __metadata: languageName: unknown linkType: soft -"@shared/utils@workspace:0.0.1, @shared/utils@workspace:rn-demo-app/shared/utils": +"@shared/utils@workspace:*, @shared/utils@workspace:0.0.1, @shared/utils@workspace:rn-demo-app/shared/utils": version: 0.0.0-use.local resolution: "@shared/utils@workspace:rn-demo-app/shared/utils" dependencies: