@broxus/airdrop-ui
Advanced tools
import { TonConnectUI } from '@tonconnect/ui'; | ||
import { ProviderRpcClient, Subscriber as RpcSubscriber } from 'everscale-inpage-provider'; | ||
import { Clock } from 'everscale-standalone-client'; | ||
import { ClaimData, StorageData } from './types'; | ||
import { AirdropStatus, ClaimData, StorageData } from './types'; | ||
declare class State<T extends object> { | ||
@@ -28,2 +28,3 @@ value: T; | ||
claimLoading: boolean; | ||
status: AirdropStatus; | ||
}; | ||
@@ -54,2 +55,3 @@ export declare class AirdropUI { | ||
protected syncClaimLoading(): void; | ||
protected syncStatus(): void; | ||
protected initSyncClaimData(): void; | ||
@@ -56,0 +58,0 @@ protected initClaimListener(): Promise<void>; |
@@ -54,2 +54,3 @@ "use strict"; | ||
var abi_1 = require("./abi"); | ||
var types_1 = require("./types"); | ||
var State = /** @class */ (function () { | ||
@@ -128,2 +129,3 @@ function State(initialValue) { | ||
claimLoading: false, | ||
status: types_1.AirdropStatus.Loading | ||
}); | ||
@@ -143,2 +145,3 @@ this.getState = this.state.getState.bind(this.state); | ||
this.state.subscribe(this.syncClaimLoading.bind(this), 'storageData'); | ||
this.state.subscribe(this.syncStatus.bind(this)); | ||
this.state.set('userAddress', (_a = this.tonConnectUI.account) === null || _a === void 0 ? void 0 : _a.address); | ||
@@ -322,2 +325,26 @@ this.tonConnectUnsubscribe = this.tonConnectUI.onStatusChange(function (e) { | ||
}; | ||
AirdropUI.prototype.syncStatus = function () { | ||
var _a, _b, _c; | ||
var status = types_1.AirdropStatus.Loading; | ||
var state = this.getState(); | ||
if (!state.userAddress) { | ||
status = types_1.AirdropStatus.NoUser; | ||
} | ||
else if (state.claimed === true) { | ||
status = types_1.AirdropStatus.HasClaimed; | ||
} | ||
else if (state.claimed === false && ((_a = state.claimData) === null || _a === void 0 ? void 0 : _a.status) === 'signed' && state.storageKey) { | ||
status = types_1.AirdropStatus.CanClaim; | ||
} | ||
else if (((_b = state.claimData) === null || _b === void 0 ? void 0 : _b.status) === 'inQueue') { | ||
status = types_1.AirdropStatus.InQueue; | ||
} | ||
else if (((_c = state.claimData) === null || _c === void 0 ? void 0 : _c.status) === 'noReward') { | ||
status = types_1.AirdropStatus.NoReward; | ||
} | ||
else if (!state.airdropName) { | ||
status = types_1.AirdropStatus.NoAirdrop; | ||
} | ||
this.state.set('status', status); | ||
}; | ||
AirdropUI.prototype.initSyncClaimData = function () { | ||
@@ -324,0 +351,0 @@ var _this = this; |
@@ -20,1 +20,10 @@ export type ClaimData = { | ||
}; | ||
export declare enum AirdropStatus { | ||
NoUser = "NoUser", | ||
HasClaimed = "HasClaimed", | ||
CanClaim = "CanClaim", | ||
InQueue = "InQueue", | ||
NoReward = "NoReward", | ||
NoAirdrop = "NoAirdrop", | ||
Loading = "Loading" | ||
} |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.AirdropStatus = void 0; | ||
var AirdropStatus; | ||
(function (AirdropStatus) { | ||
AirdropStatus["NoUser"] = "NoUser"; | ||
AirdropStatus["HasClaimed"] = "HasClaimed"; | ||
AirdropStatus["CanClaim"] = "CanClaim"; | ||
AirdropStatus["InQueue"] = "InQueue"; | ||
AirdropStatus["NoReward"] = "NoReward"; | ||
AirdropStatus["NoAirdrop"] = "NoAirdrop"; | ||
AirdropStatus["Loading"] = "Loading"; | ||
})(AirdropStatus || (exports.AirdropStatus = AirdropStatus = {})); |
{ | ||
"name": "@broxus/airdrop-ui", | ||
"version": "1.0.0", | ||
"version": "1.0.1", | ||
"description": "Ton aidrop ui utils", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
@@ -6,3 +6,3 @@ import { Address as TonAddress } from '@ton/core' | ||
import { AirdropAbi, AirdropFactoryAbi } from './abi' | ||
import { ClaimData, StorageData } from './types' | ||
import { AirdropStatus, ClaimData, StorageData } from './types' | ||
@@ -74,2 +74,3 @@ class State<T extends object> { | ||
claimLoading: boolean | ||
status: AirdropStatus | ||
} | ||
@@ -99,2 +100,3 @@ | ||
claimLoading: false, | ||
status: AirdropStatus.Loading | ||
}) | ||
@@ -122,2 +124,3 @@ | ||
this.state.subscribe(this.syncClaimLoading.bind(this), 'storageData') | ||
this.state.subscribe(this.syncStatus.bind(this)) | ||
@@ -275,2 +278,21 @@ this.state.set('userAddress', this.tonConnectUI.account?.address) | ||
protected syncStatus() { | ||
let status = AirdropStatus.Loading | ||
const state = this.getState() | ||
if (!state.userAddress) { | ||
status = AirdropStatus.NoUser | ||
} else if (state.claimed === true) { | ||
status = AirdropStatus.HasClaimed | ||
} else if (state.claimed === false && state.claimData?.status === 'signed' && state.storageKey) { | ||
status = AirdropStatus.CanClaim | ||
} else if (state.claimData?.status === 'inQueue') { | ||
status = AirdropStatus.InQueue | ||
} else if (state.claimData?.status === 'noReward') { | ||
status = AirdropStatus.NoReward | ||
} else if (!state.airdropName) { | ||
status = AirdropStatus.NoAirdrop | ||
} | ||
this.state.set('status', status) | ||
} | ||
protected initSyncClaimData() { | ||
@@ -277,0 +299,0 @@ clearInterval(this.claimDataTimeout) |
@@ -21,1 +21,11 @@ export type ClaimData = { | ||
} | ||
export enum AirdropStatus { | ||
NoUser = 'NoUser', | ||
HasClaimed = 'HasClaimed', | ||
CanClaim = 'CanClaim', | ||
InQueue = 'InQueue', | ||
NoReward = 'NoReward', | ||
NoAirdrop = 'NoAirdrop', | ||
Loading = 'Loading' | ||
} |
No README
QualityPackage does not have a README. This may indicate a failed publish or a low quality package.
Found 1 instance in 1 package
69906
7.57%15
7.14%1790
4.62%1
-50%43
Infinity%