Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pre main qa #49

Merged
merged 105 commits into from
Oct 2, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
105 commits
Select commit Hold shift + click to select a range
c7d8908
fix: Update shared
reasje Sep 16, 2024
e78aae0
fix: Update en.json
reasje Sep 16, 2024
72a86fa
Update pre-QA with latest translations
actions-user Sep 16, 2024
d9e087b
fix: Test translations
reasje Sep 16, 2024
c0ccaf4
fix: Update translate file
reasje Sep 16, 2024
95f2184
Update pre-QA with latest translations
actions-user Sep 16, 2024
a913b79
fix: Translations reverting
reasje Sep 16, 2024
17e5c8a
fix: "in" translation
reasje Sep 16, 2024
fc6fe2c
fix: Deposit notice key update
reasje Sep 16, 2024
4465e0c
Merge pull request #33 from MXCzkEVM/rebranding_fixes
reasje Sep 16, 2024
4de2673
Update pre-QA with latest translations
actions-user Sep 16, 2024
89d3931
fix: Deposit notices key update
reasje Sep 16, 2024
1fe52c4
Merge pull request #34 from MXCzkEVM/rebranding_fixes
reasje Sep 16, 2024
6c2ba59
Update translate.yml
sheenhx Sep 16, 2024
aa56c92
feat: Update firebase config
reasje Sep 17, 2024
4f8e289
fix: Disable theme change
reasje Sep 18, 2024
1fe27ff
feat: Firebase notification test button
reasje Sep 18, 2024
a496c56
Merge pull request #35 from MXCzkEVM/rebranding_fixes
reasje Sep 18, 2024
8b0b261
fix: Export wallet title fix
reasje Sep 18, 2024
88d82d4
Merge pull request #36 from MXCzkEVM/rebranding_fixes
reasje Sep 18, 2024
0c8490b
fix: IOS Firebase
reasje Sep 19, 2024
9f912b5
Merge pull request #40 from MXCzkEVM/rebranding_fixes
reasje Sep 19, 2024
83a70d3
Update zh_CN.json
sheenhx Sep 19, 2024
c98b8c7
fix: Update shared
reasje Sep 19, 2024
b6a446a
Merge pull request #41 from MXCzkEVM/rebranding_fixes
reasje Sep 19, 2024
bccf138
fix: Update shared
reasje Sep 20, 2024
602834c
Merge pull request #42 from MXCzkEVM/rebranding_fixes
reasje Sep 20, 2024
64aba4d
feat: App links Android config
reasje Sep 23, 2024
a776a19
refactor: opendapp page rename
reasje Sep 24, 2024
429ea32
feat: Add app links package
reasje Sep 24, 2024
22057cf
fix: Correct app link url
reasje Sep 24, 2024
17af586
refactor: rename app presenter
reasje Sep 24, 2024
5d53dbf
feat: Add moonchain app links and router
reasje Sep 24, 2024
b5d55ed
imprv: Appidentifier
Sep 25, 2024
3c4f280
fix:profile name
Sep 25, 2024
953f352
fix:remove appcenter
Sep 25, 2024
bd8776d
feat: App links use case
reasje Sep 25, 2024
9709234
Create submit.yml
sheenhx Sep 25, 2024
1a502f0
Update submit.yml
sheenhx Sep 25, 2024
655df74
Update submit.yml
sheenhx Sep 25, 2024
70f80ee
Update submit.yml
sheenhx Sep 25, 2024
ea15222
Update submit.yml
sheenhx Sep 25, 2024
3e3b1db
Update submit.yml
sheenhx Sep 25, 2024
4b13746
Update submit.yml
sheenhx Sep 25, 2024
4957b18
Merge pull request #44 from MXCzkEVM/submit
sheenhx Sep 25, 2024
efa3841
Update compile.yml
sheenhx Sep 25, 2024
b75eaf1
Update pubspec.yaml
sheenhx Sep 25, 2024
bca23de
Update customer_support_presenter.dart
sheenhx Sep 25, 2024
49a3fce
Update app_version_use_case.dart
sheenhx Sep 25, 2024
76cb9b4
Merge pull request #45 from MXCzkEVM/nightly
reasje Sep 26, 2024
7d65981
fix: Update shared
reasje Sep 26, 2024
52296ac
fix: checkLatestVersion params syntax error
reasje Sep 26, 2024
2a57323
Update submit.yml
sheenhx Sep 26, 2024
6185260
fix : Update shared
reasje Sep 26, 2024
e038465
feat: Open dapp url support
reasje Sep 26, 2024
9d61ae1
Delete android/app/appcenter-post-clone.sh
sheenhx Sep 26, 2024
e587039
fix:version name
Sep 26, 2024
9864ccf
Update app_version_use_case.dart
sheenhx Sep 26, 2024
2d6dde8
fix: debug download
Sep 26, 2024
3cebffb
fix: debug download
Sep 26, 2024
8a30b8c
config: Disable Flutter default deep linking
reasje Sep 26, 2024
cb89d22
Merge pull request #46 from MXCzkEVM/app_links
reasje Sep 26, 2024
d870296
feat:new apple/google
Sep 26, 2024
1a5010c
Update submit.yml
sheenhx Sep 26, 2024
bd7816f
Update submit.yml
sheenhx Sep 26, 2024
2cefed6
Update submit.yml
sheenhx Sep 26, 2024
80280e8
Update submit.yml
sheenhx Sep 26, 2024
27885af
Update submit.yml
sheenhx Sep 26, 2024
ed36104
Update submit.yml
sheenhx Sep 26, 2024
91d89aa
Update submit.yml
sheenhx Sep 26, 2024
21e3a04
Update build.gradle
sheenhx Sep 27, 2024
9c14566
Update submit.yml
sheenhx Sep 27, 2024
d317e7d
Update submit.yml
sheenhx Sep 27, 2024
5fe9e91
Update submit.yml
sheenhx Sep 27, 2024
843e124
Update build.gradle
sheenhx Sep 27, 2024
1fca277
Update submit.yml
sheenhx Sep 27, 2024
3fdc991
Update build.gradle
sheenhx Sep 27, 2024
4a1b98e
debug: symbols to be uploaded
sheenhx Sep 27, 2024
524944b
debug: symbols to be uploaded
sheenhx Sep 27, 2024
1763e4c
debug: symbols to be uploaded
sheenhx Sep 27, 2024
5b30a85
debug: symbols to be uploaded
sheenhx Sep 27, 2024
a94561f
debug: symbols to be uploaded
sheenhx Sep 27, 2024
1700753
debug: symbols to be uploaded
sheenhx Sep 27, 2024
9c4d93c
debug: symbols to be uploaded
sheenhx Sep 27, 2024
90f5724
Update build.gradle
sheenhx Sep 27, 2024
f0a2f6a
debug: symbols to be uploaded
sheenhx Sep 27, 2024
d8e153e
debug: symbols to be uploaded
sheenhx Sep 27, 2024
62ec316
feat: debug symbols
sheenhx Sep 27, 2024
e0273e6
refactor: Update app id
reasje Sep 30, 2024
8341af9
refactor: Update BG fetch ids
reasje Sep 30, 2024
cd8f353
fix: Disable app links if no accounts
reasje Sep 30, 2024
e7b9b53
config: Add app links to IOS
reasje Sep 30, 2024
e6c8678
Merge branch 'pre_main_qa' of https://github.com/MXCzkEVM/moonchain-w…
reasje Sep 30, 2024
5d1b2ec
feat:new teamID
Oct 1, 2024
aede475
Update pubspec.yaml
sheenhx Oct 1, 2024
2f0f163
Update submit.yml
sheenhx Oct 1, 2024
af194f5
Update submit.yml
sheenhx Oct 1, 2024
ed88048
Merge pull request #48 from MXCzkEVM/pre_main_qa
sheenhx Oct 1, 2024
ff71ae4
debug: release
sheenhx Oct 1, 2024
4abba68
debug: release google play
sheenhx Oct 1, 2024
ec2ce0f
Merge pull request #47 from MXCzkEVM/google
sheenhx Oct 1, 2024
8bd2ffa
feat: only submit google apple when pushing to main
sheenhx Oct 1, 2024
9a7e60b
feat: translation readme.md
sheenhx Oct 1, 2024
9a6fe67
refactor: NFT button
reasje Oct 2, 2024
0e4152e
Merge branch 'main' into pre_main_qa
sheenhx Oct 2, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/compile.yml
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@ jobs:
artifacts: "combined-builds/android/*.apk,combined-builds/iOS/*.ipa"
token: ${{ secrets.DART_TOKEN }}
tag: ${{ steps.generate.outputs.build-number }}
name: "Nightly-v${{ steps.generate.outputs.build-number }}-iOS/Android-Visit mxc1usd.com"


- name: Upload APK to Waldo
Expand Down
127 changes: 127 additions & 0 deletions .github/workflows/submit.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
name: Submit to Google and Apple

on:
push:
branches:
- main

jobs:
build-apk:
name: Build-aab
runs-on: ubuntu-latest
steps:
- name: Checkout code with submodules
uses: actions/checkout@v4
with:
submodules: 'recursive'


- name: Set Version Code
run: |
echo "Received Number: ${{ github.run_number }}"
echo "VERSION_CODE=${{ github.run_number }}" >> $GITHUB_ENV
echo "Set VERSION_CODE to: ${{ github.run_number }}"
shell: bash

- uses: sheenhx/action-flutter-build-android@v3
with:
keystore-base64: ${{ secrets.ANDROID_RELEASE_KEY }}
keystore-password: "${{ secrets.ANDROID_RELEASE_KEY_PASSWORD }}"
build-cmd: flutter build appbundle --release --build-number=${{ env.VERSION_CODE }} --flavor googlePlay
working-directory: ./

- name: Rename aab
run: mv build/app/outputs/bundle/googlePlayRelease/app-googlePlay-release.aab build/app/outputs/bundle/googlePlayRelease/moonchain.aab

- name: Zip debug symbols
run: cd build/app/intermediates/flutter/googlePlayRelease && zip -r native-debug-symbols.zip arm64-v8a armeabi-v7a x86_64

- name: Archive APK
uses: actions/upload-artifact@v4
with:
name: release-aab
# Try running the build locally with the build command to be sure of this path
path: build/app/outputs/bundle/googlePlayRelease/moonchain.aab

- uses: r0adkll/upload-google-play@v1
with:
serviceAccountJsonPlainText: ${{ secrets.SERVICE_ACCOUNT_JSON }}
packageName: com.moonchain.mxc
releaseFiles: build/app/outputs/bundle/googlePlayRelease/moonchain.aab
track: alpha
status: draft
debugSymbols: build/app/intermediates/flutter/googlePlayRelease/native-debug-symbols.zip

build-macos:
name: Build-ios
runs-on: macos-latest
steps:
- name: Checkout code with submodules
uses: actions/checkout@v4
with:
submodules: recursive

- uses: sheenhx/action-flutter-build-ios@v1
with:
# always use --export-options-plist=ios/GithubActionsExportOptions.plist
build-cmd: flutter build ipa --build-number=$(( 15 + ${{ github.run_number }})) --export-options-plist=ios/GithubActionsExportOptions.plist
certificate-base64: ${{ secrets.IOS_BUILD_CERTIFICATE_BASE64 }}
certificate-password: ${{ secrets.IOS_BUILD_CERTIFICATE_PASSWORD }}
provisioning-profile-base64: ${{ secrets.IOS_MOBILE_PROVISIONING_PROFILE_BASE64 }}
keychain-password: ${{ secrets.IOS_GITHUB_KEYCHAIN_PASSWORD }}

- name: Archive IPA
uses: actions/upload-artifact@v4
with:
name: release-ipa
# Try running the build locally with the build command to be sure of this path
path: build/ios/ipa/*.ipa

- name: "Upload app to TestFlight"
uses: henrik1/upload-testflight@v2
with:
app-path: "build/ios/ipa/moonchain.ipa"
issuer-id: ${{ secrets.APPSTORE_ISSUER_ID }}
api-key-id: ${{ secrets.APPSTORE_API_KEY_ID }}
api-private-key: ${{ secrets.APPSTORE_API_PRIVATE_KEY }}

upload-combined:
name: Combine and Upload Builds
needs: [build-apk, build-macos]
runs-on: ubuntu-latest
steps:
- name: Download Ubuntu artifact
uses: actions/download-artifact@v4
with:
name: release-aab
path: combined-builds/android

- name: Download macOS artifact
uses: actions/download-artifact@v4
with:
name: release-ipa
path: combined-builds/iOS

- name: Upload combined artifacts
uses: actions/upload-artifact@v4
with:
name: combined-builds
path: combined-builds

- name: Generate
id: generate
uses: AcmeSoftwareLLC/app-build-number@v1
with:
timezone: Asia/Kathmandu

- name: Display the generated build number
run: echo "Build Number > ${{ steps.generate.outputs.build-number }}"


- uses: ncipollo/release-action@v1
with:
artifacts: "combined-builds/android/*.aab,combined-builds/iOS/*.ipa"
token: ${{ secrets.DART_TOKEN }}
tag: ${{ steps.generate.outputs.build-number }}
name: "Release-v${{ steps.generate.outputs.build-number }}-iOS/Android-Visit mxc1usd.com"

61 changes: 0 additions & 61 deletions android/app/appcenter-post-clone.sh

This file was deleted.

7 changes: 6 additions & 1 deletion android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ android {
}

defaultConfig {
applicationId "com.mxc.moonchainWallet"
applicationId "com.moonchain.mxc"
// You can update the following values to match your application needs.
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
minSdkVersion 21
Expand Down Expand Up @@ -84,6 +84,11 @@ android {
// Specify ProGuard rules files
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
ndk {
debugSymbolLevel 'SYMBOL_TABLE' //<--- this defines what goes to those symbols
abiFilters 'arm64-v8a', 'armeabi-v7a', 'x86_64'
}

}
debug {
signingConfig signingConfigs.debug
Expand Down
12 changes: 6 additions & 6 deletions android/app/google-services.json
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
{
"project_info": {
"project_number": "618216834503",
"project_id": "axs-app-bd752",
"storage_bucket": "axs-app-bd752.appspot.com"
"project_number": "810578982053",
"project_id": "moonchain-app",
"storage_bucket": "moonchain-app.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:618216834503:android:e27ed7cfc97972273b85e2",
"mobilesdk_app_id": "1:810578982053:android:b8d690bcdd5b43d121094c",
"android_client_info": {
"package_name": "com.mxc.axswallet"
"package_name": "com.moonchain.mxc"
}
},
"oauth_client": [],
"api_key": [
{
"current_key": "AIzaSyDce6qQLy9i3_GzwOMAAjlM28k_TSioCMo"
"current_key": "AIzaSyCyny8vayQzMxTWnJcK7KIl7GKEwtloC8Q"
}
],
"services": {
Expand Down
2 changes: 1 addition & 1 deletion android/app/src/debug/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mxc.moonchainWallet">
package="com.moonchain.mxc">
<!-- The INTERNET permission is required for development. Specifically,
the Flutter tool needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
Expand Down
12 changes: 11 additions & 1 deletion android/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" package="com.mxc.moonchainWallet">
xmlns:tools="http://schemas.android.com/tools" package="com.moonchain.mxc">

<queries>
<package android:name="org.telegram.messenger" />
Expand Down Expand Up @@ -92,6 +92,16 @@
<data android:mimeType="image/*" />
<data android:mimeType="application/pdf" />
</intent-filter>

<meta-data android:name="flutter_deeplinking_enabled" android:value="false" />

<!-- App Link sample -->
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" android:host="mxc1usd.com" android:pathPrefix="/app" />
</intent-filter>
</activity>

<provider android:name="androidx.core.content.FileProvider" android:authorities="${applicationId}.provider" android:exported="false" android:grantUriPermissions="true">
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.mxc.moonchainWallet
package com.moonchain.mxc

import io.flutter.embedding.android.FlutterFragmentActivity

Expand Down
2 changes: 1 addition & 1 deletion android/app/src/profile/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mxc.moonchainWallet">
package="com.moonchain.mxc">
<!-- The INTERNET permission is required for development. Specifically,
the Flutter tool needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
Expand Down
11 changes: 1 addition & 10 deletions assets/flutter_i18n/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,10 @@
"choose_my_username": "Wähle meinen Benutzernamen",
"mnemonic_passphrase": "Mnemonischer Passphrase",
"biometrics_setup": "Moonchain Biometrie-Einrichtung",
"mxc_zkevm_username": "MXC zkEVM Benutzername",
"ens_announcement_description": "Mit Ihrem einzigartigen MXC zkEVM-Benutzernamen gehört der umständliche Umgang mit komplexen Wallet-Adressen der Vergangenheit an. Jetzt können Sie mühelos einen personalisierten und exklusiven Namen verwenden, der Sie abhebt.",
"choose_your_username": "Wählen Sie Ihren einzigartigen MXC zkEVM-Benutzernamen",
"ens_register_description": "MXC-Domainnamen, seltene Juwelen im Hexagon, NFT und IoT-Universum, sind Ihr Ticket zu einer unvergesslichen digitalen Identität. Wählen Sie weise!",
"username": "Benutzername",
"prowerd_zkevm": "Angetrieben von MXC zkEVM Supernodes",
"claim_my_username": "Beanspruche meinen Benutzernamen",
"congratulations": "Glückwunsch",
"successfully_claimed": "Sie haben Ihren Benutzernamen erfolgreich beansprucht!",
Expand Down Expand Up @@ -302,7 +300,6 @@
"duplicate_account_import_notice": "Das Konto, das Sie versuchen zu importieren, ist ein Duplikat.",
"unable_to_launch_email_app": "Nicht in der Lage, E-Mail-App zu starten",
"max_fee": "Maximale Gebühr",
"deposit_from_exchanges_notice": "Kaufen Sie von {0}, {1} Börsen und hinterlegen Sie zkEVM MXC direkt in die Moonchain Wallet.",
"deposit_with_l3_bridge_notice": "Kaufen Sie von anderen Börsen und verwenden Sie {0}, um ERC20 MXC in die Moonchain Wallet einzuzahlen.",
"buy_some_x_for_fee_notice": "Kaufen Sie etwas {0}, um die Gasgebühr für die Transaktion zu bezahlen, normalerweise weniger als 2 USD, wenn das Netzwerk nicht ausgelastet ist.",
"insufficient_funds_notice": "Unzureichendes Guthaben für diese Transaktion. Bitte fügen Sie Geldmittel hinzu.",
Expand All @@ -311,7 +308,6 @@
"notifications": "Benachrichtigungen",
"mxc_support_form": "MXC Unterstützungsformular",
"mxc_support": "MXC Unterstützung",
"mxc_design_documents": "MXC zkEVM Design-Dokumente",
"browse_documents": "Dokumente durchsuchen",
"knowledge_hub": "Wissenszentrum",
"learn_more": "Erfahren Sie mehr",
Expand All @@ -325,19 +321,14 @@
"background_fetch_notice_title": "Optimieren Sie Ihr Moonchain Wallet Erlebnis",
"background_fetch_notice_text": "Um die Spitzenleistung der Moonchain Wallet zu gewährleisten, empfehlen wir, die App im Hintergrund aktiv zu halten und sie von den Einstellungen zur Batterieoptimierung auszuschließen. Dies hilft, eine nahtlose Funktionalität und einen unterbrechungsfreien Zugang zu Ihrer Wallet aufrechtzuerhalten.",
"acknowledge": "Bestätigen",
"background_notifications_service_launched_successfully": "Hintergrundbenachrichtigungsdienst erfolgreich gestartet.",
"unable_to_launch_background_notification_service": "Start des Hintergrundbenachrichtigungsdienstes nicht möglich.",
"background_notifications_service_disabled_successfully": "Hintergrundbenachrichtigungsdienst erfolgreich deaktiviert.",
"low_balance": "Geringes Guthaben",
"expected_transaction_fee": "Erwartete Transaktionsgebühr",
"expected_epoch_occur": "Erwartetes Zeitalter-Ereignis",
"background_notifications": "Hintergrundbenachrichtigungen",
"occurrence": "Vorkommen",
"frequency": "Frequenz",
"experiencing_issues": "Probleme erleben?",
"background_service_solution": "Versuchen Sie, die App erneut zu aktivieren oder überprüfen Sie die Einstellungen für die Akku-Optimierung.",
"dapp_hooks": "DApp Haken",
"wifi_hooks": "Wi-Fi Haken",
"miner_hooks": "Miner Haken",
"location_permission_required_title": "Erforderliche Standortberechtigung.",
"location_permission_required_text": "Hoppla, die Standortberechtigung wurde verweigert. Es ist für uns unerlässlich, die Standortberechtigung zu haben, damit Wi-Fi-Hooks aktiv arbeiten können. Bitte erteilen Sie die Standortberechtigung, indem Sie zu den Einstellungen gehen.",
Expand Down Expand Up @@ -471,5 +462,5 @@
"your_email_address": "Ihre E-Mail-Adresse",
"invalid_email": "Bitte geben Sie eine gültige E-Mail-Adresse ein (z. B. [email protected])",
"email": "E-Mail",
"hello": "Hallo"
"deposit_from_exchanges_to_moonchain_wallet_notice": "Kaufen Sie von {0}, {1}, {2}, {3}, {4}, {5} oder {6} Börsen und zahlen Sie zkEVM MXC direkt auf das Moonchain-Wallet ein"
}
5 changes: 2 additions & 3 deletions assets/flutter_i18n/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -307,7 +307,7 @@
"remove": "Remove",
"duplicate_account_import_notice": "The account you are trying to import is a duplicate",
"unable_to_launch_email_app": "Unable to launch email app",
"deposit_from_exchanges_notice": "Buy from {0}, {1}, {2}, {3}, {4}, {5} or {6} exchanges and deposit zkEVM MXC directly to Moonchain wallet",
"deposit_from_exchanges_to_moonchain_wallet_notice": "Buy from {0}, {1}, {2}, {3}, {4}, {5} or {6} exchanges and deposit zkEVM MXC directly to Moonchain wallet",
"deposit_with_l3_bridge_notice": "Buy from other exchanges and use {0} to deposit ERC20 MXC to Moonchain wallet",
"buy_some_x_for_fee_notice": "Buy some {0} to pay for gas fee for the transaction, normally less than 2 USD when the network is not busy",
"insufficient_funds_notice": "Insufficient balance for this transaction.\n Please add funds.",
Expand Down Expand Up @@ -462,6 +462,5 @@
"store_in_x": "Store in {0}",
"your_email_address": "Your Email Address",
"invalid_email": "Please enter a valid email address (e.g., [email protected])",
"email": "Email",
"hello": "Hello"
"email": "Email"
}
Loading