@near-eth/client
Advanced tools
Comparing version 1.9.0-rc.1 to 1.9.0
@@ -42,4 +42,5 @@ import { ConnectorLib, Transfer, DecoratedTransfer, UnsavedTransfer, CustomTransferTypes } from './types'; | ||
export declare function getReplacementTransfers(): Transfer[]; | ||
export declare function checkStatusAll({ loop }?: { | ||
export declare function checkStatusAll({ loop, otp }?: { | ||
loop?: number; | ||
otp?: boolean; | ||
}): Promise<void>; | ||
@@ -68,2 +69,6 @@ export declare function act(id: string): Promise<void>; | ||
export declare function untrack(transferId: string): Promise<void>; | ||
export declare const TRANSFERS_LOCK_KEY = "rainbow-bridge-transfers-lock"; | ||
export declare const TRANSFERS_LOCKED = "locked"; | ||
export declare const lockBridgeTransfersStorage: () => void; | ||
export declare const unlockBridgeTransfersStorage: () => void; | ||
//# sourceMappingURL=index.d.ts.map |
@@ -26,3 +26,3 @@ "use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.untrack = exports.track = exports.clear = exports.act = exports.checkStatusAll = exports.getReplacementTransfers = exports.replaceTransfers = exports.remove = exports.decorate = exports.get = exports.getTransferType = exports.setTransferTypes = exports.setNearWallet = exports.setNearProvider = exports.setSignerProvider = exports.setNearConnection = exports.setEthProvider = exports.setBridgeParams = exports.setAuroraProvider = exports.getSignerProvider = exports.getNearAccountId = exports.getNearWallet = exports.getNearProvider = exports.getNearAccount = exports.getEthProvider = exports.getBridgeParams = exports.getAuroraProvider = exports.onChange = void 0; | ||
exports.unlockBridgeTransfersStorage = exports.lockBridgeTransfersStorage = exports.TRANSFERS_LOCKED = exports.TRANSFERS_LOCK_KEY = exports.untrack = exports.track = exports.clear = exports.act = exports.checkStatusAll = exports.getReplacementTransfers = exports.replaceTransfers = exports.remove = exports.decorate = exports.get = exports.getTransferType = exports.setTransferTypes = exports.setNearWallet = exports.setNearProvider = exports.setSignerProvider = exports.setNearConnection = exports.setEthProvider = exports.setBridgeParams = exports.setAuroraProvider = exports.getSignerProvider = exports.getNearAccountId = exports.getNearWallet = exports.getNearProvider = exports.getNearAccount = exports.getEthProvider = exports.getBridgeParams = exports.getAuroraProvider = exports.onChange = void 0; | ||
const storage = __importStar(require("./storage")); | ||
@@ -234,6 +234,12 @@ const status = __importStar(require("./statuses")); | ||
* | ||
* Can provide a `loop` frequency, in milliseconds, to call repeatedly while | ||
* inProgress transfers remain | ||
* @param loop frequency, in milliseconds, to call repeatedly while inProgress transfers remain. | ||
* @param otp One time pass to allow updating storage on page load even when it is locked. | ||
* | ||
* `otp` is used when multiple tabs are open and a transaction is made with a NEAR browser wallet. | ||
* The bridge app can lock the localStorage (lockBridgeTransfersStorage) | ||
* before the redirect so that other tabs will not update transfers based on missing urlParams. | ||
* On page load (after browser wallet redirect), checkStatusAll is called with otp to update the transfer from urlParams while the lock is still there for other tabs. | ||
* The lock can then be removed (unlockBridgeTransfersStorage). | ||
*/ | ||
async function checkStatusAll({ loop } = { loop: undefined }) { | ||
async function checkStatusAll({ loop, otp } = { loop: undefined, otp: false }) { | ||
if (loop !== undefined && !Number.isInteger(loop)) { | ||
@@ -244,7 +250,7 @@ throw new Error('`loop` must be frequency, in milliseconds'); | ||
await checkPendingTransferSync(); | ||
const inProgress = await get({ | ||
const inProgress = get({ | ||
filter: t => t.status === status.IN_PROGRESS | ||
}); | ||
// Check & update statuses for all in parallel | ||
await Promise.all(inProgress.map(async (t) => await checkStatus(t.id))); | ||
await Promise.all(inProgress.map(async (t) => await checkStatus(t.id, otp !== null && otp !== void 0 ? otp : false))); | ||
// loop, if told to loop | ||
@@ -336,4 +342,10 @@ if (loop !== undefined) { | ||
exports.untrack = untrack; | ||
exports.TRANSFERS_LOCK_KEY = 'rainbow-bridge-transfers-lock'; | ||
exports.TRANSFERS_LOCKED = 'locked'; | ||
const lockBridgeTransfersStorage = () => localStorage.setItem(exports.TRANSFERS_LOCK_KEY, exports.TRANSFERS_LOCKED); | ||
exports.lockBridgeTransfersStorage = lockBridgeTransfersStorage; | ||
const unlockBridgeTransfersStorage = () => localStorage.setItem(exports.TRANSFERS_LOCK_KEY, ''); | ||
exports.unlockBridgeTransfersStorage = unlockBridgeTransfersStorage; | ||
// Check the status of a single transfer. | ||
async function checkStatus(id) { | ||
async function checkStatus(id, otp) { | ||
let transfer = storage.get(id); | ||
@@ -348,3 +360,7 @@ if (!transfer) { | ||
transfer = await type.checkStatus(transfer); | ||
await storage.update(transfer); | ||
// Update browser storage when it is not locked or with one time pass. | ||
if (typeof window !== 'undefined' && | ||
(otp || localStorage.getItem(exports.TRANSFERS_LOCK_KEY) !== exports.TRANSFERS_LOCKED)) { | ||
await storage.update(transfer); | ||
} | ||
} | ||
@@ -351,0 +367,0 @@ catch (e) { |
{ | ||
"name": "@near-eth/client", | ||
"version": "1.9.0-rc.1", | ||
"version": "1.9.0", | ||
"license": "(MIT AND Apache-2.0)", | ||
@@ -28,4 +28,3 @@ "main": "dist/index.js", | ||
"url": "https://github.com/aurora-is-near/rainbow-bridge-client/tree/main/packages/client" | ||
}, | ||
"stableVersion": "1.8.0" | ||
} | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
92626
1195
1