diff --git a/src/index.ts b/src/index.ts index 940b8cd..a50c1d0 100644 --- a/src/index.ts +++ b/src/index.ts @@ -5,6 +5,9 @@ declare global { interface Window { Buffer: typeof Buffer; bearby?: unknown; + massaWallet?: { + standalone: boolean; + }; } } diff --git a/src/massaStation/MassaStationAccount.ts b/src/massaStation/MassaStationAccount.ts index 61b907f..e548562 100644 --- a/src/massaStation/MassaStationAccount.ts +++ b/src/massaStation/MassaStationAccount.ts @@ -1,8 +1,5 @@ import { getRequest, postRequest } from './RequestHandler'; -import { - MASSA_STATION_URL, - MASSA_STATION_ACCOUNTS_URL, -} from './MassaStationWallet'; +import { walletApiUrl, MASSA_STATION_URL } from './MassaStationWallet'; import { argsToBase64, base64ToByteArray, @@ -117,7 +114,7 @@ export class MassaStationAccount implements Provider { }; const res = await postRequest( - `${MASSA_STATION_ACCOUNTS_URL}/${this.accountName}/signMessage`, + `${walletApiUrl()}/accounts/${this.accountName}/signMessage`, signData, ); @@ -155,7 +152,7 @@ export class MassaStationAccount implements Provider { }; const res = await postRequest( - `${MASSA_STATION_ACCOUNTS_URL}/${this.accountName}/rolls`, + `${walletApiUrl()}/accounts/${this.accountName}/rolls`, body, ); @@ -193,7 +190,7 @@ export class MassaStationAccount implements Provider { }; const res = await postRequest( - `${MASSA_STATION_ACCOUNTS_URL}/${this.accountName}/transfer`, + `${walletApiUrl()}/accounts/${this.accountName}/transfer`, body, ); diff --git a/src/massaStation/MassaStationWallet.ts b/src/massaStation/MassaStationWallet.ts index 4a3af32..6610f8d 100644 --- a/src/massaStation/MassaStationWallet.ts +++ b/src/massaStation/MassaStationWallet.ts @@ -21,8 +21,14 @@ export const MASSA_STATION_URL = 'https://station.massa/'; /** * The MassaStation accounts url */ -export const MASSA_STATION_ACCOUNTS_URL = `${MASSA_STATION_URL}plugin/massa-labs/massa-wallet/api/accounts`; +export function walletApiUrl(): string { + // This is a hack to detect that MS wallet is working in standalone mode + if (typeof window !== 'undefined' && window.massaWallet?.standalone) { + return `http://localhost:8080/api`; + } + return `${MASSA_STATION_URL}plugin/massa-labs/massa-wallet/api`; +} /** * Events emitted by MassaStation */ @@ -51,7 +57,7 @@ export class MassaStationWallet implements Wallet { } public async accounts(): Promise { - const res = await getRequest(MASSA_STATION_ACCOUNTS_URL); + const res = await getRequest(walletApiUrl() + '/accounts'); if (res.isError) { throw res.error; @@ -69,7 +75,7 @@ export class MassaStationWallet implements Wallet { publicKey: string, privateKey: string, ): Promise { - const res = await putRequest(MASSA_STATION_ACCOUNTS_URL, { + const res = await putRequest(walletApiUrl() + '/accounts', { publicKey, privateKey, }); @@ -81,7 +87,7 @@ export class MassaStationWallet implements Wallet { public async deleteAccount(address: string): Promise { // get all accounts and find the account to delete const allAccounts = await getRequest( - MASSA_STATION_ACCOUNTS_URL, + walletApiUrl() + '/accounts', ); if (allAccounts.isError) throw allAccounts.error; @@ -95,7 +101,7 @@ export class MassaStationWallet implements Wallet { } const res = await deleteRequest( - `${MASSA_STATION_ACCOUNTS_URL}/${accountToDelete.nickname}`, + `${walletApiUrl()}/accounts/${accountToDelete.nickname}`, ); if (res.isError) { @@ -121,7 +127,7 @@ export class MassaStationWallet implements Wallet { */ public async generateNewAccount(name: string): Promise { const response = await postRequest( - MASSA_STATION_ACCOUNTS_URL + '/' + name, + walletApiUrl() + '/accounts/' + name, {}, );