diff --git a/src/app/screens/connectors/ConnectGaloy/index.tsx b/src/app/screens/connectors/ConnectGaloy/index.tsx index 3cf2fe8ae1..1d5ede6e19 100644 --- a/src/app/screens/connectors/ConnectGaloy/index.tsx +++ b/src/app/screens/connectors/ConnectGaloy/index.tsx @@ -18,7 +18,13 @@ export const galoyUrls = { label: "Blink Wallet", website: "https://www.blink.sv/", logo: galoyBlink, - url: process.env.BLINK_GALOY_URL || "https://api.mainnet.galoy.io/graphql", + url: process.env.BLINK_GALOY_URL || "https://api.blink.sv/graphql", + getHeaders: (authToken: string) => ({ + Accept: "application/json", + "Content-Type": "application/json", + "X-API-KEY": authToken, + }), + apiCompatibilityMode: false, }, "galoy-bitcoin-jungle": { i18nPrefix: "bitcoin_jungle", @@ -28,34 +34,32 @@ export const galoyUrls = { url: process.env.BITCOIN_JUNGLE_GALOY_URL || "https://api.mainnet.bitcoinjungle.app/graphql", + getHeaders: (authToken: string) => ({ + Accept: "application/json", + "Content-Type": "application/json", + Authorization: `Bearer ${authToken}`, + }), + apiCompatibilityMode: true, }, } as const; -const defaultHeaders = { - Accept: "application/json", - "Content-Type": "application/json", -}; - -type Props = { - instance: keyof typeof galoyUrls; -}; - export default function ConnectGaloy(props: Props) { const { instance } = props; - const { url, label, website, i18nPrefix, logo } = galoyUrls[instance]; + const { url, label, website, i18nPrefix, logo, apiCompatibilityMode } = + galoyUrls[instance]; const navigate = useNavigate(); const { t } = useTranslation("translation", { keyPrefix: "choose_connector", }); const [loading, setLoading] = useState(false); - const [jwt, setJwt] = useState(); + const [authToken, setAuthToken] = useState(); - function handleJwtChange(event: React.ChangeEvent) { - setJwt(event.target.value.trim()); + function handleAuthTokenChange(event: React.ChangeEvent) { + setAuthToken(event.target.value.trim()); } - async function loginWithJwt(event: React.FormEvent) { + async function loginWithAuthToken(event: React.FormEvent) { event.preventDefault(); setLoading(true); const meQuery = { @@ -63,26 +67,28 @@ export default function ConnectGaloy(props: Props) { query getinfo { me { defaultAccount { - defaultWalletId + wallets { + walletCurrency + id + } } } } `, }; try { - if (!jwt) { + if (!authToken) { const errorMsg = `${t("galoy.errors.missing_token")}`; throw new Error(errorMsg); } - const authToken = jwt; + + const headers = galoyUrls[instance].getHeaders(authToken); const { data: meData } = await axios.post(url, meQuery, { - headers: { - ...defaultHeaders, - Authorization: `Bearer ${authToken}`, - }, + headers: headers, adapter: fetchAdapter, }); + if (meData.error || meData.errors) { const error = meData.error || meData.errors; console.error(error); @@ -92,8 +98,12 @@ export default function ConnectGaloy(props: Props) { }`; toast.error(alertMsg); } else { - const walletId = meData.data.me.defaultAccount.defaultWalletId; - saveAccount({ authToken, walletId }); + // Find the BTC wallet and get its ID + const btcWallet = meData.data.me.defaultAccount.wallets.find( + (w: Wallet) => w.walletCurrency === "BTC" + ); + const walletId = btcWallet.id; + saveAccount({ headers, walletId }); } } catch (e: unknown) { console.error(e); @@ -112,15 +122,16 @@ export default function ConnectGaloy(props: Props) { } } - async function saveAccount(config: { authToken: string; walletId: string }) { + async function saveAccount(config: { headers: Headers; walletId: string }) { setLoading(true); const account = { name: label, config: { url, - accessToken: config.authToken, + headers: config.headers, walletId: config.walletId, + apiCompatibilityMode, }, connector: "galoy", }; @@ -167,22 +178,20 @@ export default function ConnectGaloy(props: Props) { logo={logo} submitLabel={t("galoy.actions.login")} submitLoading={loading} - onSubmit={loginWithJwt} + onSubmit={loginWithAuthToken} description={ , - // eslint-disable-next-line react/jsx-key -
, - // eslint-disable-next-line react/jsx-key - , ]} /> } @@ -190,17 +199,17 @@ export default function ConnectGaloy(props: Props) { {
@@ -209,3 +218,16 @@ export default function ConnectGaloy(props: Props) { ); } + +type Headers = { + [key: string]: string; +}; + +type Props = { + instance: keyof typeof galoyUrls; +}; + +type Wallet = { + walletCurrency: string; + id: string; +}; diff --git a/src/extension/background-script/connectors/galoy.ts b/src/extension/background-script/connectors/galoy.ts index 556c3a5533..26014d0e59 100644 --- a/src/extension/background-script/connectors/galoy.ts +++ b/src/extension/background-script/connectors/galoy.ts @@ -10,6 +10,7 @@ import Connector, { GetBalanceResponse, GetInfoResponse, GetTransactionsResponse, + ConnectorTransaction, KeysendArgs, MakeInvoiceArgs, MakeInvoiceResponse, @@ -22,7 +23,9 @@ import Connector, { interface Config { walletId: string; url: string; - accessToken: string; + headers?: Headers; // optional for backward compatibility + apiCompatibilityMode?: boolean; // optional for backward compatibility + accessToken?: string; // only present in old connectors } class Galoy implements Connector { @@ -31,7 +34,24 @@ class Galoy implements Connector { constructor(account: Account, config: Config) { this.account = account; - this.config = config; + // assuming that if there is an accessToken left over, headers are not stored + const accessToken = config.accessToken; + this.config = { + ...config, + headers: config.headers || this.getLegacyHeaders(accessToken || ""), + apiCompatibilityMode: + config.apiCompatibilityMode !== undefined + ? config.apiCompatibilityMode + : true, + }; + } + + getLegacyHeaders(accessToken: string): Headers { + return { + Accept: "application/json", + "Content-Type": "application/json", + Authorization: `Bearer ${accessToken}`, + }; } init() { @@ -90,10 +110,118 @@ class Galoy implements Connector { } async getTransactions(): Promise { - console.error( - `getTransactions() is not yet supported with the currently used account: ${this.constructor.name}` - ); - return { data: { transactions: [] } }; + const transactionsPerPage = 20; + let pageCount = 0; + let lastSeenCursor: string | null = null; + let hasNextPage = true; + const transactions: ConnectorTransaction[] = []; + + // list a maximum of 5 pages of transactions + while (hasNextPage && pageCount < 5) { + const variablesObj: TransactionListVariables = { + first: transactionsPerPage, + }; + if (lastSeenCursor !== null) { + variablesObj.after = lastSeenCursor; + } + + const query = { + query: ` + query transactionsList($first: Int, $after: String) { + me { + defaultAccount { + wallets { + id + walletCurrency + transactions(first: $first, after: $after) { + pageInfo { + hasNextPage + } + edges { + cursor + node { + status + createdAt + settlementAmount + memo + direction + initiationVia { + ... on InitiationViaLn { + paymentHash + } + } + settlementVia { + ... on SettlementViaLn { + ${ + this.config.apiCompatibilityMode + ? "paymentSecret" + : "preImage" + } + } + ... on SettlementViaIntraLedger { + __typename + counterPartyWalletId + counterPartyUsername + } + } + } + } + } + } + } + } + } + `, + variables: variablesObj, + }; + + const response = await this.request(query); + const errs = response.errors || response.data.me.errors; + if (errs && errs.length) { + throw new Error(errs[0].message || JSON.stringify(errs)); + } + + const wallets: GaloyWallet[] = response.data.me.defaultAccount.wallets; + const targetWallet = wallets.find((w) => w.id === this.config.walletId); + + if (targetWallet) { + if (targetWallet.walletCurrency === "USD") { + throw new Error("USD currency support is not yet implemented."); + } + + targetWallet.transactions.edges.forEach( + (edge: { cursor: string; node: TransactionNode }) => { + const tx = edge.node; + // Determine transaction type based on the direction field + const transactionType: "received" | "sent" = + tx.direction === "RECEIVE" ? "received" : "sent"; + // Do not display a double negative if sent + const absSettlementAmount = Math.abs(tx.settlementAmount); + // Convert createdAt from UNIX timestamp to Date + const createdAtDate = new Date(tx.createdAt * 1000); + + transactions.push({ + id: edge.cursor, + memo: tx.memo, + preimage: tx.settlementVia.preImage || "", + payment_hash: tx.initiationVia.paymentHash || "", + settled: tx.status === "SUCCESS", + settleDate: createdAtDate.getTime(), + totalAmount: absSettlementAmount, // Assuming this is in the correct unit + type: transactionType, + }); + } + ); + } + + hasNextPage = targetWallet?.transactions.pageInfo.hasNextPage || false; + lastSeenCursor = + targetWallet?.transactions.edges.slice(-1)[0]?.cursor || null; + + pageCount++; + } + + return { data: { transactions } }; } async getBalance(): Promise { @@ -102,10 +230,10 @@ class Galoy implements Connector { query getinfo { me { defaultAccount { - defaultWalletId wallets { id balance + walletCurrency } } } @@ -118,13 +246,16 @@ class Galoy implements Connector { throw new Error(errs[0].message || JSON.stringify(errs)); } - const { defaultWalletId, wallets }: GaloyDefaultAccount = - data.me.defaultAccount; - const defaultWallet = wallets.find((w) => w.id === defaultWalletId); - if (defaultWallet) { + const targetWallet = data.me.defaultAccount.wallets.find( + (w: GaloyWallet) => w.id === this.config.walletId + ); + if (targetWallet) { + if (targetWallet.walletCurrency === "USD") { + throw new Error("USD currency support is not yet implemented."); + } return { data: { - balance: defaultWallet.balance, + balance: targetWallet.balance, }, }; } else { @@ -190,21 +321,15 @@ class Galoy implements Connector { } async checkPayment(args: CheckPaymentArgs): Promise { - const TRANSACTIONS_PER_PAGE = 20; - const query = { query: ` query transactionsList($first: Int, $after: String) { me { defaultAccount { - defaultWalletId wallets { id walletCurrency transactions(first: $first, after: $after) { - pageInfo { - hasNextPage - } edges { cursor node { @@ -216,7 +341,11 @@ class Galoy implements Connector { } settlementVia { ... on SettlementViaLn { - paymentSecret + ${ + this.config.apiCompatibilityMode + ? "paymentSecret" + : "preImage" + } } ... on SettlementViaIntraLedger { __typename @@ -232,17 +361,10 @@ class Galoy implements Connector { } } `, - variables: "", }; - let lastSeenCursor = null; let result: true | CheckPaymentResponse = true; while (result === true) { - query.variables = JSON.stringify({ - first: TRANSACTIONS_PER_PAGE, - after: lastSeenCursor, - }); - result = await this.request(query).then(({ data, errors }) => { const errs = errors || data.me.errors; if (errs && errs.length) { @@ -251,16 +373,13 @@ class Galoy implements Connector { const account: GaloyTransactionsAccount = data.me.defaultAccount; const wallet = account.wallets.find( - (w) => w.id === account.defaultWalletId + (w) => w.id === this.config.walletId ); - - // There should always be a wallet that corresponds to 'defaultWalletId' if (wallet === undefined) { throw new Error("Bad data received."); } - - if (wallet.walletCurrency !== "BTC") { - throw new Error("Non-BTC wallets not implemented yet."); + if (wallet.walletCurrency === "USD") { + throw new Error("USD currency support is not yet implemented."); } const txEdges = wallet.transactions.edges; @@ -273,18 +392,11 @@ class Galoy implements Connector { paid: tx.node.status === "SUCCESS", preimage: tx.node.settlementVia.__typename ? "Payment executed internally" - : tx.node.settlementVia.paymentSecret || "No preimage received", + : tx.node.settlementVia.preImage || "No preimage received", }, }; } - if (!wallet.transactions.pageInfo.hasNextPage) { - throw new Error( - `Transaction not found for payment hash: ${args.paymentHash}` - ); - } - - lastSeenCursor = txEdges[txEdges.length - 1].cursor; return true; }); } @@ -344,11 +456,7 @@ class Galoy implements Connector { method: "POST", url: this.config.url, responseType: "json", - headers: { - Accept: "application/json", - "Content-Type": "application/json", - Authorization: `Bearer ${this.config.accessToken}`, - }, + headers: this.config.headers, adapter: fetchAdapter, }; reqConfig.data = query; @@ -364,12 +472,13 @@ class Galoy implements Connector { } } -type GaloyDefaultAccount = { - defaultWalletId: string; - wallets: { - id: string; - balance: number; - }[]; +type Headers = { + [key: string]: string; +}; + +type TransactionListVariables = { + first: number; + after?: string; }; type GaloyTransactionsAccount = { @@ -377,6 +486,23 @@ type GaloyTransactionsAccount = { wallets: GaloyWallet[]; }; +type TransactionNode = { + status: string; + createdAt: number; + settlementAmount: number; + memo: string; + direction: string; + initiationVia: { + paymentHash?: string; + }; + settlementVia: { + preImage?: string; + __typename?: string; + counterPartyWalletId?: string; + counterPartyUsername?: string; + }; +}; + type GaloyWallet = { id: string; walletCurrency: string; @@ -386,22 +512,7 @@ type GaloyWallet = { }; edges: { cursor: string; - node: { - status: "FAILURE" | "PENDING" | "SUCCESS"; - initiationVia: { - paymentHash: string; - }; - settlementVia: - | { - __typename: undefined; - paymentSecret: string; - } - | { - __typename: "SettlementViaIntraledger"; - counterPartyWalletId: string; - counterPartyUsername: string; - }; - }; + node: TransactionNode; }[]; }; }; diff --git a/src/i18n/locales/cs/translation.json b/src/i18n/locales/cs/translation.json index 2678712ba6..f0650f674c 100644 --- a/src/i18n/locales/cs/translation.json +++ b/src/i18n/locales/cs/translation.json @@ -170,26 +170,6 @@ "title": "Připojení k <0>Bitcoin Jungle Wallet" } }, - "galoy": { - "phone_number": { - "label": "Vložte své telefonní číslo" - }, - "sms_code": { - "label": "Vlože verifikační kód ze SMS" - }, - "token": { - "label": "Vlože svůj JWT token", - "info": "Přihlášení {{label}} je aktuálně aktualizováno. Pokud jste pokročilý uživatel, můžete svůj JWT token získat přihlášením přes <0>Webovou peněženku (wallet.mainnet.galoy.io)<1/><1/>JWT token vypadá podobně jako: <2>eyJhbG...<1/><1/>" - }, - "actions": { - "login": "Přihlásit" - }, - "errors": { - "setup_failed": "Nastavení se nezdařilo", - "missing_token": "JWT chybí, přihlášení se nezdařilo.", - "invalid_token": "Vloženo nevalidní JWT" - } - }, "btcpay": { "title": "BTCPay Server", "page": { diff --git a/src/i18n/locales/da/translation.json b/src/i18n/locales/da/translation.json index ce54cbf1af..f688513941 100644 --- a/src/i18n/locales/da/translation.json +++ b/src/i18n/locales/da/translation.json @@ -204,26 +204,6 @@ "title": "Opret forbindelse til <0>Bitcoin Jungle Wallet" } }, - "galoy": { - "phone_number": { - "label": "Indtast dit telefonnummer" - }, - "sms_code": { - "label": "Indtast din SMS-bekræftelseskode" - }, - "token": { - "label": "Indtast din JWT-token", - "info": "Log ind med {{label}} bliver i øjeblikketl opgraderet. Hvis du er en øvet bruger, kan du få din JWT-token ved at logge ind via <0>Web Wallet (wallet.mainnet.galoy.io)<1/><1/>JWT ser sådan ud: <2>eyJhbG...<1/><1/>" - }, - "actions": { - "login": "Adgangsoplysninger" - }, - "errors": { - "setup_failed": "Opsætning mislykkedes", - "missing_token": "JWT mangler, kunne ikke logge ind.", - "invalid_token": "ugyldig JWT givet" - } - }, "btcpay": { "title": "BTCPay Server", "page": { diff --git a/src/i18n/locales/de/translation.json b/src/i18n/locales/de/translation.json index e7cb10bc00..d782bbddb7 100644 --- a/src/i18n/locales/de/translation.json +++ b/src/i18n/locales/de/translation.json @@ -171,26 +171,6 @@ "title": "Verbinden mit <0>Bitcoin Jungle Wallet" } }, - "galoy": { - "phone_number": { - "label": "Trage deine Telefonnummer ein" - }, - "sms_code": { - "label": "Gib deinen SMS-Bestätigungscode ein" - }, - "token": { - "label": "Gebe deinen JWT Token ein", - "info": "Das {{label}}-Login wird derzeit aktualisiert. Wenn du ein fortgeschrittener Benutzer bist, kannst du dir dein JWT-Token holen, indem du über <0>Web Wallet (wallet.mainnet.galoy.io)<1/><1/> anmeldest. Das JWT sieht so aus: < 2>eyJhbG...<1/><1/>" - }, - "actions": { - "login": "Anmeldung" - }, - "errors": { - "setup_failed": "Einrichtung fehlgeschlagen", - "missing_token": "JWT fehlt, Anmeldung nicht möglich.", - "invalid_token": "ungültige JWT übermittelt" - } - }, "btcpay": { "title": "BTCPay Server", "page": { diff --git a/src/i18n/locales/en/translation.json b/src/i18n/locales/en/translation.json index 8d9c772846..e7a2fb17c3 100644 --- a/src/i18n/locales/en/translation.json +++ b/src/i18n/locales/en/translation.json @@ -208,12 +208,20 @@ "title": "Blink Wallet", "page": { "title": "Connect to <0>Blink Wallet" + }, + "token": { + "label": "Enter your API key", + "info": "To connect your wallet generate an API key in the <0>Blink Dashboard (dashboard.blink.sv):
- log in with email or phone number if you are using Blink already
- if you have no account yet can create a new one by logging in with a phone number
- create a new key on the API Keys tab
- give it a Name and choose the Read and Write Scope
- leave the default no expiry or choose a long timeframe to avoid needing to reconnect your wallet periodically
- copy the key (starting with blink_ ) and paste it to the textbox below.

The integration currently only supports using the BTC wallet.
" } }, "bitcoin_jungle": { "title": "Bitcoin Jungle Wallet", "page": { "title": "Connect to <0>Bitcoin Jungle Wallet" + }, + "token": { + "label": "Enter your Access token", + "info": "The {{label}} integration with Alby is in alpha and only recommended for advanced users.

You can grab your Access token by going into the mobile app, clicking on the settings icon, and then tapping 3 times on the build number to open the developer menu.

The access token can be copied from here.

" } }, "galoy": { @@ -223,17 +231,13 @@ "sms_code": { "label": "Enter your SMS verification code" }, - "token": { - "label": "Enter your Access token", - "info": "The {{label}} integration with Alby is in alpha and only recommended for advanced users.

You can grab your Access token by going into the mobile app, clicking on the settings icon, and then tapping 3 times on the build number to open the developer menu.

The access token can be copied from here.

" - }, "actions": { "login": "Login" }, "errors": { "setup_failed": "Setup failed", "missing_token": "Access token missing, couldn't log in.", - "invalid_token": "invalid Access token passed" + "invalid_token": "Authorization failed. Please check your API key and try again." } }, "btcpay": { diff --git a/src/i18n/locales/eo/translation.json b/src/i18n/locales/eo/translation.json index 075eaabcb0..608ce1f04c 100644 --- a/src/i18n/locales/eo/translation.json +++ b/src/i18n/locales/eo/translation.json @@ -165,23 +165,8 @@ } }, "galoy": { - "phone_number": { - "label": "" - }, - "sms_code": { - "label": "" - }, - "token": { - "label": "", - "info": "" - }, "actions": { "login": "Saluti" - }, - "errors": { - "setup_failed": "", - "missing_token": "", - "invalid_token": "" } }, "btcpay": { diff --git a/src/i18n/locales/es/translation.json b/src/i18n/locales/es/translation.json index e055101703..4e5a5b5694 100644 --- a/src/i18n/locales/es/translation.json +++ b/src/i18n/locales/es/translation.json @@ -217,26 +217,6 @@ "label": "Proxy de socket web" } }, - "galoy": { - "errors": { - "setup_failed": "Falló la configuración", - "missing_token": "Falta JWT, no se pudo iniciar sesión.", - "invalid_token": "JWT inválido aprobado" - }, - "phone_number": { - "label": "Ingrese su número telefónico" - }, - "sms_code": { - "label": "Ingrese su código de verificación de SMS" - }, - "token": { - "label": "Ingresa tu token de JWT", - "info": "El inicio de sesión de {{label}} se está actualizando actualmente. Si es un usuario avanzado, puede obtener su token JWT iniciando sesión a través de <0>Web Wallet (wallet.mainnet.galoy.io)<1/><1/>El JWT se ve así: < 2>eyJhbG...<1/><1/>" - }, - "actions": { - "login": "Ingresar" - } - }, "lnc": { "page": { "title": "Conecta tu nodo LND", diff --git a/src/i18n/locales/fa/translation.json b/src/i18n/locales/fa/translation.json index f7d9e67c2a..7efb66c6fc 100644 --- a/src/i18n/locales/fa/translation.json +++ b/src/i18n/locales/fa/translation.json @@ -214,26 +214,6 @@ "title": "اتصال به کیف پول Bitcoin Jungl" } }, - "galoy": { - "phone_number": { - "label": "شماره تلفن خود را وارد کنید" - }, - "sms_code": { - "label": "کد تایید پیامکی خود را وارد کنید" - }, - "actions": { - "login": "ورود" - }, - "errors": { - "setup_failed": "راه اندازی انجام نشد", - "missing_token": "شماره دسترسی وجود ندارد، نمی توان وارد شد.", - "invalid_token": "شماره نامعتبر وارد شد" - }, - "token": { - "label": "شماره دسترسی خود را وارد کنید", - "info": "ادغام {{label}} با البی در مرحله آلفا است و فقط برای کاربران پیشرفته توصیه می شود.

با ورود به اپ موبایل، با کلیک بر روی ایکن تنظیمات، و سپس سه بار ضربه زدن روی ساخت شماره در منوی توسعه دهنده، می توانید شماره دسترسی خود را بگیرید.

شماره دسترسی می تواند از اینجا کپی شود

" - } - }, "btcpay": { "title": "سرور BTCPay", "page": { diff --git a/src/i18n/locales/fi/translation.json b/src/i18n/locales/fi/translation.json index 00b4197c96..86bcbf38c4 100644 --- a/src/i18n/locales/fi/translation.json +++ b/src/i18n/locales/fi/translation.json @@ -164,26 +164,6 @@ "title": "Yhdistä <0>Bitcoin Jungle -lompakkoon" } }, - "galoy": { - "phone_number": { - "label": "Syötä puhelinnumerosi" - }, - "sms_code": { - "label": "Syötä tekstiviestivahvistuskoodisi" - }, - "token": { - "label": "Syötä JWT-tunnuksesi", - "info": "Kirjautumistunnusta {{label}} päivitetään parhaillaan. Jos olet kokenut käyttäjä, voit napata JWT-tunnuksesi kirjautumalla sisään <0>Verkkolompakon (wallet.mainnet.galoy.io) kautta<1/><1/>JWT näyttää tältä: < 2>eyJhbG...<1/><1/>" - }, - "actions": { - "login": "Kirjaudu sisään" - }, - "errors": { - "setup_failed": "Määritys epäonnistui", - "missing_token": "JWT puuttuu, sisäänkirjautuminen ei onnistunut.", - "invalid_token": "virheellinen JWT välitetty" - } - }, "btcpay": { "title": "BTCPay-palvelin", "page": { diff --git a/src/i18n/locales/fr/translation.json b/src/i18n/locales/fr/translation.json index ffbe1520e0..fadcfa7140 100644 --- a/src/i18n/locales/fr/translation.json +++ b/src/i18n/locales/fr/translation.json @@ -204,26 +204,6 @@ "title": "Connectez-vous au <0>portefeuille Bitcoin Jungle" } }, - "galoy": { - "phone_number": { - "label": "Entrez votre numéro de téléphone" - }, - "sms_code": { - "label": "Entrez votre code de vérification par SMS" - }, - "token": { - "label": "Entrez votre jeton JWT", - "info": "La connexion {{label}} est en cours de mise à jour. Si vous êtes un utilisateur avancé, vous pouvez récupérer votre jeton JWT en vous connectant via le <0>Portefeuille Web (wallet.mainnet.galoy.io)<1/><1/>Le JWT ressemble : < 2>eyJhbG...<1/><1/>" - }, - "actions": { - "login": "Connexion" - }, - "errors": { - "setup_failed": "La configuration a échoué", - "missing_token": "JWT manquant, impossible de se connecter.", - "invalid_token": "JWT invalide passé" - } - }, "btcpay": { "title": "Serveur BTCPay", "page": { diff --git a/src/i18n/locales/hi/translation.json b/src/i18n/locales/hi/translation.json index 29c301f148..4df11ceedc 100644 --- a/src/i18n/locales/hi/translation.json +++ b/src/i18n/locales/hi/translation.json @@ -211,26 +211,6 @@ "title": "<0>Bitcoin Jungle Wallet" } }, - "galoy": { - "phone_number": { - "label": "अपना फोन नंबर दर्ज करें" - }, - "sms_code": { - "label": "अपना SMS सत्यापन कोड दर्ज करें" - }, - "token": { - "label": "अपना JWT token दर्ज करें", - "info": "{{label}} लॉगिन वर्तमान में अपग्रेड किया जा रहा है। यदि आप एक उन्नत उपयोगकर्ता हैं, तो आप <0>वेब वॉलेट (wallet.mainnet.galoy.io)< के माध्यम से लॉग इन करके अपना JWT टोकन प्राप्त कर सकते हैं। /0><1/><1/>JWT ऐसा दिखता है: <2>eyJhbG...<1/><1/>" - }, - "actions": { - "login": "लॉग इन" - }, - "errors": { - "setup_failed": "स्थापना विफल", - "missing_token": "JWT गायब, लॉग इन नहीं हो सका।", - "invalid_token": "अवैध JWT उत्तीर्ण" - } - }, "btcpay": { "title": "BTCPay Server", "page": { diff --git a/src/i18n/locales/id/translation.json b/src/i18n/locales/id/translation.json index dec19899a1..af809c3c19 100644 --- a/src/i18n/locales/id/translation.json +++ b/src/i18n/locales/id/translation.json @@ -210,26 +210,6 @@ "title": "Sambungkan dengan <0>Bitcoin Jungle Wallet" } }, - "galoy": { - "phone_number": { - "label": "Masukkan nomor telepon kamu" - }, - "sms_code": { - "label": "Masukkan kode verifikasi SMS" - }, - "token": { - "label": "Masukkan token Access", - "info": "{{label}} integrasi dengan Alby masih berstatus alpha dan hanya disarankan untuk pengguna yang berpengalaman.

Kamu bisa mengambil token Access pada aplikasi mobile, klik pada ikon pengaturan, dan sentuh 3 kali pada build number untuk membukan developer menu.

kemudian, token akses akan bisa disalin.

" - }, - "errors": { - "setup_failed": "Persiapan gagal", - "missing_token": "Token akses tidak ada, tidak dapat masuk.", - "invalid_token": "Token akses salah" - }, - "actions": { - "login": "Login" - } - }, "btcpay": { "page": { "title": "Sambungkan dengan node BTCPay LND", diff --git a/src/i18n/locales/it/translation.json b/src/i18n/locales/it/translation.json index 9bfef8473d..d8000c5eb3 100644 --- a/src/i18n/locales/it/translation.json +++ b/src/i18n/locales/it/translation.json @@ -165,26 +165,6 @@ "title": "Connetti a <0>Bitcoin Jungle Wallet" } }, - "galoy": { - "phone_number": { - "label": "Inserisci il tuo numero di telefono" - }, - "sms_code": { - "label": "Inserisci il codice di verifica SMS" - }, - "token": { - "label": "Inserisci il tuo token JWT", - "info": "Il login {{label}} è attualmente in fase di aggiornamento. Se sei un utente avanzato puoi recuperare il tuo token JWT effettuando il login via il <0>Web Wallet (wallet.mainnet.galoy.io)<1/><1/>Il token JWT assomiglia a: <2>eyJhbG...<1/><1/>" - }, - "actions": { - "login": "Login" - }, - "errors": { - "setup_failed": "Setup non riuscito", - "missing_token": "JWT mancante, impossibile effettuare il login.", - "invalid_token": "passato JWT non valido" - } - }, "btcpay": { "title": "BTCPay Server", "page": { diff --git a/src/i18n/locales/ja/translation.json b/src/i18n/locales/ja/translation.json index 6c5dfd8668..c5ce2646cf 100644 --- a/src/i18n/locales/ja/translation.json +++ b/src/i18n/locales/ja/translation.json @@ -214,26 +214,6 @@ "title": "<0>Bitcoin Jungle Walletに接続" } }, - "galoy": { - "phone_number": { - "label": "電話番号を入力" - }, - "sms_code": { - "label": "SMS認証コードを入力" - }, - "token": { - "label": "アクセストークンを入力", - "info": "Albyと{{label}}の連携は現在アルファ版のため、上級者のみに推奨されます。

アクセストークンは、モバイルアプリで設定アイコンをクリックし、ビルド番号を3回タップして開発者メニューを開くことで入手できます。

アクセストークンはここからコピーできます。

" - }, - "actions": { - "login": "ログイン" - }, - "errors": { - "setup_failed": "セットアップに失敗しました", - "missing_token": "アクセストークンが見つからないためログインできませんでした。", - "invalid_token": "無効なアクセストークンです" - } - }, "btcpay": { "page": { "title": "BTCPay LNDノードに接続", diff --git a/src/i18n/locales/mr/translation.json b/src/i18n/locales/mr/translation.json index 19793a6eb7..b4ade1ddec 100644 --- a/src/i18n/locales/mr/translation.json +++ b/src/i18n/locales/mr/translation.json @@ -204,26 +204,6 @@ "title": "<0>Bitcoin Jungle Wallet ला कनेक्ट करा" } }, - "galoy": { - "phone_number": { - "label": "तुमचा फोन नंबर एंटर करा" - }, - "sms_code": { - "label": "तुमचा SMS सत्यापन कोड प्रविष्ट करा" - }, - "token": { - "label": "JWT token एंटर करा", - "info": "The {{label}} login सध्या अपग्रेड केले जात आहे. तुम्ही प्रगत वापरकर्ते असल्यास, तुम्ही <0>वेब वॉलेट (wallet.mainnet.galoy.io)<1/><1/>JWT द्वारे लॉग इन करून तुमचे JWT टोकन मिळवू शकता: < 2>eyJhbG...<1/><1/>" - }, - "actions": { - "login": "Login" - }, - "errors": { - "setup_failed": "Setup अयशस्वी", - "missing_token": "JWT शोधू शकत नाही म्हणून लॉग इन करू शकलो नाही.", - "invalid_token": "चुकीचे JWT पास झाले" - } - }, "btcpay": { "title": "BTCPay Server", "page": { diff --git a/src/i18n/locales/nl/translation.json b/src/i18n/locales/nl/translation.json index 69772b7762..f2f9c7ae71 100644 --- a/src/i18n/locales/nl/translation.json +++ b/src/i18n/locales/nl/translation.json @@ -163,19 +163,13 @@ "title": "", "page": { "title": "" - } - }, - "galoy": { - "phone_number": { - "label": "" - }, - "sms_code": { - "label": "" }, "token": { "label": "", "info": "" - }, + } + }, + "galoy": { "actions": { "login": "" }, diff --git a/src/i18n/locales/pl/translation.json b/src/i18n/locales/pl/translation.json index eb65f50457..e4746b0fff 100644 --- a/src/i18n/locales/pl/translation.json +++ b/src/i18n/locales/pl/translation.json @@ -210,26 +210,6 @@ "title": "Podłącz do <0>Portfela Bitcoin Jungle" } }, - "galoy": { - "phone_number": { - "label": "Wprowadź numer telefonu" - }, - "sms_code": { - "label": "Wprowadź pod weryfikujący SMS" - }, - "token": { - "label": "Wprowadź swój token JWT", - "info": "Logowanie do {{label}} jest w trakcie aktualizacji. Jeśli jesteś zaawansowanym użytkownikiem, pobierz swój token JWT logując się przez <0>Portfel webowy (wallet.mainnet.galoy.io)<1/><1/>Token JWT wygląda tak: <2>eyJhbG...<1/><1/>" - }, - "actions": { - "login": "Zaloguj" - }, - "errors": { - "setup_failed": "Konfiguracja nie powiodła się", - "missing_token": "Brakuje tokenu JWT, logowanie nieudane.", - "invalid_token": "podano nieprawidłowy token JWT" - } - }, "btcpay": { "title": "BTCPay Server", "page": { diff --git a/src/i18n/locales/pt_BR/translation.json b/src/i18n/locales/pt_BR/translation.json index 06f6ea5f02..901b60d610 100644 --- a/src/i18n/locales/pt_BR/translation.json +++ b/src/i18n/locales/pt_BR/translation.json @@ -171,24 +171,6 @@ "connection_failed": "Falha na conexão. A URL de conexão do servidor BTCPay está correta e acessível?" } }, - "galoy": { - "phone_number": { - "label": "Insira seu número de telefone" - }, - "sms_code": { - "label": "Insira o código de verificação SMS" - }, - "token": { - "label": "Insira o token JWT" - }, - "actions": { - "login": "Login" - }, - "errors": { - "setup_failed": "Falha na configuração", - "missing_token": "JWT ausente, não foi possível fazer login." - } - }, "lndhub_go": { "title": "LNDHub", "page": { diff --git a/src/i18n/locales/ro/translation.json b/src/i18n/locales/ro/translation.json index 25a17af197..914522a29f 100644 --- a/src/i18n/locales/ro/translation.json +++ b/src/i18n/locales/ro/translation.json @@ -204,26 +204,6 @@ "title": "Conectare la <0>Bitcoin Jungle Wallet" } }, - "galoy": { - "phone_number": { - "label": "Introdu numarul tau de telefon" - }, - "sms_code": { - "label": "Introdu codul de verificare primit prin SMS" - }, - "token": { - "label": "Introdu tokenul tau JWT", - "info": "Momentan {{eticheta}} de login este in curs de actualizare. Daca esti un utilizator avansat, poti sa iei tokenul tau JWT prin logare via <0>Web Wallet (wallet.mainnet.galoy.io)<1/><1/>Tokenul JWT este de tipul: <2>eyJhbG...<1/><1/>" - }, - "actions": { - "login": "Login" - }, - "errors": { - "setup_failed": "Setare esuata", - "missing_token": "Lipseste JWT, nu s-a putut efectua logarea.", - "invalid_token": "JWT invalid a trecut" - } - }, "btcpay": { "title": "Serverul BTCPay", "page": { diff --git a/src/i18n/locales/ru/translation.json b/src/i18n/locales/ru/translation.json index fe7116cd19..ca3fc10de0 100644 --- a/src/i18n/locales/ru/translation.json +++ b/src/i18n/locales/ru/translation.json @@ -205,16 +205,6 @@ } }, "galoy": { - "phone_number": { - "label": "" - }, - "sms_code": { - "label": "" - }, - "token": { - "label": "", - "info": "" - }, "actions": { "login": "" }, diff --git a/src/i18n/locales/sv/translation.json b/src/i18n/locales/sv/translation.json index ec8852a825..c037e86e57 100644 --- a/src/i18n/locales/sv/translation.json +++ b/src/i18n/locales/sv/translation.json @@ -171,26 +171,6 @@ "title": "Anslut en <0>Bitcoin Jungle Wallet" } }, - "galoy": { - "phone_number": { - "label": "Fyll i ditt telefonnummer" - }, - "sms_code": { - "label": "Fyll i verifieringskoden du fick via SMS" - }, - "token": { - "label": "Fyll i din JWT-token", - "info": "Inloggning till {{label}} uppdateras. Om du är avancerad användare kan du hämta din JWT token genom att logga in via <0>Web Wallet (wallet.mainnet.galoy.io)<1/><1/> JWT ser ut som följer: <2>eyJhbG...<1/><1/>" - }, - "actions": { - "login": "Logga in" - }, - "errors": { - "setup_failed": "Konfiguration misslyckades", - "missing_token": "JWT saknas, kunde inte logga in.", - "invalid_token": "ogiltig JWT godkändes" - } - }, "btcpay": { "title": "BTCPay Server", "page": { diff --git a/src/i18n/locales/th/translation.json b/src/i18n/locales/th/translation.json index 7ec257d389..d0753036fd 100644 --- a/src/i18n/locales/th/translation.json +++ b/src/i18n/locales/th/translation.json @@ -574,31 +574,17 @@ "placeholder": "your-node-onion-address:port" } }, - "galoy": { - "token": { - "info": "การรวม {{label}} กับ Alby อยู่ในรุ่นเบต้าและแนะนำสำหรับ advanced users.

คุณสามารถรับโทเค็นการเข้าถึงของคุณได้โดยไปที่แอปมือถือ คลิกที่ไอคอนการตั้งค่า จากนั้นแตะ 3 ครั้งบนหมายเลขบิวด์เพื่อเปิดเมนูสำหรับนักพัฒนา

โทเค็นการเข้าถึงสามารถคัดลอกได้จากที่นี่

", - "label": "โปรดใส่ Access token" - }, - "errors": { - "missing_token": "Access token สูญหาย ไม่สามารถเข้าสู่ระบบได้", - "setup_failed": "การตั้งค่าล้มเหลว", - "invalid_token": "Access token ไม่ถูกต้อง" - }, - "actions": { - "login": "เข้าสู่ระบบ" - }, - "phone_number": { - "label": "ใส่เบอร์โทรศัพท์มือถือของคุณ" - }, - "sms_code": { - "label": "โปรดใส่ SMS verification code" + "blink": { + "title": "Blink plånbok", + "page": { + "title": "Anslut <0>Blink Wallet" } }, "bitcoin_jungle": { + "title": "Bitcoin Jungle Wallet", "page": { "title": "เชื่อมต่อกับ <0>Bitcoin Jungle Wallet" - }, - "title": "Bitcoin Jungle Wallet" + } }, "btcpay": { "page": { diff --git a/src/i18n/locales/tl/translation.json b/src/i18n/locales/tl/translation.json index e48f6e37cc..45ba4169d8 100644 --- a/src/i18n/locales/tl/translation.json +++ b/src/i18n/locales/tl/translation.json @@ -164,26 +164,6 @@ "title": "" } }, - "galoy": { - "phone_number": { - "label": "" - }, - "sms_code": { - "label": "" - }, - "token": { - "label": "", - "info": "" - }, - "actions": { - "login": "" - }, - "errors": { - "setup_failed": "", - "missing_token": "", - "invalid_token": "" - } - }, "btcpay": { "title": "", "page": { diff --git a/src/i18n/locales/uk/translation.json b/src/i18n/locales/uk/translation.json index acc6ef6db7..876691ddd5 100644 --- a/src/i18n/locales/uk/translation.json +++ b/src/i18n/locales/uk/translation.json @@ -204,26 +204,6 @@ "title": "" } }, - "galoy": { - "phone_number": { - "label": "" - }, - "sms_code": { - "label": "" - }, - "token": { - "label": "", - "info": "" - }, - "actions": { - "login": "" - }, - "errors": { - "setup_failed": "", - "missing_token": "", - "invalid_token": "" - } - }, "btcpay": { "title": "", "page": { diff --git a/src/i18n/locales/zh_Hans/translation.json b/src/i18n/locales/zh_Hans/translation.json index 18acc182fd..0c8bbb7027 100644 --- a/src/i18n/locales/zh_Hans/translation.json +++ b/src/i18n/locales/zh_Hans/translation.json @@ -54,12 +54,6 @@ "drag_and_drop": "将你的macaroon拖放到此处或<0>浏览", "title": "LND" }, - "bitcoin_jungle": { - "page": { - "title": "连接<0>比特币丛林钱包" - }, - "title": "比特币丛林钱包" - }, "eclair": { "url": { "label": "Eclair URL", @@ -88,24 +82,16 @@ }, "title": "Citadel" }, - "galoy": { - "token": { - "label": "输入你的JWT令牌", - "info": "目前{{label}}登录正在升级中。如果你是高级用户,你可以通过<0>网络钱包(wallet.mainnet.galoy.io)<1/><1/>登录来获取你的JWT令牌,JWT看起来像:<2>eyJhbG...<1/><1/>" - }, - "actions": { - "login": "登录" - }, - "errors": { - "setup_failed": "设置失败", - "missing_token": "JWT不存在,无法登录。", - "invalid_token": "传递了无效的JWT" - }, - "sms_code": { - "label": "输入你的短信验证码" - }, - "phone_number": { - "label": "输入你的电话号码" + "blink": { + "title": "眨眼钱包", + "page": { + "title": "连接<0>眨眼钱包" + } + }, + "bitcoin_jungle": { + "title": "比特币丛林钱包", + "page": { + "title": "连接<0>比特币丛林钱包" } }, "btcpay": { @@ -122,12 +108,6 @@ "placeholder": "config=http://your-btc-pay.org/lnd-config/212121/lnd.config" } }, - "blink": { - "page": { - "title": "连接<0>眨眼钱包" - }, - "title": "眨眼钱包" - }, "commando": { "config": { "placeholder": "config=https://your-btc-pay.org/lnd-config/212121/lnd.config", diff --git a/src/i18n/locales/zh_Hant/translation.json b/src/i18n/locales/zh_Hant/translation.json index f471661e6f..17df2faba6 100644 --- a/src/i18n/locales/zh_Hant/translation.json +++ b/src/i18n/locales/zh_Hant/translation.json @@ -211,26 +211,6 @@ "title": "連接<0>Bitcoin Jungle Wallet" } }, - "galoy": { - "phone_number": { - "label": "輸入你的電話號碼" - }, - "sms_code": { - "label": "輸入你的短信驗證碼" - }, - "token": { - "label": "輸入你的 JWT 令牌", - "info": "當前正在升級 {{label}} 登錄名。如果你是高級使用者,你可以通過<0>網絡錢包(wallet.mainnet.galoy.io)<1/><1/>登錄來獲取你的JWT令牌,JWT看起來像:<2>eyJhbG...<1/><1/>" - }, - "actions": { - "login": "登錄" - }, - "errors": { - "setup_failed": "設置失敗", - "missing_token": "JWT不存在,無法登陸。", - "invalid_token": "傳遞了無效的JWT" - } - }, "btcpay": { "title": "BTCPay Server", "page": {