From cb580007846f827cf25b35f245367b8d4ffe9a43 Mon Sep 17 00:00:00 2001 From: mytilene Date: Wed, 13 Nov 2024 10:14:59 +0800 Subject: [PATCH 01/18] Update .gitignore --- .gitignore | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 7bef90e650..e8e4a2c668 100644 --- a/.gitignore +++ b/.gitignore @@ -66,4 +66,6 @@ templates/kubernetes/config/* .DS_Store .token -backups \ No newline at end of file +backups +.vscode/settings.json +web/public/.vscode/settings.json From 819365e27b1e71e0ad03bc70d8fb765136e86238 Mon Sep 17 00:00:00 2001 From: mytilene Date: Wed, 13 Nov 2024 12:02:15 +0800 Subject: [PATCH 02/18] Update mn.json --- web/src/config/lang/mn.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/web/src/config/lang/mn.json b/web/src/config/lang/mn.json index fa3c4cc4a7..332e2ee006 100644 --- a/web/src/config/lang/mn.json +++ b/web/src/config/lang/mn.json @@ -681,7 +681,7 @@ }, "STAKE": { "NETWORK_WARNING": "Тохиромжгүй сүлжээ. Сүлжээгээ {0} болгож өөрчилнө үү", - "EARN": "Earn", + "EARN": "Хуримтлал", "TITLE": "Стэйкинг", "MODAL_TITLE": "Стэйклэж, {0}-г олоорой", "REVIEW_MODAL_TITLE": "Шалгаж баталгаажуулна уу", @@ -1708,20 +1708,20 @@ "ACCORDIAN_ASSETS": "Бүх хөрөнгө", "ACCORDIAN_INFO": "ХӨРӨНГИЙН ТАНИЛЦУУЛГА", "ACCORDIAN_HISTORY": "ТҮҮХ", - "DEPOSIT": "ХАДГАЛАМЖ", - "WITHDRAW": "ТАТАХ", + "DEPOSIT": "ОРЛОГО", + "WITHDRAW": "ЗАРЛАГА", "SELECT_ASSET": "Хөрөнгө сонгох:", "SELECT_NETWORK": "Сүлжээ сонгох:", "DESTINATION": "Очих газар:", "AMOUNT": "Дүн:", - "ESTIMATED": "Татан авалтын тооцоолсон үнэ цэнэ", - "TRANSACTION_FEE": "Гүйлгээний хураамжийг нэмж оруулах:", + "ESTIMATED": "Зарлагын тооцоолсон үнэ цэнэ", + "TRANSACTION_FEE": "Гүйлгээний хураамж:", "SCAN": "SCAN", "ADDRESS": "хаяг:", "OPTIONAL_TAG": "Шошго (заавал биш)", "TAG": "Шошго:", - "DISABLED_DEPOSIT_CONTENT": "Хадгаламжийн функцийг түр хугацаанд ашиглах боломжгүй байна.", - "DISABLED_WITHDRAW_CONTENT": "Мөнгө авах функцийг түр хугацаанд ашиглах боломжгүй.", + "DISABLED_DEPOSIT_CONTENT": "Орлогын функцийг түр хугацаанд ашиглах боломжгүй байна.", + "DISABLED_WITHDRAW_CONTENT": "Зарлагын функцийг түр хугацаанд ашиглах боломжгүй.", "DEPOSIT_LABEL": "Хадгаламж" }, "ASYNC_LINK": { From 195db98d981a77e7b8d306ecac21d13af43748d1 Mon Sep 17 00:00:00 2001 From: mytilene Date: Wed, 13 Nov 2024 12:34:45 +0800 Subject: [PATCH 03/18] Update mn.json --- web/src/config/lang/mn.json | 458 ++++++++++++++++++++++++++++++++++-- 1 file changed, 437 insertions(+), 21 deletions(-) diff --git a/web/src/config/lang/mn.json b/web/src/config/lang/mn.json index 332e2ee006..d313280da9 100644 --- a/web/src/config/lang/mn.json +++ b/web/src/config/lang/mn.json @@ -3,10 +3,13 @@ "APP_SUB_TITLE": "Нээлттэй Крипто Эксченж", "LOGOUT_CONFIRM_TEXT": "Та гарахдаа итгэлтэй байна уу", "ADD_TRADING_PAIR": "Маркет сонгох", + "TRADE_TOOLS": "Tools", "CANCEL_BASE_WITHDRAWAL": "{0} зарлага цуцлах", + "CANCEL_WITHDRAWAL_ADDRESS": "Withdrawal Address", "CANCEL_WITHDRAWAL": "Зарлага цуцлах", "CANCEL_WITHDRAWAL_POPUP_CONFIRM": "Та дараах хүлээгдэж буй зарлагыг цуцлахдаа итгэлтэй байна уу:", "TIMESTAMP_FORMAT": "YYYY/MM/DD HH:mm:ss", + "DEFAULT_TIMESTAMP_FORMAT": "DD, MMMM, YYYY", "NO_ACTIVE_ORDERS": "Захиалга байхгүй байна. Та арилжаа эсвэл хялбар арилжаа цэсээр захиалгаа өгөөрэй", "NO_ACTIVE_TRADES": "Арилжаа одоогоор хийгдээгүй байна", "NO_ACTIVE_DEPOSITS": "Орлого одоогоор байхгүй байна.", @@ -40,12 +43,18 @@ "BACK_TEXT": "Буцах", "NO_OPTIONS": "Сонголт байхгүй байна", "SECONDS": "хором", + "SECOND": "хором", "VIEW_MARKET": "маркет харах", + "CANT_FIND_MARKETS": "Can't find any markets from that asset.", + "TRY_VISITING_ASSETS": "Try visiting the {0}.", + "ASSETS_PAGE": "Assets page", "GO_TRADE": "Арилжаанд оролцох", "VIEW_INFO": "Мэдээллийн хуудас зочлох", "APPLY_HERE": "Энд дарна уу", "CONVERT": "Хөрвүүлэх", + "SWAP": "Switch", "TO": "Юунд", + "NA": "N/A", "HOME": { "MAIN_TITLE": "Крипто арилжааны бирж", "MAIN_TEXT": "Та өөрийн и-мэйл хаягаар бүртгүүлээд 24 цагийн турш крипто хөрөнө хялбархан худалдан авах, арилжаалах боломжтой", @@ -108,6 +117,13 @@ "NO_DATA": "Мэдээлэл байхгүй байна", "QR_CODE_TITLE": "{0} Орлогын мэдээлэл" }, + "QR_CODE": { + "SCAN": "Scan", + "SHOW": "Show QR", + "NO_RESULT": "No result", + "NOT_FOUND": "Not Found", + "PERMISSION_DENIED": "Permission Denied" + }, "LOGIN": { "LOGIN_TO": "{0} нэвтрэх", "CANT_LOGIN": "Нэвтэрч чадахгүй байна уу?", @@ -115,7 +131,8 @@ "CREATE_ACCOUNT": "Энд дарж бүртгүүлээрэй", "HELP": "Тусламж", "LOOKING_PRICES": "Үнэ хайж байна уу?", - "VIEW_MARKETS": "Зах зээлүүдийг үзэх" + "VIEW_MARKETS": "Зах зээлүүдийг үзэх", + "HELP": "Help" }, "FORM_FIELDS": { "EMAIL_LABEL": "И-мэйл", @@ -149,7 +166,11 @@ "ONLY_NUMBERS": "Зөвхөн тоо оруулна уу" }, "NOTIFICATIONS": { - "BUTTONS": { "OKAY": "Okay", "START_TRADING": "арилжаа хийж эхлэх", "SEE_HISTORY": "түүх харах" }, + "BUTTONS": { + "OKAY": "Okay", + "START_TRADING": "арилжаа хийж эхлэх", + "SEE_HISTORY": "түүх харах" + }, "DEPOSITS": { "TITLE_RECEIVED": "{0} орлого хүлээн авлаа", "TITLE_INCOMING": "{0} орлого ирж байна", @@ -177,13 +198,12 @@ "TITLE": "Аюулгүй байдлын кодыг оруулна уу", "LABEL": "Код оруулах (имэйлээ шалгана уу)", "PLACEHOLDER": "Имэйлд илгээсэн кодыг оруулна уу", - "FORM_TITLE": "Таны имэйл рүү илгээсэн кодыг OTP кодын хамт оруулна уу.", + "FORM_TITLE_TEXT": "Процессыг дуусгахад шаардлагатай өвөрмөц кодыг таны имэйл рүү илгээсэн. Таны имэйл рүү илгээсэн кодыг доор оруулна уу{0}.", + "OTP_NOTE": " таны OTP кодын хамт", "BUTTON": "Илгээх", "ERROR_INVALID": "Таны оруулсан код буруу байна. Дахин оролдоно уу", "OTP_LABEL": "2FA код (OTP)", - "OTP_PLACEHOLDER": "2FA кодоо оруулна уу", - "FORM_TITLE_TEXT": "Процессыг дуусгахад шаардлагатай өвөрмөц кодыг таны имэйл рүү илгээсэн. Таны имэйл рүү илгээсэн кодыг доор оруулна уу{0}.", - "OTP_NOTE": " таны OTP кодын хамт" + "OTP_PLACEHOLDER": "2FA кодоо оруулна уу" }, "QUICK_TRADE_COMPONENT": { "TITLE": "Хялбар арилжаа", @@ -223,7 +243,10 @@ "MOBILE_WALLET_BALANCE_LABEL": "Жинлүүр/Зүүн. USDT", "MOBILE_WALLET_SHARE_LABEL": "%Хуваалцах/Тооцоол. USDT", "VIEW_MORE_WALLET_INFO": "ХЭТИЙВЧИЙН ДЭЛГЭРЭНГҮЙ МЭДЭЭЛЭЛИЙГ ХАРАХ", - "VIEW_WALLET_TRANSACTION_HISTORY": "ХЭТИЙВЧИЙН ГҮЙЛГЭЭНИЙ ТҮҮХИЙГ ХАРАХ" + "VIEW_WALLET_TRANSACTION_HISTORY": "ХЭТИЙВЧИЙН ГҮЙЛГЭЭНИЙ ТҮҮХИЙГ ХАРАХ", + "ORDERS_HOLD": "You have {0} {1}, resulting in a hold of {2} {3} placed on your {4} balance", + "OPEN_ORDERS_SINGULAR": "open order", + "VIEW_WALLET": "View wallet" }, "REQUEST_RESET_PASSWORD": { "TITLE": "Бүртгэл сэргээх", @@ -235,7 +258,11 @@ "TITLE": "Нууц үг сэргээх линк илгээлээ", "TEXT": "Таны бүртгэлтэй и-мэйл хаяг руу нууц үг сэргээх заавар явууллаа." }, - "RESET_PASSWORD": { "TITLE": "Шинэ нууц үг", "SUBTITLE": "Шинэ нууц үг", "BUTTON": "Шинэ нууц үг" }, + "RESET_PASSWORD": { + "TITLE": "Шинэ нууц үг", + "SUBTITLE": "Шинэ нууц үг", + "BUTTON": "Шинэ нууц үг" + }, "RESET_PASSWORD_SUCCESS": { "TEXT_1": "Та нууц үгээ амжилттай шинэчиллээ", "TEXT_2": "Доорх хэсгийг ашиглан нэвтэрч орно уу." @@ -432,7 +459,9 @@ } }, "BANK_ACCOUNT_FORM": { - "VALIDATIONS": { "ACCOUNT_NUMBER_MAX_LENGTH": "Дансны дугаар 50 тэмдэгтээс бага байх ёстой" }, + "VALIDATIONS": { + "ACCOUNT_NUMBER_MAX_LENGTH": "Дансны дугаар 50 тэмдэгтээс бага байх ёстой" + }, "FORM_FIELDS": { "BANK_NAME_LABEL": "Банкны нэр", "BANK_NAME_PLACEHOLDER": "Банкны нэрээ бичнэ үү", @@ -457,12 +486,13 @@ "PAYMENT_VERIFICATION_HELP_TEXT": "Энэ хэсгийг баталгаажуулахын тулд та {0} хэсгийг бөглөх ёстой." }, "USER_SETTINGS": { - "TITLE_TEXT_1": "Энэ хэсэгт та ерөнхий тохиргоог өөрчлөх боломжтой.", - "TITLE_TEXT_2": "Өөрчлөлтөө хадгалахын тулд Хадгалах товчлуурыг дарна уу.", + "TITLE_TEXT": "Revise your account settings by adjusting preferences such as interface layout, notification preferences, username, and other customizations.", + "TITLE_TEXT_1": "Once you've made your desired changes, saving your settings will apply them and ensure they are retained.", "TITLE_NOTIFICATION": "Мэдэгдэл", "TITLE_INTERFACE": "Интерфэйс", "TITLE_LANGUAGE": "Хэл", "TITLE_CHAT": "Чат", + "TITLE_ACCOUNT": "Account", "TITLE_AUDIO_CUE": "Аудио ", "TITLE_MANAGE_RISK": "Эрсдлийн удирдлага", "ORDERBOOK_LEVEL": "Захиалга харагдах тоо (Ихдээ 20)", @@ -501,7 +531,6 @@ "ACTIVATE_RISK_MANAGEMENT": "Эрсдлийн удирдлага идэвхижүүлэх", "WARNING_POP_UP": "Анхааруулах цонх" }, - "TITLE_ACCOUNT": "Данс", "DELETE_ACCOUNT": { "ACCESS": { "TEXT": "Бүртгэлээ устгахыг хүсч байна уу? {0} товшино уу.", @@ -532,7 +561,10 @@ "TITLE": "Биржийн аппууд", "SUBTITLE": "Таны биржийн дансны хэрэглээний мэдээлэл болон нэмэлт функцуудыг доороос үзнэ үү..", "SEARCH_PLACEHOLDER": "Хайлт...", - "ADD": { "SUCCESSFUL": "Таны апп амжилттай нэмлээ!", "FAILED": "Something went wrong" } + "ADD": { + "SUCCESSFUL": "Таны апп амжилттай нэмлээ!", + "FAILED": "Something went wrong" + } }, "MY_APPS": { "TAB_TITLE": "Миний аппууд", @@ -549,7 +581,11 @@ "NOT_FOUND": "Ийм апп байхгүй байна...", "RETRY": "Өөр нэр томъёогоор хайж үзнэ үү" }, - "APP_DETAILS": { "BACK_PLACEHOLDER": "{0} {1}", "BACK_TO_APPS": "Миний аппууд руу", "BACK": "Буцах" }, + "APP_DETAILS": { + "BACK_PLACEHOLDER": "{0} {1}", + "BACK_TO_APPS": "Миний аппууд руу", + "BACK": "Буцах" + }, "CONFIGURE": { "TITLE": "Аппыг тохируулах", "SUBTITLE": "Өөрийн аппыг доороос тохируулна уу:", @@ -1658,8 +1694,38 @@ "WALLET_BALANCE_ESTIMATE": "Өнөөдрийн хэтэвчний үлдэгдлийн баланс ", "VIEW_BALANCE_HISTORY": "БАЛАНС ТҮҮХ", "VIEW_PERCENTAGE_SHARE": "ХУВЬ ХЭМЖЭЭ", - "VIEW_WALLET_P&L": "ХЭТЭВЧ P&L" - }, + "VIEW_WALLET_P&L": "ХЭТЭВЧ P&L", + "BALANCE_PERCENTAGE": "Balance Percentage" + }, + "ADDRESS_BOOK": { + "ADDRESS_BOOK_LABEL": "Хаягийн дэвтэр", + "ADDRESS_BOOK_DESC_1": "Өөрийн хаягийн дэвтэрт цагаан жагсаалтад орсон зарлагын хаяг нэмэх", + "ADDRESS_BOOK_DESC_2": "Та энэ хаягийг зарлага хийхдээ хялбар ашиглах боломжтой болно.", + "ADD_ADDRESS_LINK": "Хаяг нэмэх", + "ADD_WITHDRAW_ADDRESS": "Зарлагын хаяг нэмэх", + "DATE_ADDED": "Нэмсэн огноо", + "REMOVE": "Устгах", + "NO_LINK": "Одоогоор зарлагын хаяг нэмэгдээгүй байна.", + "ADD_WITHDRAW_ADDRESS_DESC_1": "Зоосыг аюулгүй зарлага хийх боломжтой цагаан жагсаалтад орсон хаяг нэмэх.", + "ADD_WITHDRAW_ADDRESS_DESC_2": "Энэ зарлагын хаяг таны хяналтан дор байх ёстой.", + "NAME_YOUR_ADDRESS_TITLE": "Хаягаа нэрлэх", + "NAME_YOUR_ADDRESS_DESC": "Энэхүү зарлагын хаягт ирээдүйд танихад зориулж нэр өгнө үү.", + "USER_LABEL": "Нэр/шошго:", + "USER_FIELD_PLACEHOLDER": "Энэ зарлагын хаягийг нэрлэх", + "CHECK_AND_CONFIRM": "Шалгаж баталгаажуулах", + "WARNING_ADDRESS": "Энэхүү хаягийг хаягийн дэвтэрт нэмэхээс өмнө мэдээлэл зөв эсэхийг шалгаж баталгаажуулахад цаг гаргана уу:", + "ENSURE_DESC": "Хаяг зөв бөгөөд таны хяналтан дор байгаа эсэхийг шалгана уу.", + "ADDRESSES": "Хаягууд", + "WITHDRAWAL_ADDRESS_BOOK": "Зарлагын хаягийн дэвтэр", + "ADD_ADDRESS_DESC": "Зарлагын хаяг нэмэх {0}", + "ADDRESS_BOOK": "Хаягийн дэвтэр", + "MANAGE_ADDRESS_BOOK": "Хаягийн дэвтэр удирдах", + "VIEW_ADDRESS_BOOK_LABEL": "Хаягийн дэвтэр харах", + "ADD_WITHDRAWAL_ADDRESS_LINK": "Зарлагын хаяг нэмэх", + "REVOKE_ADDRESS": "Таны хаяг устгагдлаа", + "REMOVE_ADDRESS": "Хаяг устгах", + "REMOVE_CONTENT": "Энэ зарлагын хаягийг хаягийн дэвтэрээс устгах уу?" + }, "ASSET_INFO": "Хөрөнгийн мэдээлэл", "TAKER_FEES_APPLIED": "Taker хураамж бодогдсон", "ASSET_INFO_PAGE": "Хөрөнгийн мэдээллийн хуудас", @@ -1672,11 +1738,22 @@ "PRO_TRADE": "PRO TRADE", "MARKETS": "МАРКЕТ", "WALLET": "Хэтэвч", - "PRICE_SOURCE": "Үнийн эх үүсвэр", + "PRICE_SOURCE": "Үнийн эх сурвалж", "ORDERBOOK": "Захиалгын дэвтэр", "NETWORK": "Брокер OTC сүлжээ", "BROKER": "Дотоод брокер OTC", - "BROKERAGE": "NA - (Зуучлах)" + "BROKERAGE": "NA - (Зуучлах)", + "LOADING_PRICES": "Үнэ дуудаж байна...", + "INPUT_LABEL": "Нэр эсвэл товчлол оруулна уу", + "HIGHLIGHTS": "Онцлох", + "MOBILE_DESC": "Арилжаанд оролцохын тулд доороос сонгоно уу.", + "PRICE_24H": "Price/24H %", + "CARDS": { + "GAINERS": "Өссөн", + "LOSERS": "Буурсан", + "MARKET_CAP": "Зах зээлийн үнэлгээ", + "24H": "{0} 24Ц" + } }, "HOLLAEX_TOKEN": { "REMOVE_FAVOURITES": "Дуртай зүйлсээс хасах", @@ -2047,6 +2124,345 @@ "ALL_REGION": "Бүх бүс нутаг", "BUYER_NOT_MADE_THE_PAYMENT": "Худалдан авагч төлбөрөө баталгаажуулаагүй байна.", "PRICE_TO_ADVERTISE": "Таны зарах үнэ", - "VIEW_PROFILE": "Худалдагчийн профайлыг харах" - } -} \ No newline at end of file + "VIEW_PROFILE": "Худалдагчийн профайлыг харах", + "CLICK_TO_VIEW": "ҮЗЭХ", + "NEW_MESSAGE": "Та P2P мессеж хүлээн авлаа", + "STATUS_UPDATE": "Таны P2P захиалгад шинэчлэлт орлоо", + "APPEAL_STATUS_MESSAGE": "Таны P2P захиалга гомдол гаргасан байна", + "CANCEL_STATUS_MESSAGE": "Таны P2P захиалга цуцлагдлаа", + "CONFIRM_STATUS_MESSAGE": "Таны P2P захиалга баталгаажлаа", + "NEW_ORDER_CREATED": "Шинэ P2P захиалга үүссэн байна", + "CRYPTO_RELEASE_STATUS_MESSAGE": "Захиалгын крипто суллагдлаа", + "ADDITIONAL_PAYMENT_DETAILS": "Нэмэлт төлбөрийн дэлгэрэнгүй мэдээлэл оруулах", + "PAYMENT_FIELD_INFO": "Энэхүү шинэ төлбөрийн талбар нь P2P оролцогчдод фиат валютын шилжүүлэгт туслах нэмэлт мэдээлэл юм. Энэ нь төлбөрийн аргын дансны дэлгэрэнгүй мэдээллийг агуулна. Энэ нь утасны дугаар, хэрэглэгчийн нэр, дансны өвөрмөц дугаар гэх мэт шаардлагатай мэдээллийг агуулж болно.", + "PAYMENT_DETAIL_NAME": "Төлбөрийн дэлгэрэнгүй мэдээллийн нэр", + "REQUIRED_OR_OPTIONAL": "Шаардлагатай эсвэл сонголтот", + "CREATE_NEW_PAYMENT_METHODS": "Шинэ төлбөрийн арга үүсгэх болон нэмэх", + "MANUAL_PAYMENT_METHOD_ENTRY": "P2P платформд төлбөрийн арга нэмэхийн тулд арга нэр болон шаардлагатай төлбөрийн дэлгэрэнгүй мэдээллийг гараар оруулна. Жишээ нь, PayPal нь санхүү шилжүүлэхэд и-мэйл хаяг ашигладаг.", + "USERS_PAYMENT_SELECTION": "Төлбөрийн арга нэмэгдсэний дараа P2P худалдаачид болон хэрэглэгчид үүнийг сонгон, төлбөр хүлээн авах болон хийх үед шаардлагатай мэдээллийг оруулах боломжтой болно. Тэдний өгсөн дэлгэрэнгүй мэдээллийг P2P гүйлгээнд нөгөө талд хуваалцана.", + "METHOD_NAME_AND_DETAIL": "Аргын нэр болон үндсэн төлбөрийн дэлгэрэнгүй", + "ADD_NEW_PAYMENT_METHODS": "Шинэ төлбөрийн аргууд сонгох:", + "DETAIL_NAME": "Төлбөрийн дэлгэрэнгүй мэдээллийн нэр", + "DETAIL_VALUE": "Төлбөрийн дэлгэрэнгүй мэдээллийн утга", + "DETAIL_REQUIRED": "Шаардлагатай", + "IMPORTANT_DETAIL": "(Чухал төлбөрийн дэлгэрэнгүй)", + "DETAIL_OPTIONAL": "Сонголтот", + "OPTIONAL_DETAIL": "(Сонголтот төлбөрийн дэлгэрэнгүй)", + "ADD_NEW_PAYMENT_FIELD": "Шинэ төлбөрийн дэлгэрэнгүй мэдээллийн талбар нэмэх", + "PAYMENT_METHOD_CREATED": "Төлбөрийн арга үүссэн! Админы баталгаажилтыг хүлээж байна", + "PAYMENT_METHOD_DELETED": "Төлбөрийн арга устгагдлаа.", + "PAYMENT_METHOD_UPDATED": "Төлбөрийн арга шинэчлэгдлээ.", + "CRYPTO": "Крипто: ", + "INPUT_SPEND_AMOUNT": "Зарцуулалтын хэмжээ оруулах", + "INPUT_SELL_AMOUNT": "Зарах хэмжээ оруулах", + "TIMES": "удаа", + "FEEDBACK": "Санал", + "ASSET": "Хөрөнгө: ", + "CUSTOM": "Өөрчлөн", + "CANCELLED": "Цуцлагдсан", + "APPEALED": "Гомдол гаргасан", + "EXPIRED": "Хугацаа дууссан", + "RATE": "Үнэлгээ:", + "BUYING": "{0} худалдан авах", + "SELLING": "{0} зарах", + "TERMS_AND_CONDITION_DESCRIPTION": "Хэлцэл эхэлснээс хойш 15 минутын дотор нийтлэх", + "VISIT_OUR_WEBSITE": "Манай вэбсайтад зочлох", + "SELECT_PAYMENT_SYSTEM_LABEL": "Төлбөрийн систем сонгох", + "FIELD": "Талбар", + "NEW_PAYMENT_PLACEHOLDER": "Төлбөрийн дэлгэрэнгүй мэдээллийн утга оруулах", + "FIELD_VALIDATION_TEXT": "Бүх талбарыг оруулна уу", + "INPUT_METHOD_NAME_TEXT": "Аргын нэр оруулна уу", + "INPUT_PAYMENT_DETAIL_TEXT": "Төлбөрийн дэлгэрэнгүй мэдээллийн нэр оруулна уу", + "UNVERIFIED": "Баталгаажаагүй", + "VERIFIED": "Баталгаажсан", + "AMOUNT_RECEIVE": "танай данснаас суллагдана", + "DELETE_WARNING": "Энэ төлбөрийн аргыг устгахдаа итгэлтэй байна уу?", + "STEP_1": "Алхам 1/3", + "STEP_2": "Алхам 2/3", + "STEP_3": "Алхам 3/3", + "P2P_ORDER_CREATED": "P2P захиалга үүссэн", + "VENDOR_CHECKS_TITLE": "Төлбөр шалгах ба баталгаажуулах", + "FUND_RELEASED": "Санхүү суллагдлаа", + "ORDER_EXPIRY": "Захиалгын хугацаа дуусахад", + "MINIMUM_AMOUNT_WARNING": "Хамгийн бага {0} нь {1}", + "MAXIMUM_AMOUNT_WARNING": "Хамгийн их {0} нь {1}", + "ORDER_CREATION": "Захиалга үүсгэх", + "ORDER_CREATION_DESC_1": "'Захиалга үүсгэх' дээр дарснаар худалдаачинд мэдэгдэж, шуурхай үнийн санал болон төлбөрийн нарийн дэлгэрэнгүй мэдээллийг хүлээн авна. {0} {1} {2} {3}", + "ORDER_CREATION_DESC_2": "Энэ нь захиалгаа дуусгах шаардлагатай яг хэмжээг агуулна.", + "YOU_HAVE_TEXT": "Танд", + "COMPLETE_PAYMENT_PROCESS": "төлбөрийн шилжүүлгийг бүрэн хийх боломж байна.", + "WARINNG_DESC": "Захиалга үүсгэхийг зөвхөн захиалгыг дуусгах зорилготой бол үргэлжлүүлээрэй.", + "ORDER_CANCEL_DESC": "Захиалга цуцлах нь данс түдгэлзэхэд хүргэж болно.", + "CONFIRM_ORDER_CREATION": "Таны {0} хийхэд бэлэн бол доорх 'Захиалга үүсгэх' товчийг дарна уу.", + "SEND_MONEY": "мөнгийг илгээх", + "RECEIVE_MONEY": "мөнгийг хүлээн авах", + "CREATE_ORDER": "Захиалга үүсгэх", + "NO_ORDERS_DESC": "Энд захиалга алга байна.", + "NO_DEALS_DESC": "Энд хэлцэл алга байна.", + "ONLINE": "ОНЛАЙН", + "OFFLINE": "ОФФЛАЙН", + "SELECT_CRYPTO": "Крипто сонгох", + "REMOVE_WARNING": "Энэ хэлцлийг устгахдаа итгэлтэй байна уу?", + "SHOW_FILTERS": "ШҮҮЛТҮҮР ХАРУУЛАХ", + "HIDE_FILTERS": "ШҮҮЛТҮҮР НУУХ", + "ORDERS_COMPLETED": "Гүйцэтгэсэн захиалгууд:", + "CANCEL_WARNING_TEXT": "Захиалгыг олон удаа цуцлах нь таны P2P нийтийн профайлд сөргөөр нөлөөлж, таны данс түдгэлзэхэд хүргэж болно.", + "UPDATE": "Шинэчлэх", + "TERMS_ERROR_TEXT": "Нөхцөл талбарыг оруулна уу", + "RESPONSE_ERROR_TEXT": "Хариу талбарыг оруулна уу" + }, + "VOLUME": { + "VOLUME": "Хэмжээ", + "BACK": "Буцах", + "MARKETS": "Зах зээл", + "CONVERT": "Хөрвүүлэх", + "HISTORY": "Түүх", + "TRADING_VOLUME": "Арилжааны хэмжээ", + "VOLUME_DECS": "Таны дансны арилжааны хэмжээг өөр өөр цаг хугацааны хувьд, мөн тухайн хугацаанд хамгийн их арилжаалагдсан 3 хөрөнгийг харуулна", + "ALL_ASSETS": "бүх хөрөнгө", + "DAY_VOLUME": "Өдрийн хэмжээ", + "HOUR_VOLUME": "24 цагийн хэмжээ", + "TOP": "Топ {0} {1}", + "VOL_ASSET": "Өдрийн хэмжээ хөрөнгө", + "NO_DATA_DESC_1": "Та одоогоор арилжаа хийгээгүй бололтой. Одоо эхэлж, таны үйл ажиллагаа энд харагдах болно!", + "NO_DATA_DESC_2": "Арилжаа эхлэх ", + "NO_DATA_DESC_3": "одоо таны үйл ажиллагааг энд харахын тулд!", + "TRADE_VOLUME": "Арилжааны хэмжээ", + "VIEW_VOLUME": "Хэмжээг харах", + "TRADE_DESCRIPTION": "Хамгийн их арилжаалагдсан хөрөнгийг харах", + "MARKET_TABLE_DESC": "Таны арилжааны хэмжээний хуудсыг үзэх {0}" + }, + "MORE_OPTIONS_LABEL": { + "MORE_OPTION_SEARCH_TXT": "Онцлог болон хуудсыг хайх", + "NO_RESULT_DESC_1": "Үр дүн олдсонгүй.", + "NO_RESULT_DESC_2": "Өөр түлхүүр үг хайж үзээрэй.", + "ICONS": { + "REFERRALS": "Зөвлөмж", + "BUY_CRYPTO": "Крипто худалдан авах", + "API": "API", + "DEFI_STAKE": "DeFi хөрөнгө оруулалт", + "CEFI_STAKE": "CeFi хөрөнгө оруулалт", + "PROFIT_LOSS": "Ашиг/Алдагдал", + "LIMITS": "Хязгаарууд", + "LOGINS": "Нэвтрэлтүүд", + "AUDIO": "Аудио" + }, + "HOT_FUNCTION": { + "HOT_FUNCTION_LABEL": "Онцлох функцууд", + "ADD_FUNDS": "Хөрөнгө нэмэх", + "TOP_UP": "Дахин цэнэглэх", + "LOAD": "Ачаалах", + "CREDIT": "Зээл", + "FUND_ACCOUNT": "Данс хөрөнгөжүүлэх", + "BTC": "btc", + "USTD": "usdt", + "ETH": "eth", + "USD": "usd", + "XHT": "xht", + "TRANSFER": "Шилжүүлэх", + "MONEY": "мөнгө", + "FUNDING": "Хөрөнгө оруулалт", + "RECHARGE": "Цэнэглэх", + "REFILL": "Дахин дүүргэх", + "CASH_IN": "Мөнгө оруулах", + "ADD_MONEY": "Мөнгө нэмэх", + "EXCHANGE": "Арилжаа", + "SWAP": "Солих", + "BUY_SELL": "Худалдах/Худалдан авах", + "TRADE": "Арилжаа", + "CONVERT_CURRENCY": "Валют хөрвүүлэх", + "INVITE": "Урих", + "REFER": "Зөвлөх", + "REWARDS": "Шагналууд", + "BONUS": "Бонус", + "AFFILIATION": "холбоо", + "AFFILIATE": "холбогдох", + "PASSIVE_INCOME": "Пассив орлого", + "REVENUE": "Орлого" + }, + "OTHER_FUNCTIONS": { + "OTHER_FUNCTIONS_LABEL": "Бусад функцууд", + "INTEGRATION": "Нэгдэлт", + "PROGRAMMATIC_ACCESS": "Програм хангамжийн хандалт", + "DEVELOPER": "Хөгжүүлэгч", + "AUTOMATED_TRADING": "Автоматжуулсан арилжаа", + "BOT": "Робот", + "ALGO": "Алго", + "ALGORITHM": "алгоритм", + "FIAT": "фиат", + "DOLLAR": "доллар", + "PURCHASE": "худалдан авалт", + "BUY_COIN": "Зоос худалдан авах", + "BUY_TOKEN": "Токен худалдан авах", + "YIELD": "Үр ашиг", + "INTEREST": "Хүү", + "REVENUE": "Орлого", + "CENTRALIZED_STAKING": "Төвлөрсөн хөрөнгө оруулалт", + "PERFORMANCE": "Гүйцэтгэл", + "GAINS": "Ашиг", + "LOSSES": "Алдагдал", + "PORTFOLIO_PROFIT": "Портфелийн ашиг", + "LOSS": "Алдагдал", + "PNL": "ашиг/алдагдал", + "CHARGES": "Төлбөрүүд", + "COSTS": "Зардал", + "COMMISSION": "Хороо", + "TRADING_FEES": "Арилжааны шимтгэл", + "TRANSACTION_FEES": "Гүйлгээний шимтгэл", + "RESTRICTIONS": "Хязгаарлалтууд", + "BOUNDARIES": "Хүрээ", + "CAPS": "Дээд хэмжээ", + "MAXIMUM": "Хамгийн их", + "WITHDRAWAL_LIMITS": "Зарлагын хязгаар", + "STORAGE": "Хадгалалт", + "FUNDS": "Хөрөнгө", + "BALANCE": "Үлдэгдэл", + "CRYPTO_WALLET": "Крипто түрийвч", + "MY": "миний", + "ENGLISH": "англи", + "LOCALIZATION": "Орон нутгийн тохиргоо", + "TRANSLATE": "Орчуулах", + "LANGUAGE_SETTINGS": "Хэлний тохиргоо", + "MULTILINGUAL": "Олон хэлтэй", + "LANGUAGE_PREFERENCE": "Хэлний тохиргоо", + "TEXT": "текст", + "WORD": "үг", + "PEER_TO_PEER": "Хамтран ашиглалт", + "DIRECT_TRADE": "Шууд арилжаа", + "USER_TO_USER": "Хэрэглэгчээс хэрэглэгч рүү", + "PRIVATE_TRADE": "Хувийн арилжаа", + "TRANSACTIONS": "Гүйлгээнүүд", + "ACTIVITY": "Үйл ажиллагаа", + "RECORD": "Бичлэг", + "LOG": "Тэмдэглэл", + "TRANSACTION_HISTORY": "Гүйлгээний түүх", + "LIQUIDITY": "Төлбөрийн чадвар", + "MARKET_VOLUME": "Зах зээлийн эзлэхүүн", + "TRADING_ACTIVITY": "Арилжааны үйл ажиллагаа", + "MARKETS": "Зах зээлүүд", + "CRYPTO": "Крипто", + "TWO_FACTOR_AUTHENTICATION": "Хоёр шатлалтай баталгаажуулалт", + "MFA": "MFA", + "AUTHENTICATOR": "Баталгаажуулагч", + "OTP": "нэг удаагийн нууц үг", + "CREDENTIALS": "Итгэмжлэлүүд", + "PASSWORD_RESET": "Нууц үг сэргээх", + "SIGN_INS": "Нэвтрэлтүүд", + "ACCOUNT_ACCESS": "Дансны хандалт", + "SESSION_HISTORY": "Сессийн түүх", + "LOGGED_IN": "Нэвтэрсэн", + "SESSION_MANAGEMENT": "Сессийн удирдлага", + "CURRENT_SESSIONS": "Одоогийн сессүүд", + "BANKING_DETAILS": "Банкны дэлгэрэнгүй", + "BANK_ACCOUNT": "Банкны данс", + "FINANCIAL_INSTITUTION": "Санхүүгийн байгууллага", + "BANK_INFO": "Банкны мэдээлэл", + "WITHDRAWAL_ACCOUNT": "Зарлагын данс", + "FUND": "Хөрөнгө", + "SOUND": "Дуу", + "AUDIO_SETTINGS": "Аудио тохиргоо", + "ALERTS": "Анхааруулгууд", + "NOTIFICATIONS": "Мэдэгдлүүд", + "AUDIO_ALERTS": "Аудио анхааруулга", + "SECURITY": "Аюулгүй байдал", + "CONTACT": "Холбоо барих", + "EMAIL_ADDRESS": "И-мэйл хаяг", + "MAIL": "И-мэйл", + "EMAIL_CONTACT": "И-мэйл холбоо", + "KYC": "KYC", + "SMS": "SMS", + "KYC_CAPS": "KYC", + "ID": "Иргэний үнэмлэх", + "PERSONAL_INFO": "Хувийн мэдээлэл", + "IDENTITY_CHECK": "Иргэний үнэмлэх шалгалт", + "PAYOUT": "Төлбөрийн гаргалт", + "CASH_OUT": "Бэлэн мөнгө болгох", + "REMOVE_FUNDS": "Хөрөнгө устгах", + "OUT": "Гаргах", + "SUPPORT": "Дэмжлэг", + "CONTACT_LOWER": "холбоо барих", + "EMAIL_LOWER": "и-мэйл", + "RESOURCE": "Нөөц", + "GUIDES": "Заавар", + "FAQ": "Түгээмэл асуулт", + "CUSTOMER_SERVICE": "Үйлчилгээний тусламж", + "ASSISTANCE": "Тусламж", + "API_LOWER": "api", + "MESSAGE": "мессеж", + "LIVE_CHAT": "амьд чат", + "SETTINGS": "Тохиргоо", + "ALERT": "Сэрэмжлүүлэг", + "UPDATES": "Шинэчлэлтүүд", + "REMINDERS": "Сануулга", + "UI": "UI", + "USER_INTERFACE": "Хэрэглэгчийн интерфэйс", + "LAYOUT": "Байршил", + "DESIGN": "Загвар", + "DASHBOARD": "Хяналтын самбар", + "COLOR_THEME": "Өнгөний сэдэв", + "ORDER_BOOK": "Захиалгын ном", + "DARK": "Харанхуй", + "LIGHT": "Гэрэлтэй", + "WITHDRAWAL_ADDRESSES": "Зарлагын хаягууд", + "CRYPTO_ADDRESSES": "Крипто хаягууд", + "WALLET_ADDRESSES": "Түрийвчний хаягууд", + "SAVED_ADDRESSES": "Хадгалагдсан хаягууд", + "ADDRESS_BOOK": "Хаягийн дэвтэр", + "WHITE_LISTED": "цагаан жагсаалтад орсон" + } + }, + "CONNECTIONS": { + "CHECK_CONNECTION": "Холболтыг шалгах", + "IP": "IP", + "NORMAL_TEXT": "Энгийн", + "CONNECTION_ISSUE": "Холболтын асуудал", + "SESSION": "Хуралдаан", + "SERVER_TIME": "Серверийн цаг", + "PING": "Пинг", + "CHECK_PING": "ПИНГ ШАЛГАХ", + "RECONNECT": "Дахин холбогдох", + "TOOLTIP_DESC_1": "Биржийн сервертэй пинг шалгах {0}", + "TOOLTIP_DESC_2": "Бага 'ms' нь илүү сайн", + "LOGGED_IN_AT": "Нэвтэрсэн цаг", + "RECONNECT_DESC": "Дахин холболт нь тулгарч буй үл мэдэгдэх асуудлуудыг шийдэж магадгүй.", + "CONFIRM_RECONNECT_MESSAGE": "Та дахин холбогдох уу?", + "PING_CHECK_TEXT": "Серверийг пингдэж байна. Түр хүлээнэ үү...", + "RECHECK_PING": "ПИНГ ДАХИН ШАЛГАХ", + "FAST": "Хурдан", + "SLOW": "Удаан", + "MS": "{0} мс", + "STATUS_NORMAL": "Холболт энгийн", + "CONNECTION_LABEL": "Холболт", + "CONNECTION_ISSUE_DETECTED": "Холболтын асуудал илэрсэн" + }, + "DESKTOP_NAVIGATION": { + "OTHERS": "Бусад", + "SUMMARY_DESCRIPTION": "Дансны түвшний мэдээлэл ба хандалт", + "FEES_LIMITS_DESC": "Арилжааны болон зарлагын шимтгэл. Дансны хязгаарлалт", + "VOLUME_DESC": "Арилжааны эзлэхүүний хураангуй", + "DEPOSIT_DESC": "Түрийвчний орлогын хөрөнгө оруулалтын сонголтууд", + "BALANCE_DESC": "Таны бүх хөрөнгийн үлдэгдэл", + "PERFORMANCE_DESC": "Түрийвчний ашиг ба алдагдал", + "HISTORY_DESC": "Бүх арилжаа, орлого ба зарлагыг хянах", + "ADDRESS_BOOK_DESC": "Зарлагын хаягийн дэвтэр", + "WITHDRAW_DESC": "Түрийвчний зарлага ба шилжүүлэг", + "ASSETS_DESC": "Үнэ хянах ба хөрөнгийн мэдээлэл олж мэдэх", + "CONVERT_DESC": "Хялбар хөрвүүлэлт", + "MARKET_DESC": "Спот арилжааны захиалгын номын зах зээл.", + "P2P_DESC": "Крипто арилжаа", + "REFERRAL_DESC": "Найзуудаа урьж пассив орлого олох", + "CEFI_STAKE_DESC": "Биржийн түрийвчнээс хөрөнгө оруулах", + "DEFI_STAKE_DESC": "Түрийвч холбож хөрөнгө оруулах", + "BUY_CRYPTO_DESC": "Банкны шууд шилжүүлэг эсвэл картаар худалдан авах", + "SECURITY_DESC": "Дансны 2FA, нууц үг ба API-ууд", + "VERIFICATION_DESC": "Дансны баталгаажуулалт", + "SETTINGS_DESC": "Интерфэйс болон бусад дансны тохиргоо", + "SUMMARY_PAGE": "Хураангуйн хуудас", + "SIGNOUT_DESC": "Дансаа гарах", + "LANGUAGE_DESC": "Хэлний тохиргоо өөрчлөх", + "API_DESC": "API түлхүүр ашиглан дансанд програм хангамжаар хандах", + "HELP_DESC": "Тусламж авах. Дэмжлэгтэй холбогдох", + "TRANSACTION_DESC": "Бүх арилжаа, орлого ба зарлагыг хянах", + "ONRAMPER_DESC": "Onramper ашиглан крипто худалдан авах ба зарах" + } +} From 25bac4be712277f0b9112c814fd8d5a4f80d3e6a Mon Sep 17 00:00:00 2001 From: mytilene Date: Fri, 22 Nov 2024 13:01:28 +0800 Subject: [PATCH 04/18] Update mn.json --- web/src/config/lang/mn.json | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/web/src/config/lang/mn.json b/web/src/config/lang/mn.json index d313280da9..b79d4e884d 100644 --- a/web/src/config/lang/mn.json +++ b/web/src/config/lang/mn.json @@ -1619,6 +1619,33 @@ "HERE": "энд" }, "RESET_LAYOUT": "Байршлыг дахин тохируулах", + "WALLET_BALANCE_LOADING": "Balance loading...", + "LOADING": "Loading...", + "CONNECT_VIA_DESKTOP": { + "TITLE": "Connect via desktop", + "SUBTITLE": "DeFi staking through your mobile devices aren't supported at this time.", + "TEXT": "To connect your wallet please use a desktop/laptop computer." + }, + "ORDER_HISTORY_CLOSED": "Closed", + "FIAT": { + "UNVERIFIED": { + "TITLE": "Complete verification", + "TEXT": "In order to make a {0} you are required to complete your verification which includes verification of your bank details. Please click the proceed button below.", + "DEPOSIT": "deposit", + "WITHDRAWAL": "withdrawal" + }, + "REVIEW_DEPOSIT": { + "TITLE": "Check and confirm deposit details", + "SUBTITLE": "Please check the deposit details below to make sure everything is correct.", + "FORMAT": "{0} {1}", + "AMOUNT": "Amount to deposit", + "FEE": "Deposit fee", + "TRANSACTION_ID": "Transaction ID", + "NOTE": "To avoid delays make sure that your deposit's amount, note and the transaction ID match with the details above. If issues shall arise please contact support.", + "BACK": "Back", + "PROCEED": "Proceed" + } + }, "QUOTE_CONFIRMATION_EXPIRY_MSG": "Үнийн санал {0} {1}-д дуусна", "QUOTE_CONFIRMATION_EXPIRED_MSG_TEXT_1": "Үнийн хугацаа дууссан.", "QUOTE_CONFIRMATION_EXPIRED_MSG_TEXT_2": "Шинэ үнийн санал авахын тулд буцаж очно уу.", @@ -1628,6 +1655,7 @@ "MSG_3": "Энэ хөрөнгийн үнэ тодорхойгүй, баталгаагүй гэдгийг ойлгож байгаагаа баталгаажуулахын тулд доорх нүдийг шалгана уу.", "UNDERSTAND_RISK_MSG": "Тийм ээ, би эрсдэлийг ойлгож байна" }, + "DUST": { "TITLE": "Бага дүн хөрвүүлэгч", "LINK": "Бага дүн хөрвүүлэгч", From 9505f0f2240713803d1b371bdf5c7add396c8c53 Mon Sep 17 00:00:00 2001 From: ram Date: Wed, 27 Nov 2024 16:31:19 +0530 Subject: [PATCH 05/18] Changes for the P2P minor refinements --- web/src/components/AppBar/_AppBar.scss | 9 +++++++++ web/src/containers/Admin/Trades/p2pSettings.js | 13 +++++++++++-- web/src/containers/P2P/P2PDash.js | 11 +++++++++-- web/src/containers/P2P/P2PDashMobile.js | 6 +++++- web/src/containers/P2P/P2POrder/P2POrder.js | 5 ++++- web/src/containers/P2P/P2POrder/P2POrderDetails.js | 5 ++++- web/src/containers/P2P/Utilis.js | 8 +++++--- web/src/index.css | 8 +++++++- 8 files changed, 54 insertions(+), 11 deletions(-) diff --git a/web/src/components/AppBar/_AppBar.scss b/web/src/components/AppBar/_AppBar.scss index 5305c08585..02c82204fa 100644 --- a/web/src/components/AppBar/_AppBar.scss +++ b/web/src/components/AppBar/_AppBar.scss @@ -527,6 +527,15 @@ $app-menu-width: calc(100vw - 40rem); .app-bar-search-icon { padding: 2%; font-size: 16px; + opacity: 0.6; + svg { + transform: scale(1.3); + } + } + + .app-bar-search-icon:hover { + cursor: pointer; + opacity: 1; } } .capitalize { diff --git a/web/src/containers/Admin/Trades/p2pSettings.js b/web/src/containers/Admin/Trades/p2pSettings.js index c9b9456974..75aa6ed69e 100644 --- a/web/src/containers/Admin/Trades/p2pSettings.js +++ b/web/src/containers/Admin/Trades/p2pSettings.js @@ -18,7 +18,7 @@ import { CloseOutlined } from '@ant-design/icons'; import { setExchange } from 'actions/assetActions'; import { requestTiers } from '../Tiers/action'; import { updateConstants, requestUsers } from './actions'; -import { requestAdminData } from 'actions/appActions'; +import { requestAdminData, setConfig } from 'actions/appActions'; import { Coin } from 'components'; import _debounce from 'lodash/debounce'; import Coins from '../Coins'; @@ -28,7 +28,14 @@ import './index.css'; const TabPane = Tabs.TabPane; -const P2PSettings = ({ coins, pairs, p2p_config, features, constants }) => { +const P2PSettings = ({ + coins, + pairs, + p2p_config, + features, + constants, + setConfig, +}) => { const [displayP2pModel, setDisplayP2pModel] = useState(false); const [displayFiatAdd, setDisplayFiatAdd] = useState(false); const [displayPaymentAdd, setDisplayPaymentAdd] = useState(false); @@ -1233,6 +1240,7 @@ const P2PSettings = ({ coins, pairs, p2p_config, features, constants }) => { ); setSourceAccount(result?.source_account); setP2pConfig(result); + setConfig(res?.data?.kit); }); setEditMode(false); setStep(0); @@ -1808,6 +1816,7 @@ const mapStateToProps = (state) => ({ const mapDispatchToProps = (dispatch) => ({ setExchange: bindActionCreators(setExchange, dispatch), + setConfig: bindActionCreators(setConfig, dispatch), }); export default connect(mapStateToProps, mapDispatchToProps)(P2PSettings); diff --git a/web/src/containers/P2P/P2PDash.js b/web/src/containers/P2P/P2PDash.js index ae0ed6286c..cec116c668 100644 --- a/web/src/containers/P2P/P2PDash.js +++ b/web/src/containers/P2P/P2PDash.js @@ -381,7 +381,10 @@ const P2PDash = ({ STRINGS['P2P.ORDER_CREATION_DESC_2'], STRINGS['P2P.YOU_HAVE_TEXT'], - 15 {STRINGS['P2P.MINUTES']} + {STRINGS.formatString( + STRINGS['P2P.MINUTES_TEXT'], + p2p_config?.transaction_duration + )} , STRINGS['P2P.COMPLETE_PAYMENT_PROCESS'] )} @@ -1025,7 +1028,10 @@ const P2PDash = ({ {STRINGS.formatString( STRINGS['P2P.PAYMENT_TIME_LIMIT_LABEL'], - {STRINGS['P2P.30_MINUTES']} + {STRINGS.formatString( + STRINGS['P2P.MINUTES_TEXT'], + p2p_config?.transaction_duration + )} )} @@ -1552,6 +1558,7 @@ const P2PDash = ({ userProfile={userProfile} setTab={setTab} myMethods={myMethods} + p2p_config={p2p_config} /> ) ) : ( diff --git a/web/src/containers/P2P/P2PDashMobile.js b/web/src/containers/P2P/P2PDashMobile.js index 25664371af..f6159942e8 100644 --- a/web/src/containers/P2P/P2PDashMobile.js +++ b/web/src/containers/P2P/P2PDashMobile.js @@ -30,6 +30,7 @@ const P2PDashMobile = ({ userProfile, myMethods, setTab, + p2p_config, }) => { const [displayTrading, setDisplayTrading] = useState(false); const [spentAmountInput, setSpentAmountInput] = useState(false); @@ -493,7 +494,10 @@ const P2PDashMobile = ({ {STRINGS.formatString( STRINGS['P2P.PAYMENT_TIME_LIMIT_LABEL'], - {STRINGS['P2P.30_MINUTES']} + {STRINGS.formatString( + STRINGS['P2P.MINUTES_TEXT'], + p2p_config?.transaction_duration + )} )} diff --git a/web/src/containers/P2P/P2POrder/P2POrder.js b/web/src/containers/P2P/P2POrder/P2POrder.js index de6ce58334..96dd3d5108 100644 --- a/web/src/containers/P2P/P2POrder/P2POrder.js +++ b/web/src/containers/P2P/P2POrder/P2POrder.js @@ -1171,7 +1171,10 @@ const P2POrder = ({ {selectedOrder?.user_status === 'pending' && (
- {STRINGS['P2P.EXPECTED_TIME']} + {STRINGS.formatString( + STRINGS['P2P.EXPECTED_TIME'], + selectedOrder?.transaction_duration + )}
diff --git a/web/src/containers/P2P/P2POrder/P2POrderDetails.js b/web/src/containers/P2P/P2POrder/P2POrderDetails.js index ddf3976a67..ce8b8bd0bf 100644 --- a/web/src/containers/P2P/P2POrder/P2POrderDetails.js +++ b/web/src/containers/P2P/P2POrder/P2POrderDetails.js @@ -325,7 +325,10 @@ const P2POrderDetails = ({ {selectedOrder?.user_status === 'pending' && (
- {STRINGS['P2P.EXPECTED_TIME']} + {STRINGS.formatString( + STRINGS['P2P.EXPECTED_TIME'], + selectedOrder?.transaction_duration + )}
diff --git a/web/src/containers/P2P/Utilis.js b/web/src/containers/P2P/Utilis.js index 5fce888051..645318d79f 100644 --- a/web/src/containers/P2P/Utilis.js +++ b/web/src/containers/P2P/Utilis.js @@ -170,7 +170,9 @@ export const renderFeedback = ( export const Timer = ({ order }) => { const orderCreatedDate = new Date(order?.created_at)?.getTime(); - const [time, setTime] = useState({ min: 30, sec: 0 }); + const transactionTime = Number(order?.transaction_duration); + + const [time, setTime] = useState({ min: transactionTime, sec: 0 }); const [startTime] = useState(orderCreatedDate); const [timeLimitReached, setTimeLimitReached] = useState(false); const frameIdRef = useRef(); @@ -186,7 +188,7 @@ export const Timer = ({ order }) => { const update = () => { const now = Date.now(); const elapsed = Math.floor((now - startTime) / 1000); - const totalSeconds = 30 * 60 - elapsed; + const totalSeconds = transactionTime * 60 - elapsed; if (totalSeconds <= 0) { setTime({ min: 0, sec: 0 }); @@ -215,7 +217,7 @@ export const Timer = ({ order }) => { // eslint-disable-next-line react-hooks/exhaustive-deps }, [startTime, order]); - const totalSeconds = 30 * 60; + const totalSeconds = transactionTime * 60; const elapsedSeconds = Math.floor((Date.now() - startTime) / 1000); const percentage = (elapsedSeconds / totalSeconds) * 100; diff --git a/web/src/index.css b/web/src/index.css index ab9f6f333c..3fef1f93d0 100644 --- a/web/src/index.css +++ b/web/src/index.css @@ -14418,7 +14418,13 @@ table th { font-size: 11px; } .app_bar .app-bar-search-icon { padding: 2%; - font-size: 16px; } + font-size: 16px; + opacity: 0.6; } + .app_bar .app-bar-search-icon svg { + transform: scale(1.3); } + .app_bar .app-bar-search-icon:hover { + cursor: pointer; + opacity: 1; } .capitalize { text-transform: capitalize; } From 7fc7928d34fcf4123291836ad10b3e101b9dd65c Mon Sep 17 00:00:00 2001 From: ram Date: Thu, 28 Nov 2024 16:35:01 +0530 Subject: [PATCH 06/18] Changes for the pro trade improvements notion task --- web/src/components/Notification/NewOrder.js | 10 +++- .../Notification/_Notification.scss | 14 ++++++ web/src/config/lang/en.json | 2 + .../containers/Trade/components/OrderEntry.js | 16 +++++++ .../Trade/components/OrderEntryForm.js | 23 +++++++-- .../Trade/components/OrderEntryReview.js | 21 ++++++--- .../Trade/components/_OrderEntry.scss | 28 +++++++++++ web/src/index.css | 47 +++++++++++++++++++ 8 files changed, 149 insertions(+), 12 deletions(-) diff --git a/web/src/components/Notification/NewOrder.js b/web/src/components/Notification/NewOrder.js index 059d5576c2..5a1345ec3a 100644 --- a/web/src/components/Notification/NewOrder.js +++ b/web/src/components/Notification/NewOrder.js @@ -19,13 +19,19 @@ const generateRows = ({ order, pairData }) => { stringId: `TYPE,CHECK_ORDER_TYPE,TYPES_VALUES.${type},SIDES_VALUES.${side}`, label: STRINGS['TYPE'], value: ( -
+ {STRINGS.formatString( STRINGS['CHECK_ORDER_TYPE'], STRINGS[`TYPES_VALUES.${type}`], STRINGS[`SIDES_VALUES.${side}`] )} -
+ ), }); diff --git a/web/src/components/Notification/_Notification.scss b/web/src/components/Notification/_Notification.scss index 73af206fba..8e020cef6f 100644 --- a/web/src/components/Notification/_Notification.scss +++ b/web/src/components/Notification/_Notification.scss @@ -207,6 +207,20 @@ $logout--size-difference: 3rem; fill: $colors-main-black; } } + + .market-buy-side, + .market-sell-side { + background-color: $buy; + padding: 0% 5%; + color: $buy-bids-text; + border-radius: 5px; + margin-right: 2%; + } + + .market-sell-side { + background-color: $sell !important; + color: $sell-bids-text !important; + } } .notification-wrapper { color: $dark-font-sub-text-color; diff --git a/web/src/config/lang/en.json b/web/src/config/lang/en.json index 83029cc60e..c2af25200d 100644 --- a/web/src/config/lang/en.json +++ b/web/src/config/lang/en.json @@ -1179,6 +1179,8 @@ "LOGOUT_ERROR_INACTIVE": "You have been logged out because you have been inactive", "ORDER_ENTRY_BUTTON": "{0} {1}", "ORDER_ENTRY_ADVANCED": "Advanced", + "ORDER_ENTRY_SHOW_ADVANCE": "Show Advanced", + "ORDER_ENTRY_HIDE_ADVANCE": "Hide Advacned", "QUICK_TRADE_OUT_OF_LIMITS": "Order size is out of the limits", "QUICK_TRADE_TOKEN_USED": "Token has been used", "QUICK_TRADE_QUOTE_EXPIRED_FIRST_LINE": "Price quote has expired.", diff --git a/web/src/containers/Trade/components/OrderEntry.js b/web/src/containers/Trade/components/OrderEntry.js index 7e9fb1daa7..a0ffe35e95 100644 --- a/web/src/containers/Trade/components/OrderEntry.js +++ b/web/src/containers/Trade/components/OrderEntry.js @@ -419,6 +419,15 @@ class OrderEntry extends Component { event.preventDefault(); }; + onHandleNavigate = () => { + const { side, router, pair_base_display, pair_2_display } = this.props; + const viewAsset = + side === 'buy' + ? pair_2_display?.toLowerCase() + : pair_base_display?.toLowerCase(); + return router.push(`/wallet/${viewAsset}/deposit`); + }; + generateFormValues = (props, buyingPair = '') => { const { min_size, @@ -538,6 +547,13 @@ class OrderEntry extends Component { increment_size )}{' '} {side === 'buy' ? pair_2_display : pair_base_display} + this.onHandleNavigate()} + > + {' '} + +{' '} + diff --git a/web/src/containers/Trade/components/OrderEntryForm.js b/web/src/containers/Trade/components/OrderEntryForm.js index bd2855ef4b..083d2b3177 100644 --- a/web/src/containers/Trade/components/OrderEntryForm.js +++ b/web/src/containers/Trade/components/OrderEntryForm.js @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useState } from 'react'; import { Collapse } from 'antd'; import classnames from 'classnames'; import { connect } from 'react-redux'; @@ -50,10 +50,17 @@ const Form = ({ onReview, formKeyDown, }) => { + const [activeKey, setActiveKey] = useState([]); + const fields = getFields(formValues, type, orderType); const errorText = error || outsideFormError; const hasPostOnly = Object.entries(fields).filter(([key]) => key === 'postOnly').length !== 0; + + const handleChange = (key) => { + setActiveKey(key); + }; + return (
key !== 'postOnly') .map(renderFields)} {hasPostOnly && ( - + + - {STRINGS['ORDER_ENTRY_ADVANCED']} + {activeKey.includes('1') + ? STRINGS['ORDER_ENTRY_HIDE_ADVANCE'] + : STRINGS['ORDER_ENTRY_SHOW_ADVANCE']} } diff --git a/web/src/containers/Trade/components/OrderEntryReview.js b/web/src/containers/Trade/components/OrderEntryReview.js index fffb03b953..2328816d41 100644 --- a/web/src/containers/Trade/components/OrderEntryReview.js +++ b/web/src/containers/Trade/components/OrderEntryReview.js @@ -24,6 +24,7 @@ const Review = ({ onFeeStructureAndLimits, estimatedPrice, symbol, + side, }) => { // const orderAmountReceived = math.add( // math.fraction(orderPrice), @@ -33,15 +34,23 @@ const Review = ({ return (
-
+
- {type === 'market' - ? STRINGS['ESTIMATED_PRICE'] - : STRINGS['ORDER_PRICE']} + + {side?.charAt(0)?.toUpperCase() + side?.slice(1)} + + {type === 'market' ? ( + {STRINGS['ESTIMATED_PRICE']}: + ) : ( + {STRINGS['ORDER_PRICE']}: + )} - :
-
+
{type !== 'market' && ( {upToMarket diff --git a/web/src/containers/Trade/components/_OrderEntry.scss b/web/src/containers/Trade/components/_OrderEntry.scss index 2ef54e80f0..521d154494 100644 --- a/web/src/containers/Trade/components/_OrderEntry.scss +++ b/web/src/containers/Trade/components/_OrderEntry.scss @@ -62,6 +62,7 @@ } .trade_order_entry-review { + padding-top: 3%; border-top: 1px solid $trade-section-border-disabled--color; line-height: 1.5rem; .text-price { @@ -70,6 +71,22 @@ .blue-link { color: $link; } + .trade-order-price-text { + text-wrap: nowrap; + .market-buy-side, + .market-sell-side { + background-color: $buy; + padding: 1% 5%; + color: $buy-bids-text; + border-radius: 5px; + margin-right: 2%; + text-align: center; + } + } + .market-sell-side { + background-color: $sell !important; + color: $sell-bids-text !important; + } } .trade_order_entry-action_selector, @@ -90,6 +107,10 @@ margin-bottom: 0.5rem; } + .advacnce-text:hover { + opacity: 0.6; + } + .trade_order_entry-form-action { margin-top: 0.5rem; background-color: $theme-color !important; @@ -140,6 +161,13 @@ color: $colors-deactivate-color2; cursor: pointer; } + .add-icon { + border: 1px solid $colors-notifications-blue; + border-radius: 100%; + text-align: center; + padding: 0 4px 0 2px; + font-size: 10px; + } } .risky-trade-wrapper { diff --git a/web/src/index.css b/web/src/index.css index 3fef1f93d0..0668bb8568 100644 --- a/web/src/index.css +++ b/web/src/index.css @@ -3794,12 +3794,25 @@ table th { color: var(--calculated_trading_selling-related-text); font-weight: bold; } .trade_order_entry-wrapper.order_side-selector-sell .trade_order_entry-review { + padding-top: 3%; border-top: 1px solid var(--calculated_secondary-border); line-height: 1.5rem; } .trade_order_entry-wrapper.order_side-selector-sell .trade_order_entry-review .text-price { color: var(--labels_important-active-labels-text-graphics); } .trade_order_entry-wrapper.order_side-selector-sell .trade_order_entry-review .blue-link { color: var(--specials_buttons-links-and-highlights); } + .trade_order_entry-wrapper.order_side-selector-sell .trade_order_entry-review .trade-order-price-text { + text-wrap: nowrap; } + .trade_order_entry-wrapper.order_side-selector-sell .trade_order_entry-review .trade-order-price-text .market-buy-side, .trade_order_entry-wrapper.order_side-selector-sell .trade_order_entry-review .trade-order-price-text .market-sell-side { + background-color: var(--trading_buying-related-elements); + padding: 1% 5%; + color: var(--calculated_trading_buying-related-text); + border-radius: 5px; + margin-right: 2%; + text-align: center; } + .trade_order_entry-wrapper.order_side-selector-sell .trade_order_entry-review .market-sell-side { + background-color: var(--trading_selling-related-elements) !important; + color: var(--calculated_trading_selling-related-text) !important; } .trade_order_entry-wrapper.order_side-selector-sell .trade_order_entry-action_selector, .trade_order_entry-wrapper.order_side-selector-sell .trade_order_entry-form-action { height: 2.5rem; } @@ -3809,6 +3822,8 @@ table th { flex: 1; } .trade_order_entry-wrapper.order_side-selector-sell .trade_order_entry-form_inputs-wrapper .trade_order_entry-form_fields-wrapper > div:not(:last-child) { margin-bottom: 0.5rem; } + .trade_order_entry-wrapper.order_side-selector-sell .trade_order_entry-form_inputs-wrapper .advacnce-text:hover { + opacity: 0.6; } .trade_order_entry-wrapper.order_side-selector-sell .trade_order_entry-form_inputs-wrapper .trade_order_entry-form-action { margin-top: 0.5rem; background-color: var(--trading_selling-related-elements) !important; @@ -3869,12 +3884,25 @@ table th { color: var(--calculated_trading_buying-related-text); font-weight: bold; } .trade_order_entry-wrapper.order_side-selector-buy .trade_order_entry-review { + padding-top: 3%; border-top: 1px solid var(--calculated_secondary-border); line-height: 1.5rem; } .trade_order_entry-wrapper.order_side-selector-buy .trade_order_entry-review .text-price { color: var(--labels_important-active-labels-text-graphics); } .trade_order_entry-wrapper.order_side-selector-buy .trade_order_entry-review .blue-link { color: var(--specials_buttons-links-and-highlights); } + .trade_order_entry-wrapper.order_side-selector-buy .trade_order_entry-review .trade-order-price-text { + text-wrap: nowrap; } + .trade_order_entry-wrapper.order_side-selector-buy .trade_order_entry-review .trade-order-price-text .market-buy-side, .trade_order_entry-wrapper.order_side-selector-buy .trade_order_entry-review .trade-order-price-text .market-sell-side { + background-color: var(--trading_buying-related-elements); + padding: 1% 5%; + color: var(--calculated_trading_buying-related-text); + border-radius: 5px; + margin-right: 2%; + text-align: center; } + .trade_order_entry-wrapper.order_side-selector-buy .trade_order_entry-review .market-sell-side { + background-color: var(--trading_selling-related-elements) !important; + color: var(--calculated_trading_selling-related-text) !important; } .trade_order_entry-wrapper.order_side-selector-buy .trade_order_entry-action_selector, .trade_order_entry-wrapper.order_side-selector-buy .trade_order_entry-form-action { height: 2.5rem; } @@ -3884,6 +3912,8 @@ table th { flex: 1; } .trade_order_entry-wrapper.order_side-selector-buy .trade_order_entry-form_inputs-wrapper .trade_order_entry-form_fields-wrapper > div:not(:last-child) { margin-bottom: 0.5rem; } + .trade_order_entry-wrapper.order_side-selector-buy .trade_order_entry-form_inputs-wrapper .advacnce-text:hover { + opacity: 0.6; } .trade_order_entry-wrapper.order_side-selector-buy .trade_order_entry-form_inputs-wrapper .trade_order_entry-form-action { margin-top: 0.5rem; background-color: var(--trading_buying-related-elements) !important; @@ -3913,6 +3943,13 @@ table th { color: var(--labels_secondary-inactive-label-text-graphics); cursor: pointer; } +.trade_order_entry-wrapper .add-icon { + border: 1px solid var(--specials_buttons-links-and-highlights); + border-radius: 100%; + text-align: center; + padding: 0 4px 0 2px; + font-size: 10px; } + .risky-trade-wrapper { width: 32rem; } .risky-trade-wrapper .icon_title-wrapper .icon_title-svg { @@ -15907,6 +15944,16 @@ table th { fill: var(--labels_important-active-labels-text-graphics); } .notification-wrapper .new-order-notification svg .generate_api { fill: var(--labels_important-active-labels-text-graphics); } + .notification-wrapper .new-order-notification .market-buy-side, + .notification-wrapper .new-order-notification .market-sell-side { + background-color: var(--trading_buying-related-elements); + padding: 0% 5%; + color: var(--calculated_trading_buying-related-text); + border-radius: 5px; + margin-right: 2%; } + .notification-wrapper .new-order-notification .market-sell-side { + background-color: var(--trading_selling-related-elements) !important; + color: var(--calculated_trading_selling-related-text) !important; } .notification-wrapper .notification-wrapper { color: var(--labels_secondary-inactive-label-text-graphics); } .notification-wrapper .notification-wrapper .notification-title-wrapper { From 78ba094cf0849c716ce254c7b6f8f38b04baaed6 Mon Sep 17 00:00:00 2001 From: fetok12 Date: Mon, 2 Dec 2024 00:50:53 +0300 Subject: [PATCH 07/18] fix-module-splitting-css --- web/src/containers/Admin/General/index.css | 2 ++ 1 file changed, 2 insertions(+) diff --git a/web/src/containers/Admin/General/index.css b/web/src/containers/Admin/General/index.css index b0cee2817d..c4ec77f2c9 100644 --- a/web/src/containers/Admin/General/index.css +++ b/web/src/containers/Admin/General/index.css @@ -348,6 +348,8 @@ } h2, +h3, +.upgrade-section, .email-config-form, .input_field .ant-checkbox-wrapper span, .description-wrapper, From 13087372a5f2ad23bc77dd5b03133536e2956294 Mon Sep 17 00:00:00 2001 From: Ali Beikverdi Date: Mon, 2 Dec 2024 13:53:10 +0900 Subject: [PATCH 08/18] version update --- server/api/swagger/swagger.js | 2 +- server/package.json | 2 +- version | 2 +- web/package.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/server/api/swagger/swagger.js b/server/api/swagger/swagger.js index 56e2d80bad..c9cdfb8f72 100644 --- a/server/api/swagger/swagger.js +++ b/server/api/swagger/swagger.js @@ -4,7 +4,7 @@ const definition = { swagger: '2.0', info: { title: 'HollaEx Kit', - version: '2.13.2' + version: '2.13.3' }, host: 'api.hollaex.com', basePath: '/v2', diff --git a/server/package.json b/server/package.json index 838942ba4e..3bce1f0b38 100644 --- a/server/package.json +++ b/server/package.json @@ -1,5 +1,5 @@ { - "version": "2.13.2", + "version": "2.13.3", "private": false, "description": "HollaEx Kit", "keywords": [ diff --git a/version b/version index 0e83a9a9c4..a1a4224dd5 100644 --- a/version +++ b/version @@ -1 +1 @@ -2.13.2 +2.13.3 diff --git a/web/package.json b/web/package.json index d01bb80bc1..cdbf6dade2 100644 --- a/web/package.json +++ b/web/package.json @@ -1,6 +1,6 @@ { "name": "hollaex-kit", - "version": "2.13.2", + "version": "2.13.3", "private": true, "dependencies": { "@ant-design/compatible": "1.0.5", From bb12b1be1b9bf2f5256cb6f17bf9f1fddc4569a7 Mon Sep 17 00:00:00 2001 From: mytilene Date: Tue, 3 Dec 2024 15:10:42 +0800 Subject: [PATCH 09/18] Update mn.json --- web/src/config/lang/mn.json | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/web/src/config/lang/mn.json b/web/src/config/lang/mn.json index b79d4e884d..f439b91c57 100644 --- a/web/src/config/lang/mn.json +++ b/web/src/config/lang/mn.json @@ -2492,5 +2492,33 @@ "HELP_DESC": "Тусламж авах. Дэмжлэгтэй холбогдох", "TRANSACTION_DESC": "Бүх арилжаа, орлого ба зарлагыг хянах", "ONRAMPER_DESC": "Onramper ашиглан крипто худалдан авах ба зарах" - } + }, + "DESKTOP_ULTIMATE_SEARCH": { + "SEARCH_DESCRIPTION": "Хайх зүйлээ оруулна уу", + "SEARCH_PLACEHOILDER": "Хайх түлхүүр үг оруулна уу", + "POPULAR_FUNCTION": "Хэрэгцээт функцууд", + "SEARCH_RESULT": "Хайлтын үр дүн ({0})", + "PROFIT_LOSS_INFO_TEXT": "Түрийвчний баланс, Хөрөнгийн % хуваарилалт", + "FEES_INFO_TEXT": "Дансны түвшний арилжааны шимтгэл", + "WITHDRAWAL_INFO_TEXT": "Дансны түвшний зарлагын хязгаар", + "WALLET_INFO_TEXT": "Таны бүх хөрөнгө ба үлдэгдлийг харах", + "P2P_INFO_TEXT": "Хэрэглэгч хоорондын шууд арилжаа", + "ACCOUNT_INFO_TEXT": "Дансны арилжааны эзлэхүүний мэдээлэл", + "ASSET_INFO_TEXT": "Хөрөнгийн үнийн жагсаалт", + "SECURITY_2FA_INFO_TEXT": "OTP хоёр шатлалтай баталгаажуулалтын аюулгүй байдал", + "LOGIN_INFO_TEXT": "Таны нэвтрэлтийн түүх", + "SESSIONS_INFO_TEXT": "Одоогоор идэвхтэй байгаа нэвтрэлтийн сессүүдийг шалгах", + "BANK_INFO_TEXT": "Таны банк эсвэл төлбөрийн мэдээлэл", + "AUDIO_INFO_TEXT": "Аудио дууны эффект. Арилжааны санал", + "INTERFACE_INFO_TEXT": "Хэрэглэгчийн интерфэйсийн тохиргоо, Өнгө", + "NOTIFICATION_INFO_TEXT": "Анхааруулга ба мэдэгдэл, цонхнууд гэх мэт.", + "CHAT_INFO_TEXT": "Чатын тохиргоо", + "EMAIL_INFO_TEXT": "Таны холбоотой и-мэйл", + "PHONE_INFO_TEXT": "Таны холбоотой утасны дугаар", + "CRYPTO_PRICES": "Крипто үнийг хайж байна уу?", + "PRICE_LINK": "Үнэ харахын тулд энд дар.", + "BUY_TEXT": "АВАХ {0}", + "DEPOSIT_TEXT": "Орлого {0}" + + } } From ddafbc7ad52a40d3ab0f8e2cabc8fcad72a2f3bc Mon Sep 17 00:00:00 2001 From: Ali Beikverdi Date: Tue, 3 Dec 2024 16:13:51 +0900 Subject: [PATCH 10/18] cleaned up check config --- server/tools/dbs/checkConfig.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/server/tools/dbs/checkConfig.js b/server/tools/dbs/checkConfig.js index a31bf2a56b..54cc0d0a04 100644 --- a/server/tools/dbs/checkConfig.js +++ b/server/tools/dbs/checkConfig.js @@ -67,7 +67,6 @@ Status.findOne() balance_history_config: existingKitConfigurations.balance_history_config || {}, p2p_config: existingKitConfigurations.p2p_config || {}, fiat_fees: existingKitConfigurations.fiat_fees || {}, - balance_history_config: existingKitConfigurations.balance_history_config || {}, selectable_native_currencies: existingKitConfigurations?.selectable_native_currencies || [existingKitConfigurations.native_currency || process.env.NATIVE_CURRENCY || 'usdt'], auto_trade_config: existingKitConfigurations.auto_trade_config || {}, }; @@ -97,7 +96,6 @@ Status.findOne() }; const constants = { ...status.constants, url: API_HOST, domain: DOMAIN }; - console.log('hi', constants); return status.update( { kit, secrets, constants }, From fdd535438084eddc0de7511fc247795b13b0d490 Mon Sep 17 00:00:00 2001 From: mytilene Date: Tue, 3 Dec 2024 15:35:08 +0800 Subject: [PATCH 11/18] Update mn.json --- web/src/config/lang/mn.json | 46 ++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/web/src/config/lang/mn.json b/web/src/config/lang/mn.json index f439b91c57..7abee4444c 100644 --- a/web/src/config/lang/mn.json +++ b/web/src/config/lang/mn.json @@ -482,7 +482,7 @@ "START_PAYMENT_VERIFICATION": "Баталгаажуулалтыг эхлүүлэх", "PAYMENT_VERIFICATION_TEXT_1": "Төлбөрийн дансны дэлгэрэнгүй мэдээллийг доор нэмнэ үү.", "PAYMENT_VERIFICATION_TEXT_2": "Тэдгээрийг баталгаажуулсны дараа таны дансанд янз бүрийн мөнгөн тэмдэгтээр мөнгө авах, байршуулах илүү олон арга бий болно.", - "ADD_ANOTHER_PAYMENT_METHOD": "ӨӨР ТӨЛБӨРИЙН АРГА НЭМЭХ", + "ADD_ANOTHER_PAYMENT_METHOD": "ӨӨР төлбөрийн данс НЭМЭХ", "PAYMENT_VERIFICATION_HELP_TEXT": "Энэ хэсгийг баталгаажуулахын тулд та {0} хэсгийг бөглөх ёстой." }, "USER_SETTINGS": { @@ -1056,7 +1056,7 @@ "WITHDRAWAL_CONFIRM_NETWORK": "Сүлжээ", "WITHDRAWAL_CANCEL_BUTTON": "ХААХ", "WITHDRAWAL_CONFIRM_BUTTON": "ЗАРЛУУЛАХ БАТАЛГАА", - "WITHDRAW": "Татаж авах", + "WITHDRAW": "Зарлага", "REMOVE_TAG_NOTE_1": "Та шошгыг (мөн санамж, Дижитал ID, Шошго, Тэмдэглэл гэгддэг) устгах сонголтыг хийсэн.", "REMOVE_TAG_NOTE_2": "Ихэнх бирж, Хэтэвч болон бусад платформууд нь Tag шаарддаг. {0} {1}", "REMOVE_TAG_NOTE_3": "Дахин шалгана уу", @@ -1384,29 +1384,29 @@ "EARNING_SETTLEMENT": "Лавлагааны орлогын тооцоо", "DO_YOU_WANT_TO_SETTLE": "Та одоо бүх орлогоо шийдмээр байна уу?", "SETTLE": "ТОГТООХ", - "EARNING_DESC": "Орлогыг таны санал болгосон бүх хэрэглэгчдийн арилжааны үйл ажиллагаанаас илүү цагаар олж авдаг.", - "VIEW_HISTORY": "Орлогын түүхийг харах.", - "DATA_COLLECTED": "Эхлэн цуглуулсан өгөгдөл:", + "EARNING_DESC": "Найзын урамшуулал нь таны урьсан хүмүүсийн арилжааны идэвхиэс хамаарч өснө.", + "VIEW_HISTORY": "Орлогын түүх харах.", + "DATA_COLLECTED": "Цуглуулж эхэлсэн огноо:", "DATA_DESC": "Хамгийн сүүлийн үеийн орлогын тайланг авахыг хүсвэл", "SETTLE_HERE": "Эндээс орлогоо шийдээрэй.", "EARNT": "Нийт орлого:", - "UNSETTLED": "Тогтоогдоогүй орлого:", + "UNSETTLED": "Татаагүй орлого:", "INVITE_LINKS": "Таны лавлагааны урилга холбоосууд", "INVITE_LINKS_DESC": "Доорх холбоосыг найзуудтайгаа хуваалцаж, арилжаанаас шимтгэл авч эхлээрэй.", "CREATE_LINK": "Шинэ лавлах холбоос үүсгэ", "NO_LINK": "Та хараахан лавлагааны холбоос үүсгээгүй байна.", "SETTLEMENT_SUCCESS": "Төлбөр амжилттай боллоо!", "ALL_EVENTS": "Бүх төлбөр тооцооны үйл явдал", - "EVENTS_DESC": "Таны урьсан лавлагааны орлого олох бүх арга хэмжээг доор харуулав.", + "EVENTS_DESC": "Таны найзаа урьсан түүхийг дор харуулав.", "REFERRAL_CODE_ZERO": "Кодоо оруулна уу", - "REFERRAL_EARNINGS": "Лавлагааны орлого", + "REFERRAL_EARNINGS": "Найзын урамшуулал", "DISCOUNT_HOVER_CONTENT": "Холбоосдоо хөнгөлөлт нэмэх нь бүртгүүлэх, арилжааны үйл ажиллагааг нэмэгдүүлэх, таны лавлагааны холбоосоос бий болсон идэвхгүй орлогыг нэмэгдүүлэхэд тусална.", - "REFERRAL_INFO": "Лавлагаа болон орлогын мэдээлэл", - "BACK_TO_SUMMARY": "Дүгнэлт хуудас руу", - "INSUFFICIENT_LABEL": "Төлбөр тооцооны дүн хангалтгүй", - "INSUFFICIENT_INFO_1": "Таны орлого одоогоор тооцоо хийхэд хангалтгүй байна. Лавлах холбоосоо ашиглан илүү олон гишүүн урьж, шийдэгдээгүй орлогоо хүлээнэ үү {0} {1}", + "REFERRAL_INFO": "Найзаа урьсан урамшуулал", + "BACK_TO_SUMMARY": "Ерөнхий мэдээлэл рүү буцах", + "INSUFFICIENT_LABEL": "Урамшууллын дүн хангалтгүй байна", + "INSUFFICIENT_INFO_1": "Таны орлого одоогоор тооцоо хийхэд хангалтгүй байна. Найз урих линк ашиглан илүү олон гишүүн урьж, шийдэгдээгүй орлогоо хүлээнэ үү {0} {1}", "INSUFFICIENT_INFO_2": "1-ээс хэтрэх", - "GO_TO_REFERRAL": "Лавлагаа руу очно уу" + "GO_TO_REFERRAL": "Найз урих хэсэг рүү очих" }, "NOT_LOGGEDIN": { "TXT_1": "Арилжаанд оролцохын тулд та нэвтрэх ёстой", @@ -2165,26 +2165,26 @@ "PAYMENT_FIELD_INFO": "Энэхүү шинэ төлбөрийн талбар нь P2P оролцогчдод фиат валютын шилжүүлэгт туслах нэмэлт мэдээлэл юм. Энэ нь төлбөрийн аргын дансны дэлгэрэнгүй мэдээллийг агуулна. Энэ нь утасны дугаар, хэрэглэгчийн нэр, дансны өвөрмөц дугаар гэх мэт шаардлагатай мэдээллийг агуулж болно.", "PAYMENT_DETAIL_NAME": "Төлбөрийн дэлгэрэнгүй мэдээллийн нэр", "REQUIRED_OR_OPTIONAL": "Шаардлагатай эсвэл сонголтот", - "CREATE_NEW_PAYMENT_METHODS": "Шинэ төлбөрийн арга үүсгэх болон нэмэх", - "MANUAL_PAYMENT_METHOD_ENTRY": "P2P платформд төлбөрийн арга нэмэхийн тулд арга нэр болон шаардлагатай төлбөрийн дэлгэрэнгүй мэдээллийг гараар оруулна. Жишээ нь, PayPal нь санхүү шилжүүлэхэд и-мэйл хаяг ашигладаг.", - "USERS_PAYMENT_SELECTION": "Төлбөрийн арга нэмэгдсэний дараа P2P худалдаачид болон хэрэглэгчид үүнийг сонгон, төлбөр хүлээн авах болон хийх үед шаардлагатай мэдээллийг оруулах боломжтой болно. Тэдний өгсөн дэлгэрэнгүй мэдээллийг P2P гүйлгээнд нөгөө талд хуваалцана.", + "CREATE_NEW_PAYMENT_METHODS": "Шинэ төлбөрийн данс үүсгэх", + "MANUAL_PAYMENT_METHOD_ENTRY": "P2P платформд төлбөрийн данс нэмэхийн тулд арга нэр болон шаардлагатай төлбөрийн дэлгэрэнгүй мэдээллийг гараар оруулна. Жишээ нь, PayPal нь санхүү шилжүүлэхэд и-мэйл хаяг ашигладаг.", + "USERS_PAYMENT_SELECTION": "төлбөрийн данс нэмэгдсэний дараа P2P худалдаачид болон хэрэглэгчид үүнийг сонгон, төлбөр хүлээн авах болон хийх үед шаардлагатай мэдээллийг оруулах боломжтой болно. Тэдний өгсөн дэлгэрэнгүй мэдээллийг P2P гүйлгээнд нөгөө талд хуваалцана.", "METHOD_NAME_AND_DETAIL": "Аргын нэр болон үндсэн төлбөрийн дэлгэрэнгүй", "ADD_NEW_PAYMENT_METHODS": "Шинэ төлбөрийн аргууд сонгох:", "DETAIL_NAME": "Төлбөрийн дэлгэрэнгүй мэдээллийн нэр", "DETAIL_VALUE": "Төлбөрийн дэлгэрэнгүй мэдээллийн утга", "DETAIL_REQUIRED": "Шаардлагатай", - "IMPORTANT_DETAIL": "(Чухал төлбөрийн дэлгэрэнгүй)", - "DETAIL_OPTIONAL": "Сонголтот", - "OPTIONAL_DETAIL": "(Сонголтот төлбөрийн дэлгэрэнгүй)", + "IMPORTANT_DETAIL": "(Заавал бөглөх төлбөрийн дэлгэрэнгүй)", + "DETAIL_OPTIONAL": "Нэмэлт", + "OPTIONAL_DETAIL": "(Нэмэлт төлбөрийн дэлгэрэнгүй)", "ADD_NEW_PAYMENT_FIELD": "Шинэ төлбөрийн дэлгэрэнгүй мэдээллийн талбар нэмэх", - "PAYMENT_METHOD_CREATED": "Төлбөрийн арга үүссэн! Админы баталгаажилтыг хүлээж байна", - "PAYMENT_METHOD_DELETED": "Төлбөрийн арга устгагдлаа.", - "PAYMENT_METHOD_UPDATED": "Төлбөрийн арга шинэчлэгдлээ.", + "PAYMENT_METHOD_CREATED": "төлбөрийн данс үүссэн! Админы баталгаажилтыг хүлээж байна", + "PAYMENT_METHOD_DELETED": "төлбөрийн данс устгагдлаа.", + "PAYMENT_METHOD_UPDATED": "төлбөрийн данс шинэчлэгдлээ.", "CRYPTO": "Крипто: ", "INPUT_SPEND_AMOUNT": "Зарцуулалтын хэмжээ оруулах", "INPUT_SELL_AMOUNT": "Зарах хэмжээ оруулах", "TIMES": "удаа", - "FEEDBACK": "Санал", + "FEEDBACK": "Үнэлгээ", "ASSET": "Хөрөнгө: ", "CUSTOM": "Өөрчлөн", "CANCELLED": "Цуцлагдсан", From cb806f4184f1ed3b2e1e0f35f2749d65cec8a29b Mon Sep 17 00:00:00 2001 From: mytilene Date: Tue, 3 Dec 2024 15:39:01 +0800 Subject: [PATCH 12/18] Update mn.json --- web/src/config/lang/mn.json | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/web/src/config/lang/mn.json b/web/src/config/lang/mn.json index 7abee4444c..5c74f92876 100644 --- a/web/src/config/lang/mn.json +++ b/web/src/config/lang/mn.json @@ -2345,7 +2345,7 @@ "STORAGE": "Хадгалалт", "FUNDS": "Хөрөнгө", "BALANCE": "Үлдэгдэл", - "CRYPTO_WALLET": "Крипто түрийвч", + "CRYPTO_WALLET": "Крипто Хэтэвч", "MY": "миний", "ENGLISH": "англи", "LOCALIZATION": "Орон нутгийн тохиргоо", @@ -2396,7 +2396,7 @@ "CONTACT": "Холбоо барих", "EMAIL_ADDRESS": "И-мэйл хаяг", "MAIL": "И-мэйл", - "EMAIL_CONTACT": "И-мэйл холбоо", + "EMAIL_CONTACT": "И-мэйл контакт", "KYC": "KYC", "SMS": "SMS", "KYC_CAPS": "KYC", @@ -2433,7 +2433,7 @@ "LIGHT": "Гэрэлтэй", "WITHDRAWAL_ADDRESSES": "Зарлагын хаягууд", "CRYPTO_ADDRESSES": "Крипто хаягууд", - "WALLET_ADDRESSES": "Түрийвчний хаягууд", + "WALLET_ADDRESSES": "Хэтэвчний хаягууд", "SAVED_ADDRESSES": "Хадгалагдсан хаягууд", "ADDRESS_BOOK": "Хаягийн дэвтэр", "WHITE_LISTED": "цагаан жагсаалтад орсон" @@ -2467,26 +2467,26 @@ "OTHERS": "Бусад", "SUMMARY_DESCRIPTION": "Дансны түвшний мэдээлэл ба хандалт", "FEES_LIMITS_DESC": "Арилжааны болон зарлагын шимтгэл. Дансны хязгаарлалт", - "VOLUME_DESC": "Арилжааны эзлэхүүний хураангуй", - "DEPOSIT_DESC": "Түрийвчний орлогын хөрөнгө оруулалтын сонголтууд", + "VOLUME_DESC": "Арилжааны хэмжээ", + "DEPOSIT_DESC": "Орлого хийх сонголтууд", "BALANCE_DESC": "Таны бүх хөрөнгийн үлдэгдэл", - "PERFORMANCE_DESC": "Түрийвчний ашиг ба алдагдал", + "PERFORMANCE_DESC": "Хэтэвчний ашиг ба алдагдал", "HISTORY_DESC": "Бүх арилжаа, орлого ба зарлагыг хянах", "ADDRESS_BOOK_DESC": "Зарлагын хаягийн дэвтэр", - "WITHDRAW_DESC": "Түрийвчний зарлага ба шилжүүлэг", - "ASSETS_DESC": "Үнэ хянах ба хөрөнгийн мэдээлэл олж мэдэх", + "WITHDRAW_DESC": "Хэтэвчний зарлага ба шилжүүлэг", + "ASSETS_DESC": "Виртуал хөрөнгийн мэдээлэл", "CONVERT_DESC": "Хялбар хөрвүүлэлт", - "MARKET_DESC": "Спот арилжааны захиалгын номын зах зээл.", + "MARKET_DESC": "Спот арилжааны захиалгын зах зээл.", "P2P_DESC": "Крипто арилжаа", - "REFERRAL_DESC": "Найзуудаа урьж пассив орлого олох", - "CEFI_STAKE_DESC": "Биржийн түрийвчнээс хөрөнгө оруулах", - "DEFI_STAKE_DESC": "Түрийвч холбож хөрөнгө оруулах", + "REFERRAL_DESC": "Найзуудаа урьж урамшуулал авах", + "CEFI_STAKE_DESC": "Төвлөрсөн стэйкинг хийх", + "DEFI_STAKE_DESC": "Хэтэвч холбож хөрөнгө оруулах", "BUY_CRYPTO_DESC": "Банкны шууд шилжүүлэг эсвэл картаар худалдан авах", "SECURITY_DESC": "Дансны 2FA, нууц үг ба API-ууд", "VERIFICATION_DESC": "Дансны баталгаажуулалт", - "SETTINGS_DESC": "Интерфэйс болон бусад дансны тохиргоо", + "SETTINGS_DESC": "Интерфэйс болон бусад тохиргоо", "SUMMARY_PAGE": "Хураангуйн хуудас", - "SIGNOUT_DESC": "Дансаа гарах", + "SIGNOUT_DESC": "Гарах", "LANGUAGE_DESC": "Хэлний тохиргоо өөрчлөх", "API_DESC": "API түлхүүр ашиглан дансанд програм хангамжаар хандах", "HELP_DESC": "Тусламж авах. Дэмжлэгтэй холбогдох", @@ -2498,7 +2498,7 @@ "SEARCH_PLACEHOILDER": "Хайх түлхүүр үг оруулна уу", "POPULAR_FUNCTION": "Хэрэгцээт функцууд", "SEARCH_RESULT": "Хайлтын үр дүн ({0})", - "PROFIT_LOSS_INFO_TEXT": "Түрийвчний баланс, Хөрөнгийн % хуваарилалт", + "PROFIT_LOSS_INFO_TEXT": "Хэтэвчний баланс, Хөрөнгийн % хуваарилалт", "FEES_INFO_TEXT": "Дансны түвшний арилжааны шимтгэл", "WITHDRAWAL_INFO_TEXT": "Дансны түвшний зарлагын хязгаар", "WALLET_INFO_TEXT": "Таны бүх хөрөнгө ба үлдэгдлийг харах", From a8d49103d2702fdbaad3db05284622645d36a420 Mon Sep 17 00:00:00 2001 From: mytilene Date: Tue, 3 Dec 2024 16:16:36 +0800 Subject: [PATCH 13/18] Update mn.json --- web/src/config/lang/mn.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/src/config/lang/mn.json b/web/src/config/lang/mn.json index 5c74f92876..560ade8af5 100644 --- a/web/src/config/lang/mn.json +++ b/web/src/config/lang/mn.json @@ -27,7 +27,7 @@ "ADD_FILES": "ФАЙЛ НЭМЭХ", "OR_TEXT": "Эсвэл", "CONTACT_US_TEXT": "Холбоо барих", - "HELPFUL_RESOURCES_TEXT": "Хэрэгтэй мэдээллүүд", + "HELPFUL_RESOURCES_TEXT": "Тусламжын хэсэг", "HELP_RESOURCE_GUIDE": { "CONTACT_US": "холбоо барих", "TEXT": "Танд тусламж хэрэгтэй болон асуух асуулт байвал {0} хандах, эсвэл и-мэйл илгээнэ үү." From 69ecd71e4cf09c3234f6c3c63f68acf5a26da253 Mon Sep 17 00:00:00 2001 From: ram Date: Tue, 3 Dec 2024 22:54:32 +0530 Subject: [PATCH 14/18] Updated the ultimate search workflow --- .../containers/App/MobileBarMoreOptions.js | 62 ++++++++++++------- 1 file changed, 41 insertions(+), 21 deletions(-) diff --git a/web/src/containers/App/MobileBarMoreOptions.js b/web/src/containers/App/MobileBarMoreOptions.js index a84811a985..5f195972fa 100644 --- a/web/src/containers/App/MobileBarMoreOptions.js +++ b/web/src/containers/App/MobileBarMoreOptions.js @@ -48,6 +48,7 @@ const MobileBarMoreOptions = ({ quickTrade, getRemoteRoutes, assets, + user, }) => { const [search, setSearch] = useState(''); const [isDialogOpen, setIsDialogOpen] = useState(false); @@ -80,23 +81,35 @@ const MobileBarMoreOptions = ({ const getSymbol = searchByName ?.filter((data) => { - return ( - search?.length > 1 && - (search - ?.toLowerCase() - ?.split(' ') - ?.some((content) => - content?.startsWith(data?.fullname?.toLowerCase()) - ) || - search - ?.toLowerCase() - ?.split(' ') - ?.some((content) => - content?.startsWith(data?.symbol?.toLowerCase()) - )) - ); + const searchTerms = search?.toLowerCase()?.trim()?.split(' '); + const fullname = data?.fullname?.toLowerCase() || ''; + const symbol = data?.symbol?.toLowerCase() || ''; + + if (search?.length > 1) { + const lastSearchTerm = searchTerms[searchTerms?.length - 1]; + const matches = searchTerms?.some( + (term) => fullname?.startsWith(term) || symbol?.startsWith(term) + ); + const lastMatch = + fullname?.startsWith(lastSearchTerm) || + symbol?.startsWith(lastSearchTerm); + + return matches || lastMatch; + } + return false; }) ?.sort((a, b) => { + const lastSearchTerm = search?.toLowerCase()?.split(' ')?.pop(); + const isLastTermMatchA = + a?.fullname?.toLowerCase()?.startsWith(lastSearchTerm) || + a?.symbol?.toLowerCase()?.startsWith(lastSearchTerm); + const isLastTermMatchB = + b?.fullname?.toLowerCase()?.startsWith(lastSearchTerm) || + b?.symbol?.toLowerCase()?.startsWith(lastSearchTerm); + + if (isLastTermMatchA && !isLastTermMatchB) return -1; + if (!isLastTermMatchA && isLastTermMatchB) return 1; + const indexA = pinnedAsset?.indexOf(a?.symbol?.toLowerCase()); const indexB = pinnedAsset?.indexOf(b?.symbol?.toLowerCase()); @@ -819,15 +832,21 @@ const MobileBarMoreOptions = ({ STRINGS[option?.iconText ? option?.iconText : option?.string_id] || ''; const isContent = option?.searchContent?.some((content) => - searchText?.some((searchValue) => - content?.toLowerCase()?.includes(searchValue) + searchText?.some( + (searchValue) => + content?.toLowerCase()?.startsWith(searchValue) && + option?.isDisplay ) ); - const isIconText = searchText?.some((content) => - iconTextMatch?.toLowerCase()?.includes(content) + const isIconText = searchText?.some( + (content) => + iconTextMatch?.toLowerCase()?.startsWith(content) && + option?.isDisplay ); - const isIconId = searchText?.some((content) => - option?.icon_id?.toLowerCase()?.includes(content) + const isIconId = searchText?.some( + (content) => + option?.icon_id?.toLowerCase()?.startsWith(content) && + option?.isDisplay ); return (isIconId && isIconText) || isContent || isIconId || isIconText; @@ -1276,6 +1295,7 @@ const MobileBarMoreOptions = ({ }; const mapStateToProps = (store) => ({ + user: store.user, features: store.app.features, coins: store.app.coins, pinnedAsset: store.app.pinned_assets, From 5207ece49cf8bb570f2a1e2c8fb101c28d078bb4 Mon Sep 17 00:00:00 2001 From: fetok12 Date: Wed, 4 Dec 2024 03:35:00 +0300 Subject: [PATCH 15/18] chain-trade-refinements --- server/api/controllers/order.js | 2 +- server/utils/hollaex-tools-lib/tools/order.js | 77 ++++++++++--------- 2 files changed, 43 insertions(+), 36 deletions(-) diff --git a/server/api/controllers/order.js b/server/api/controllers/order.js index 13adefa0a3..ed315643de 100644 --- a/server/api/controllers/order.js +++ b/server/api/controllers/order.js @@ -159,7 +159,7 @@ const orderExecute = (req, res) => { } }; - toolsLib.order.executeUserOrder(user_id, opts, token) + toolsLib.order.executeUserOrder(user_id, opts, token, req) .then((result) => { const { symbol, side, size, price } = result; executeHedging(symbol, side, size, price); diff --git a/server/utils/hollaex-tools-lib/tools/order.js b/server/utils/hollaex-tools-lib/tools/order.js index d1b481d22a..561931d313 100644 --- a/server/utils/hollaex-tools-lib/tools/order.js +++ b/server/utils/hollaex-tools-lib/tools/order.js @@ -47,13 +47,13 @@ const createUserOrderByKitId = (userKitId, symbol, side, size, type, price = 0, }); }; -const executeUserOrder = async (user_id, opts, token) => { +const executeUserOrder = async (user_id, opts, token, req) => { const storedToken = await client.getAsync(token); if (!storedToken) { throw new Error(TOKEN_EXPIRED); } const { symbol, price, side, size, type, chain } = JSON.parse(storedToken); - if (chain) { return executeUserChainTrade(user_id, token) }; + if (chain) { return executeUserChainTrade(user_id, token, opts, req) }; if (size < 0) { throw new Error(INVALID_SIZE); @@ -357,10 +357,10 @@ const getUserQuickTrade = async (spending_currency, spending_amount, receiving_a else { let symbol = spending_amount ? `${spending_currency}-${receiving_currency}` : `${receiving_currency}-${spending_currency}`; let size = spending_amount || receiving_amount; - let result = await getUserChainTradeQuote(bearerToken, symbol, size, ip); + let result = await getUserChainTradeQuote(bearerToken, symbol, size, ip, opts, req); if (spending_amount == null && result?.quote_amount) { - const spendingAmount = await getUserChainTradeQuote(bearerToken, `${spending_currency}-${receiving_currency}`, result.quote_amount, ip); + const spendingAmount = await getUserChainTradeQuote(bearerToken, `${spending_currency}-${receiving_currency}`, result.quote_amount, ip, opts, req); result.token = spendingAmount?.token; } if (result?.quote_amount) { @@ -1349,7 +1349,7 @@ const findConversionRate = (startCurrency, endCurrency, rates, visited = new Set visited.delete(startCurrency); return shortestPath; } -const getUserChainTradeQuote = async (bearerToken, symbol, size = 1, ip, id = null, network_id = null) => { +const getUserChainTradeQuote = async (bearerToken, symbol, size = 1, ip, opts, req = null, id = null, network_id = null) => { if ( !getKitConfig().chain_trade_config || !getKitConfig().chain_trade_config.active @@ -1386,22 +1386,29 @@ const getUserChainTradeQuote = async (bearerToken, symbol, size = 1, ip, id = nu prices = data ? JSON.parse(data) : {}; } - //Find all the available prices with their types on the exchange. + //Find Trade Paths if(!data) { - for (const rate of quickTrades) { + for (const rate of quickTrades) { + prices[rate.symbol] = { type: rate.type, price: null, active: rate.active }; + } + const result = findConversionRate(from, to, prices, new Set(), size); + for(const rate of result?.trades) { + if(!rate.active) continue; try { - if (rate.type === 'pro' && rate.active) { + if (rate.type === 'pro') { prices[rate.symbol] = { type: rate.type, price: tickers[rate.symbol].open }; - } else { + } + else { const assets = rate.symbol.split('-'); - const quotePrice = await getUserQuickTrade(assets[0], 1, null, assets[1], bearerToken, ip, { additionalHeaders: null }, { headers: { 'api-key': null } }, { user_id: id, network_id }); - prices[rate.symbol] = { type: rate.type, price: quotePrice.receiving_amount, token: quotePrice?.token || null } + const quotePrice = await getUserQuickTrade(assets[0], 1, null, assets[1], bearerToken, ip, opts, req, { user_id: id, network_id }); + prices[rate.symbol] = { type: rate.type, price: quotePrice.receiving_amount, token: quotePrice?.token || null} } } catch (error) { - continue; + throw new Error(error.message + ` symbol: ${rate.symbol}`) } } } + let hasNetworkBroker = Object.values(prices || {}).find(price => price.type === 'network'); if (!hasNetworkBroker) await client.setexAsync(`${user_id}-${symbol}-rates`, 25, JSON.stringify(prices)); @@ -1418,20 +1425,6 @@ const getUserChainTradeQuote = async (bearerToken, symbol, size = 1, ip, id = nu } if (result?.totalRate && user_id) { - try { - for(const trade of result?.trades) { - // This is for getting the right token for network brokers, because we obtained the size for the trade so we need to get a new token with the updated size - if (trade.type === 'network') { - const assets = trade.symbol.split('-'); - const quotePrice = await getUserQuickTrade(assets[0], 1, null, assets[1], bearerToken, ip, { additionalHeaders: null }, { headers: { 'api-key': null } }, { user_id: id, network_id }); - trade.token = quotePrice?.token || null; - } - } - - } catch (error) { - throw new Error('Rate not found!'); - } - result.symbol = symbol; result.size = size; result.price = result?.totalRate / size; @@ -1451,7 +1444,7 @@ const getUserChainTradeQuote = async (bearerToken, symbol, size = 1, ip, id = nu return { token, quote_amount: result?.totalRate }; } -const executeUserChainTrade = async (user_id, userToken) => { +const executeUserChainTrade = async (user_id, userToken, opts, req) => { if ( !getKitConfig().chain_trade_config || !getKitConfig().chain_trade_config.active @@ -1486,14 +1479,14 @@ const executeUserChainTrade = async (user_id, userToken) => { let lastRate; if (tradeInfo.quote_asset !== currency) { - const initialRate = await getUserChainTradeQuote(null, `${tradeInfo.base_asset}-${currency}`, tradeInfo.size, null, sourceUser.id, sourceUser.network_id); + const initialRate = await getUserChainTradeQuote(null, `${tradeInfo.base_asset}-${currency}`, tradeInfo.size, null, opts, req, sourceUser.id, sourceUser.network_id); if (!initialRate?.token) { throw new Error('Rate not found!'); }; - lastRate = await getUserChainTradeQuote(null, `${currency}-${tradeInfo.quote_asset}`, JSON.parse(await client.getAsync(initialRate.token)).totalRate, null, sourceUser.id, sourceUser.network_id); + lastRate = await getUserChainTradeQuote(null, `${currency}-${tradeInfo.quote_asset}`, JSON.parse(await client.getAsync(initialRate.token)).totalRate, null, opts, req, sourceUser.id, sourceUser.network_id); } else { - lastRate = await getUserChainTradeQuote(null, `${tradeInfo.base_asset}-${currency}`, tradeInfo.size, null, sourceUser.id, sourceUser.network_id); + lastRate = await getUserChainTradeQuote(null, `${tradeInfo.base_asset}-${currency}`, tradeInfo.size, null, opts, req, sourceUser.id, sourceUser.network_id); } if (!lastRate?.token) { @@ -1503,7 +1496,7 @@ const executeUserChainTrade = async (user_id, userToken) => { const token = JSON.parse(await client.getAsync(lastRate.token)); let successfulTrades = []; try { - successfulTrades = await executeTrades(token, sourceUser); + successfulTrades = await executeTrades(token, sourceUser, opts); } catch (error) { throw new Error(error.message); } @@ -1560,13 +1553,13 @@ const executeUserChainTrade = async (user_id, userToken) => { } try { // get the currency amount back for the middle man account - const { token } = await getUserChainTradeQuote(null, `${tradeInfo.base_asset}-${currency}`, tradeInfo.size, null, sourceUser.id, sourceUser.network_id); + const { token } = await getUserChainTradeQuote(null, `${tradeInfo.base_asset}-${currency}`, tradeInfo.size, null, opts, req, sourceUser.id, sourceUser.network_id); if (!token) { throw new Error('Rate not found!'); }; const sourceTradeInfo = JSON.parse(await client.getAsync(token)); - await executeTrades(sourceTradeInfo, sourceUser); + await executeTrades(sourceTradeInfo, sourceUser, opts); } catch (error) { const admin = await getUserByKitId(1); @@ -1584,7 +1577,7 @@ const executeUserChainTrade = async (user_id, userToken) => { return result; } -const executeTrades = async (tradeInfo, sourceUser) => { +const executeTrades = async (tradeInfo, sourceUser, opts) => { const successfulTrades = []; for (const trade of tradeInfo?.trades) { @@ -1646,7 +1639,21 @@ const executeTrades = async (tradeInfo, sourceUser) => { else if (type === 'network') { const tierUser = getKitTier(sourceUser.verification_level); const fee = tierUser.fees.taker[symbol]; - res = await getNodeLib().executeQuote(trade?.token, sourceUser.network_id, fee); + const coins = trade.symbol.split('-'); + let spending_currency = trade.side === 'sell' ? coins[0] : coins[1]; + let receiving_currency = trade.side === 'sell' ? coins[1] : coins[0]; + let spending_amount = trade.side === 'sell' ? size : new BigNumber(price).multipliedBy(size).toNumber(); + + const priceValues = await getNodeLib().getQuote( + sourceUser.network_id, + spending_currency, + spending_amount, + receiving_currency, + null, + opts + ); + + res = await getNodeLib().executeQuote(priceValues?.token, sourceUser.network_id, fee); } successfulTrades.push(res); From d7d9d1aff61f5a16480b2102bf7a654c2d51549c Mon Sep 17 00:00:00 2001 From: fetok12 Date: Thu, 5 Dec 2024 03:39:04 +0300 Subject: [PATCH 16/18] chain-trade-calculate-one-by-one --- server/utils/hollaex-tools-lib/tools/order.js | 62 +++++++++++++++---- 1 file changed, 51 insertions(+), 11 deletions(-) diff --git a/server/utils/hollaex-tools-lib/tools/order.js b/server/utils/hollaex-tools-lib/tools/order.js index 561931d313..2e78b6dc34 100644 --- a/server/utils/hollaex-tools-lib/tools/order.js +++ b/server/utils/hollaex-tools-lib/tools/order.js @@ -1349,6 +1349,42 @@ const findConversionRate = (startCurrency, endCurrency, rates, visited = new Set visited.delete(startCurrency); return shortestPath; } +const findTradeAmount = (trades, initialFunds) => { + const availableFunds = { ...initialFunds }; + const results = []; + + for (const trade of trades) { + const [baseCurrency, quoteCurrency] = trade.symbol.split('-'); + const { side, size, price } = trade; + + let spendingCurrency, spendingAmount, receivingCurrency, receivingAmount; + + if (side === 'sell') { + spendingCurrency = baseCurrency; + spendingAmount = size + receivingCurrency = quoteCurrency; + receivingAmount = size * price; + } else if (side === 'buy') { + spendingCurrency = quoteCurrency; + spendingAmount = availableFunds[quoteCurrency] || 0; + receivingCurrency = baseCurrency; + receivingAmount = spendingAmount / price; + } + + availableFunds[spendingCurrency] = (availableFunds[spendingCurrency] || 0) - spendingAmount; + availableFunds[receivingCurrency] = (availableFunds[receivingCurrency] || 0) + receivingAmount; + + results.push({ + trade, + spending_currency: spendingCurrency, + spending_amount: spendingAmount, + receiving_currency: receivingCurrency, + receiving_amount: receivingAmount + }); + } + + return results; +} const getUserChainTradeQuote = async (bearerToken, symbol, size = 1, ip, opts, req = null, id = null, network_id = null) => { if ( !getKitConfig().chain_trade_config || @@ -1379,7 +1415,6 @@ const getUserChainTradeQuote = async (bearerToken, symbol, size = 1, ip, opts, r const quickTrades = getQuickTrades(); let data = null; - const tickers = await getTickers(); let prices = {}; if (user_id) { data = await client.getAsync(`${user_id}-${symbol}-rates`); @@ -1389,24 +1424,29 @@ const getUserChainTradeQuote = async (bearerToken, symbol, size = 1, ip, opts, r //Find Trade Paths if(!data) { for (const rate of quickTrades) { - prices[rate.symbol] = { type: rate.type, price: null, active: rate.active }; + prices[rate.symbol] = { type: rate.type, price: NaN, active: rate.active }; } const result = findConversionRate(from, to, prices, new Set(), size); + let index = 0; for(const rate of result?.trades) { - if(!rate.active) continue; + if(!rate.active) { index++; continue}; + try { - if (rate.type === 'pro') { - prices[rate.symbol] = { type: rate.type, price: tickers[rate.symbol].open }; - } - else { - const assets = rate.symbol.split('-'); - const quotePrice = await getUserQuickTrade(assets[0], 1, null, assets[1], bearerToken, ip, opts, req, { user_id: id, network_id }); - prices[rate.symbol] = { type: rate.type, price: quotePrice.receiving_amount, token: quotePrice?.token || null} - } + + const trades = findTradeAmount(result.trades, { [from]: size }); + + const quotePrice = await getUserQuickTrade(trades[index].spending_currency, trades[index].spending_amount, trades[index].receiving_amount, trades[index].receiving_currency, bearerToken, ip, opts, req, { user_id: id, network_id }); + + const calculatedPrice = rate.side === 'sell' ? quotePrice.receiving_amount / quotePrice.spending_amount : quotePrice.spending_amount / quotePrice.receiving_amount; + result.trades[index].price = calculatedPrice; + prices[rate.symbol] = { type: rate.type, price: calculatedPrice, token: quotePrice?.token || null} + + index++; } catch (error) { throw new Error(error.message + ` symbol: ${rate.symbol}`) } } + } let hasNetworkBroker = Object.values(prices || {}).find(price => price.type === 'network'); From ef797f854cd570a6478efd95f407d771feeade38 Mon Sep 17 00:00:00 2001 From: fetok12 Date: Fri, 6 Dec 2024 02:14:26 +0300 Subject: [PATCH 17/18] Fix selectable native currency override --- web/src/containers/Admin/General/General.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/web/src/containers/Admin/General/General.js b/web/src/containers/Admin/General/General.js index 72017eb751..f70ad29ff2 100644 --- a/web/src/containers/Admin/General/General.js +++ b/web/src/containers/Admin/General/General.js @@ -516,8 +516,7 @@ class GeneralContent extends Component { features, balance_history_config = null, referral_history_config = null, - chain_trade_config = null, - selectable_native_currencies = null + chain_trade_config = null ) => { this.handleSubmitGeneral({ kit: { @@ -525,7 +524,6 @@ class GeneralContent extends Component { balance_history_config, referral_history_config, chain_trade_config, - selectable_native_currencies, }, }); }; From 2aa36849259391cf1d75bf590d7d13621320471b Mon Sep 17 00:00:00 2001 From: fetok12 Date: Fri, 6 Dec 2024 02:21:16 +0300 Subject: [PATCH 18/18] obfuscate chain trade error message --- server/utils/hollaex-tools-lib/tools/order.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/utils/hollaex-tools-lib/tools/order.js b/server/utils/hollaex-tools-lib/tools/order.js index 2e78b6dc34..5bfa030c3b 100644 --- a/server/utils/hollaex-tools-lib/tools/order.js +++ b/server/utils/hollaex-tools-lib/tools/order.js @@ -1698,7 +1698,7 @@ const executeTrades = async (tradeInfo, sourceUser, opts) => { successfulTrades.push(res); } catch (error) { - throw new Error(`Error occured during trade executions. Error: ${error.message} Failed trade ${trade.symbol}, successful trades: ${successfulTrades.map(trade => trade.symbol).join(', ')}`); + throw new Error(`There has been a failure processing your request please try again`); } }