feat: Improved LNBits multi currency support

This commit is contained in:
Djuri 2025-04-15 23:17:15 +02:00
parent 19c877a254
commit 7cd4c8dd37
Signed by: djuri
GPG key ID: 61B9B2DDE5AA3AC1
3 changed files with 108 additions and 12 deletions

View file

@ -4,24 +4,22 @@
#include <emscripten/bind.h>
#endif
char getCurrencySymbol(char input)
{
switch (input)
{
case CURRENCY_EUR:
return '[';
break;
case CURRENCY_GBP:
return ']';
break;
case CURRENCY_JPY:
return '^';
break;
// Dollar symbol currencies
case CURRENCY_AUD:
case CURRENCY_CAD:
case CURRENCY_USD:
return '$';
break;
default:
return input;
}
@ -33,22 +31,16 @@ std::string getCurrencyCode(char input)
{
case CURRENCY_EUR:
return CURRENCY_CODE_EUR;
break;
case CURRENCY_GBP:
return CURRENCY_CODE_GBP;
break;
case CURRENCY_JPY:
return CURRENCY_CODE_JPY;
break;
case CURRENCY_AUD:
return CURRENCY_CODE_AUD;
break;
case CURRENCY_CAD:
return CURRENCY_CODE_CAD;
break;
case CURRENCY_USD:
return CURRENCY_CODE_USD;
break;
default:
return CURRENCY_CODE_UNKNOWN;
}
@ -67,7 +59,41 @@ char getCurrencyChar(const std::string& input)
else if (input == "CAD")
return CURRENCY_CAD;
else if (input == "USD")
return CURRENCY_USD; // Assuming USD is the default for unknown inputs
return CURRENCY_USD;
else if (input == "ALL")
return CURRENCY_ALL;
else if (input == "BWP")
return CURRENCY_BWP;
else if (input == "HNL")
return CURRENCY_HNL;
else if (input == "HTG")
return CURRENCY_HTG;
else if (input == "MWK")
return CURRENCY_MWK;
else if (input == "MZN")
return CURRENCY_MZN;
else if (input == "NAD")
return CURRENCY_NAD;
else if (input == "PYG")
return CURRENCY_PYG;
else if (input == "RON")
return CURRENCY_RON;
else if (input == "SZL")
return CURRENCY_SZL;
else if (input == "ZAR")
return CURRENCY_ZAR;
else if (input == "ZMW")
return CURRENCY_ZMW;
// Map dollar-symbol currencies to USD character code
else if (input == "NZD" || input == "SGD" || input == "HKD" ||
input == "BND" || input == "FJD" || input == "SBD" ||
input == "TTD" || input == "XCD" || input == "KYD" ||
input == "GYD" || input == "BBD" || input == "BSD" ||
input == "BMD" || input == "LRD" || input == "ZWL" ||
input == "ARS" || input == "CLP" || input == "COP" ||
input == "MXN" || input == "UYU" || input == "DOP" ||
input == "SVC" || input == "SRD")
return CURRENCY_USD;
else
return ' ';
}

View file

@ -14,6 +14,41 @@ const char CURRENCY_GBP = ']';
const char CURRENCY_JPY = '^';
const char CURRENCY_AUD = '_';
const char CURRENCY_CAD = '`';
const char CURRENCY_ALL = 'L';
const char CURRENCY_BWP = 'P';
const char CURRENCY_HNL = 'L';
const char CURRENCY_HTG = 'G';
const char CURRENCY_MWK = 'K';
const char CURRENCY_MZN = 'M';
const char CURRENCY_NAD = 'N';
const char CURRENCY_PYG = 'G';
const char CURRENCY_RON = 'L';
const char CURRENCY_SZL = 'E';
const char CURRENCY_ZAR = 'R';
const char CURRENCY_ZMW = 'K';
// const char CURRENCY_NZD = '$';
// const char CURRENCY_SGD = '$';
// const char CURRENCY_HKD = '$';
// const char CURRENCY_BND = '$';
// const char CURRENCY_FJD = '$';
// const char CURRENCY_SBD = '$';
// const char CURRENCY_TTD = '$';
// const char CURRENCY_XCD = '$';
// const char CURRENCY_KYD = '$';
// const char CURRENCY_GYD = '$';
// const char CURRENCY_BBD = '$';
// const char CURRENCY_BSD = '$';
// const char CURRENCY_BMD = '$';
// const char CURRENCY_LRD = '$';
// const char CURRENCY_ZWL = '$';
// const char CURRENCY_ARS = '$';
// const char CURRENCY_CLP = '$';
// const char CURRENCY_COP = '$';
// const char CURRENCY_MXN = '$';
// const char CURRENCY_UYU = '$';
// const char CURRENCY_DOP = '$';
// const char CURRENCY_SVC = '$';
// const char CURRENCY_SRD = '$';
const std::string CURRENCY_CODE_USD = "USD";
const std::string CURRENCY_CODE_EUR = "EUR";
@ -21,6 +56,41 @@ const std::string CURRENCY_CODE_GBP = "GBP";
const std::string CURRENCY_CODE_JPY = "JPY";
const std::string CURRENCY_CODE_AUD = "AUD";
const std::string CURRENCY_CODE_CAD = "CAD";
// const std::string CURRENCY_CODE_ALL = "ALL";
// const std::string CURRENCY_CODE_BWP = "BWP";
// const std::string CURRENCY_CODE_HNL = "HNL";
// const std::string CURRENCY_CODE_HTG = "HTG";
// const std::string CURRENCY_CODE_MWK = "MWK";
// const std::string CURRENCY_CODE_MZN = "MZN";
// const std::string CURRENCY_CODE_NAD = "NAD";
// const std::string CURRENCY_CODE_PYG = "PYG";
// const std::string CURRENCY_CODE_RON = "RON";
// const std::string CURRENCY_CODE_SZL = "SZL";
// const std::string CURRENCY_CODE_ZAR = "ZAR";
// const std::string CURRENCY_CODE_ZMW = "ZMW";
// const std::string CURRENCY_CODE_NZD = "NZD";
// const std::string CURRENCY_CODE_SGD = "SGD";
// const std::string CURRENCY_CODE_HKD = "HKD";
// const std::string CURRENCY_CODE_BND = "BND";
// const std::string CURRENCY_CODE_FJD = "FJD";
// const std::string CURRENCY_CODE_SBD = "SBD";
// const std::string CURRENCY_CODE_TTD = "TTD";
// const std::string CURRENCY_CODE_XCD = "XCD";
// const std::string CURRENCY_CODE_KYD = "KYD";
// const std::string CURRENCY_CODE_GYD = "GYD";
// const std::string CURRENCY_CODE_BBD = "BBD";
// const std::string CURRENCY_CODE_BSD = "BSD";
// const std::string CURRENCY_CODE_BMD = "BMD";
// const std::string CURRENCY_CODE_LRD = "LRD";
// const std::string CURRENCY_CODE_ZWL = "ZWL";
// const std::string CURRENCY_CODE_ARS = "ARS";
// const std::string CURRENCY_CODE_CLP = "CLP";
// const std::string CURRENCY_CODE_COP = "COP";
// const std::string CURRENCY_CODE_MXN = "MXN";
// const std::string CURRENCY_CODE_UYU = "UYU";
// const std::string CURRENCY_CODE_DOP = "DOP";
// const std::string CURRENCY_CODE_SVC = "SVC";
// const std::string CURRENCY_CODE_SRD = "SRD";
const std::string CURRENCY_CODE_UNKNOWN = " ";
// Public methods

View file

@ -277,7 +277,7 @@ void test_Mcap1TrillionJpySmallChars(void)
void test_PriceDataWithCurrencyCode(void)
{
std::array<std::string, NUM_SCREENS> output = parsePriceData(100000, "PYG", false, false, false);
std::array<std::string, NUM_SCREENS> output = parsePriceData(10000, "PYG", false, false, false);
TEST_ASSERT_EQUAL_STRING("BTC/PYG", output[0].c_str());
}