260 lines
8.1 KiB
JavaScript
260 lines
8.1 KiB
JavaScript
import { COLORS, FONT, SIZES, SHADOWS } from './theme';
|
|
import ICONS from './icons';
|
|
import { CENTER, BTN, Background } from './styles';
|
|
import { SATSPERBITCOIN } from './math';
|
|
import { Dimensions, Platform } from 'react-native';
|
|
|
|
const WEBSITE_REGEX =
|
|
/^(https?:\/\/|www\.)[a-z\d]([a-z\d-]*[a-z\d])*(\.[a-z]{2,})+/i;
|
|
const hasSpace = /\s/;
|
|
|
|
const VALID_URL_REGEX =
|
|
/^(https?:\/\/)?([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}(\/[^\s]*)?$/;
|
|
|
|
const IS_BLITZ_URL_REGEX =
|
|
/^(https?:\/\/)?(www\.)?(blitz-wallet\.com|blitzwalletapp\.com|blitzwallet\.app)(\/[^\s]*)?$/;
|
|
|
|
const EMAIL_REGEX = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
|
|
|
|
const VALID_USERNAME_REGEX = /^(?=.*\p{L})[\p{L}\p{N}_]+$/u;
|
|
const VALID_NAME_BIO_REGEX = /^[^<>{}`\\]*$/u;
|
|
|
|
const IS_SPARK_ID =
|
|
/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
|
|
const IS_SPARK_REQUEST_ID =
|
|
/^SparkLightning(?:Receive|Send)Request:[0-9a-fA-F\-]+$/;
|
|
const IS_BITCOIN_REQUEST_ID = /^SparkCoopExitRequest:[0-9a-fA-F\-]+$/;
|
|
|
|
const GIFT_DEEPLINK_REGEX =
|
|
/^(?:blitz-wallet:\/\/gift\/|https:\/\/(?:blitz-wallet\.com|blitzwalletapp\.com|blitzwallet\.app)\/gift\/)[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}(?:[#\/][A-Za-z0-9_-]+)?$/;
|
|
|
|
const CONTACT_UNIVERSAL_LINK_REGEX =
|
|
/^https?:\/\/(blitzwalletapp\.com|blitzwallet\.app|blitz-wallet\.com)\/u\/[A-Za-z0-9_-]+\/?$/;
|
|
|
|
const FLASHNET_ERROR_CODE_REGEX = /\bFSAG-\d{4}(?:T\d+)?\b/;
|
|
|
|
const FLASHNET_REFUND_REGEX = /via transfer ([\da-fA-F\-]+)/;
|
|
|
|
const BASIC_ACCOUNT_NAME_REGEX = /^account\s+\d+$/i;
|
|
|
|
const BTC_USD_SUFFIX_REGEX = /(?:-d60fbd|-e40605)$/;
|
|
const USD_SUFFIX_REGEX = /-d60fbd$/;
|
|
const BTC_SUFFIX_REGEX = /-e40605$/;
|
|
|
|
const NOSTR_NAME_REGEX = /^[a-zA-Z0-9]+$/;
|
|
const NOSTR_RELAY_URL = 'wss://relay.getalbypro.com/blitz';
|
|
|
|
const IS_LETTER_REGEX = /^[A-Za-z]$/;
|
|
const BITCOIN_SATS_ICON = '\u20BF';
|
|
const HIDDEN_BALANCE_TEXT = `E`;
|
|
const BITCOIN_SAT_TEXT = 'SAT';
|
|
const INFINITY_SYMBOL = '\u221E';
|
|
const APPROXIMATE_SYMBOL = '≈';
|
|
|
|
const ECASH_TX_STORAGE_KEY = 'CASHU_TRANSACTIONS';
|
|
const AUTO_CHANNEL_REBALANCE_STORAGE_KEY = 'ACR_STORAGE_KEY';
|
|
const ECASH_KEYSET_STORAGE = 'ECASH_KEYSET_STORAGE';
|
|
const BREEZ_WORKING_DIR_KEY = 'BREEZ_WORKING_DIR';
|
|
const QUICK_PAY_STORAGE_KEY = 'FAST_PAY_SETTINGS';
|
|
const SPEND_AND_REPLACE_STORAGE_KEY = 'spendAndReplace';
|
|
const LOGIN_SECUITY_MODE_KEY = 'LOGIN_SECURITY_MODE';
|
|
const MIGRATE_ECASH_STORAGE_KEY = 'MIGRATE_ECASH';
|
|
const POINT_OF_SALE_PAYOUT_DESCRIPTION = 'Blitz Tips Payout';
|
|
const NWC_SECURE_STORE_KEY = 'NWC_SECURE_STORE_KEY';
|
|
const NWC_SECURE_STORE_MNEMOINC = 'NWC_SECURE_STORE_MNEMOINC';
|
|
const NWC_LOACAL_STORE_KEY = 'NWC_LOACAL_STORE_KEY';
|
|
const LAST_LOADED_BLITZ_LOCAL_STOREAGE_KEY = 'LAST_LOADED_BLTIZ';
|
|
const BLITZ_PROFILE_IMG_STORAGE_REF = 'profile_pictures';
|
|
const BLITZ_DEFAULT_PAYMENT_DESCRIPTION = '';
|
|
const BIOMETRIC_KEY = 'biometricEncryptionKey';
|
|
const LOGIN_SECURITY_MODE_TYPE_KEY = 'LOGIN_SECURITY_MODE_TYPE';
|
|
const SPARK_CACHED_BALANCE_KEY = 'CACHED_SPARK_BALANCE';
|
|
const NWC_IDENTITY_PUB_KEY = 'NWC_WALLET_PUB_KEY';
|
|
const GENERATED_BITCOIN_ADDRESSES = 'GENERATED_BITCOIN_ADDRESSES';
|
|
const SHOPS_DIRECTORY_KEY = 'SHOPS_CURRENCY_LOCATION';
|
|
const RANDOM_LOGIN_KEYBOARD_LAYOUT_KEY = 'RANDOM_KEYBOARD_LAYOUT_KEY';
|
|
const PERSISTED_LOGIN_COUNT_KEY = 'PERSISTED_LOGIN_COUNT_KEY';
|
|
const HIDE_IN_APP_PURCHASE_ITEMS = Platform.OS === 'ios';
|
|
const GIFT_DERIVE_PATH_CUTOFF = 1763650239108;
|
|
|
|
const BLITZ_SUPPORT_DEFAULT_PAYMENT_DESCRIPTION = 'Blitz support';
|
|
const CUSTODY_ACCOUNTS_STORAGE_KEY = 'CUSTODY_ACCOUNTS';
|
|
const BLITZ_PAYMENT_DEEP_LINK_SCHEMES = [
|
|
'bitcoin',
|
|
'BITCOIN',
|
|
'lightning',
|
|
'LIGHTNING',
|
|
'lnurl',
|
|
'LNURL',
|
|
'lnurlp',
|
|
'LNURLP',
|
|
'lnurlw',
|
|
'LNURLW',
|
|
'keyauth',
|
|
];
|
|
|
|
const CUSTOM_TOKEN_CURRENCY_OPTIONS = [{ token: 'USDB', currency: 'USD' }];
|
|
|
|
const CHATGPT_INPUT_COST = 10 / 1000000;
|
|
const CHATGPT_OUTPUT_COST = 30 / 1000000;
|
|
|
|
const MAX_DERIVED_ACCOUNTS = 1000; // Indices 0-999 for user accounts
|
|
const STARTING_INDEX_FOR_GIFTS_DERIVE = 1000; // Indices 1000-99999 for gifts
|
|
const MAX_GIFTS = 99000; // Maximum 99000 gifts
|
|
const STARTING_INDEX_FOR_POOLS_DERIVE = 100000; // Indices 100000+ for pools
|
|
const STARTING_INDEX_FOR_SAVINGS_DERIVE = 200000; // Indices 200000+ for savings (unlimited)
|
|
|
|
const POOL_DEEPLINK_REGEX =
|
|
/^(?:blitz-wallet:\/\/pools\/|https:\/\/(?:blitz-wallet\.com|blitzwalletapp\.com|blitzwallet\.app)\/pools\/)[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}\/?$/;
|
|
|
|
const PAYLINK_DEEPLINK_REGEX =
|
|
/^(?:blitz-wallet:\/\/paylink\/|https:\/\/(?:blitz-wallet\.com|blitzwalletapp\.com|blitzwallet\.app)\/paylink\/)[A-Za-z0-9]{9}\/?$/;
|
|
|
|
const MIN_CHANNEL_OPEN_FEE = 500_000;
|
|
const MAX_CHANNEL_OPEN_FEE = 1_000_000;
|
|
const BLITZ_RECEIVE_FEE = 0.0;
|
|
const BLITZ_SEND_FEE = 0.0;
|
|
const LIQUID_DEFAULT_FEE = 30;
|
|
const MAX_ECASH_RECEIVE = 50_000;
|
|
const MAX_ECASH_BALANCE = 50_000;
|
|
const SMALLEST_ONCHAIN_SPARK_SEND_AMOUNT = 10_000;
|
|
const LIQUID_NON_BITCOIN_DRAIN_LIMIT = 10;
|
|
|
|
const CONTENT_KEYBOARD_OFFSET = 10;
|
|
|
|
const BLITZ_GOAL_USER_COUNT = 1_000_000;
|
|
|
|
const IS_DONTATION_PAYMENT_BUFFER = 10_000;
|
|
const SKELETON_ANIMATION_SPEED = 1200;
|
|
const TOKEN_TICKER_MAX_LENGTH = 10;
|
|
|
|
const BACKGROUND_THRESHOLD_MS = 8 * 60 * 1000;
|
|
const FORCE_RESET_SPAARK_STATE_MS = 6 * 60 * 1000;
|
|
|
|
const DEFAULT_PAYMENT_EXPIRY_SEC = 60 * 60 * 12;
|
|
|
|
const SMALL_BTC_PAYMENT_LIMIT = 500;
|
|
const SMALL_USD_PAYMENT_LIMIT = 0.05;
|
|
|
|
const SCREEN_DIMENSIONS = Dimensions.get('screen');
|
|
|
|
const USDB_TOKEN_ID =
|
|
'btkn1xgrvjwey5ngcagvap2dzzvsy4uk8ua9x69k82dwvt5e7ef9drm9qztux87';
|
|
const DEFAULT_GOAL_EMOJI = '🎯';
|
|
|
|
const MAX_GIFT_QUANTITY = 20;
|
|
const GIFTS_QUANTITY_PRESETS = [1, 5, 10, 15, 20];
|
|
|
|
const OVER_BUDGET_LIMIT = 1;
|
|
const NEAR_BUDGET_LIMIT = 0.75;
|
|
const MIN_USD_BTC_LIGHTNING_SWAP = 1000;
|
|
const MIN_BTC_USD_AMOUNT_RECEIVEPAGE = 2000;
|
|
|
|
const BARCODE_FORMATS = ['qr-code'];
|
|
|
|
export {
|
|
COLORS,
|
|
FONT,
|
|
SIZES,
|
|
SHADOWS,
|
|
ICONS,
|
|
CENTER,
|
|
BTN,
|
|
Background,
|
|
SATSPERBITCOIN,
|
|
WEBSITE_REGEX,
|
|
hasSpace,
|
|
ECASH_TX_STORAGE_KEY,
|
|
VALID_URL_REGEX,
|
|
CHATGPT_INPUT_COST,
|
|
CHATGPT_OUTPUT_COST,
|
|
MIN_CHANNEL_OPEN_FEE,
|
|
MAX_CHANNEL_OPEN_FEE,
|
|
EMAIL_REGEX,
|
|
VALID_USERNAME_REGEX,
|
|
VALID_NAME_BIO_REGEX,
|
|
BLITZ_RECEIVE_FEE,
|
|
BLITZ_SEND_FEE,
|
|
AUTO_CHANNEL_REBALANCE_STORAGE_KEY,
|
|
ECASH_KEYSET_STORAGE,
|
|
BREEZ_WORKING_DIR_KEY,
|
|
QUICK_PAY_STORAGE_KEY,
|
|
SPEND_AND_REPLACE_STORAGE_KEY,
|
|
BLITZ_DEFAULT_PAYMENT_DESCRIPTION,
|
|
LOGIN_SECUITY_MODE_KEY,
|
|
LIQUID_DEFAULT_FEE,
|
|
BITCOIN_SATS_ICON,
|
|
MIGRATE_ECASH_STORAGE_KEY,
|
|
CONTENT_KEYBOARD_OFFSET,
|
|
HIDDEN_BALANCE_TEXT,
|
|
MAX_ECASH_RECEIVE,
|
|
MAX_ECASH_BALANCE,
|
|
LIQUID_NON_BITCOIN_DRAIN_LIMIT,
|
|
POINT_OF_SALE_PAYOUT_DESCRIPTION,
|
|
BLITZ_GOAL_USER_COUNT,
|
|
CUSTODY_ACCOUNTS_STORAGE_KEY,
|
|
BLITZ_SUPPORT_DEFAULT_PAYMENT_DESCRIPTION,
|
|
IS_DONTATION_PAYMENT_BUFFER,
|
|
LAST_LOADED_BLITZ_LOCAL_STOREAGE_KEY,
|
|
BLITZ_PROFILE_IMG_STORAGE_REF,
|
|
SKELETON_ANIMATION_SPEED,
|
|
BIOMETRIC_KEY,
|
|
IS_LETTER_REGEX,
|
|
BITCOIN_SAT_TEXT,
|
|
LOGIN_SECURITY_MODE_TYPE_KEY,
|
|
IS_SPARK_REQUEST_ID,
|
|
SMALLEST_ONCHAIN_SPARK_SEND_AMOUNT,
|
|
IS_BITCOIN_REQUEST_ID,
|
|
NWC_SECURE_STORE_KEY,
|
|
NWC_SECURE_STORE_MNEMOINC,
|
|
NWC_LOACAL_STORE_KEY,
|
|
SPARK_CACHED_BALANCE_KEY,
|
|
IS_SPARK_ID,
|
|
NOSTR_NAME_REGEX,
|
|
TOKEN_TICKER_MAX_LENGTH,
|
|
NOSTR_RELAY_URL,
|
|
NWC_IDENTITY_PUB_KEY,
|
|
SCREEN_DIMENSIONS,
|
|
SHOPS_DIRECTORY_KEY,
|
|
INFINITY_SYMBOL,
|
|
GENERATED_BITCOIN_ADDRESSES,
|
|
RANDOM_LOGIN_KEYBOARD_LAYOUT_KEY,
|
|
PERSISTED_LOGIN_COUNT_KEY,
|
|
BLITZ_PAYMENT_DEEP_LINK_SCHEMES,
|
|
HIDE_IN_APP_PURCHASE_ITEMS,
|
|
IS_BLITZ_URL_REGEX,
|
|
MAX_DERIVED_ACCOUNTS,
|
|
STARTING_INDEX_FOR_GIFTS_DERIVE,
|
|
MAX_GIFTS,
|
|
GIFT_DEEPLINK_REGEX,
|
|
GIFT_DERIVE_PATH_CUTOFF,
|
|
CONTACT_UNIVERSAL_LINK_REGEX,
|
|
BACKGROUND_THRESHOLD_MS,
|
|
FORCE_RESET_SPAARK_STATE_MS,
|
|
DEFAULT_PAYMENT_EXPIRY_SEC,
|
|
USDB_TOKEN_ID,
|
|
APPROXIMATE_SYMBOL,
|
|
FLASHNET_ERROR_CODE_REGEX,
|
|
FLASHNET_REFUND_REGEX,
|
|
CUSTOM_TOKEN_CURRENCY_OPTIONS,
|
|
STARTING_INDEX_FOR_POOLS_DERIVE,
|
|
STARTING_INDEX_FOR_SAVINGS_DERIVE,
|
|
POOL_DEEPLINK_REGEX,
|
|
PAYLINK_DEEPLINK_REGEX,
|
|
BASIC_ACCOUNT_NAME_REGEX,
|
|
DEFAULT_GOAL_EMOJI,
|
|
MAX_GIFT_QUANTITY,
|
|
GIFTS_QUANTITY_PRESETS,
|
|
OVER_BUDGET_LIMIT,
|
|
NEAR_BUDGET_LIMIT,
|
|
MIN_USD_BTC_LIGHTNING_SWAP,
|
|
BARCODE_FORMATS,
|
|
SMALL_BTC_PAYMENT_LIMIT,
|
|
SMALL_USD_PAYMENT_LIMIT,
|
|
MIN_BTC_USD_AMOUNT_RECEIVEPAGE,
|
|
BTC_USD_SUFFIX_REGEX,
|
|
USD_SUFFIX_REGEX,
|
|
BTC_SUFFIX_REGEX,
|
|
};
|