Skip to content

Commit 1047cca

Browse files
committed
Improve condition for Commitment button and display commitment end date
1 parent dfe4e52 commit 1047cca

File tree

3 files changed

+52
-1
lines changed

3 files changed

+52
-1
lines changed

src/pages/Staking/StakeDetailsPage/index.tsx

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,12 @@ const StakeDetailsPage: FC = () => {
7575
stakingProviderAddress || AddressZero
7676
)
7777

78+
const endCommitment = tacoApp.stakingProviderInfo?.endCommitment
79+
const isCommited = (Number(endCommitment) ?? 0) > 0
80+
const endCommitmentDate = new Date(
81+
(Number(endCommitment) ?? 0) * 1000
82+
).toLocaleDateString()
83+
7884
const isInActiveStake = BigNumber.from(stake?.totalInTStake ?? "0").isZero()
7985

8086
const { total: rewardsForStake } = useAppSelector((state) =>
@@ -166,10 +172,12 @@ const StakeDetailsPage: FC = () => {
166172
</StakeDetailRow>
167173
</Stack>
168174
</SimpleGrid>
169-
{tacoApp.isAuthorized && (
175+
{tacoApp.isAuthorized && !isCommited ? (
170176
<Button onClick={handleCommitToTaco} type="submit">
171177
Commit to TACo
172178
</Button>
179+
) : (
180+
<p>Your commitment ends on {endCommitmentDate}</p>
173181
)}
174182
</Card>
175183
) : (

src/store/staking-applications/slice.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,7 @@ export const stakingApplicationsSlice = createSlice({
287287
deauthorizationCreatedAt: undefined,
288288
isOperatorInPool: undefined,
289289
operator: AddressZero,
290+
stakingProviderInfo: undefined,
290291
}
291292

292293
state.randomBeacon.stakingProviders.data[stakingProvider] = {

src/threshold-ts/applications/index.ts

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,20 @@ export interface AuthorizationParameters<
3838
authorizationDecreaseChangePeriod: NumberType
3939
}
4040

41+
export interface StakingProviderInfo<
42+
NumberType extends BigNumberish = BigNumber
43+
> {
44+
operator: string
45+
operatorConfirmed: boolean
46+
operatorStartTimestamp: NumberType
47+
authorized: NumberType
48+
deauthorizing: NumberType
49+
endDeauthorization: NumberType
50+
tReward: NumberType
51+
rewardPerTokenPaid: NumberType
52+
endCommitment: NumberType
53+
}
54+
4155
export interface StakingProviderAppInfo<
4256
NumberType extends BigNumberish = BigNumber
4357
> {
@@ -75,6 +89,8 @@ export interface StakingProviderAppInfo<
7589
* it means that the operator for a given staking provider is not set.
7690
*/
7791
isOperatorInPool: boolean | undefined
92+
93+
stakingProviderInfo?: StakingProviderInfo | undefined
7894
}
7995

8096
/**
@@ -202,6 +218,8 @@ export interface IApplication {
202218
*/
203219
stakingProviderToOperator(stakingProvider: string): Promise<string>
204220

221+
stakingProviderInfo(stakingProvider: string): Promise<StakingProviderInfo>
222+
205223
/**
206224
* Used to get staking provider address mapped to the given registered
207225
* operator address
@@ -314,6 +332,15 @@ export class Application implements IApplication {
314332
},
315333
]
316334

335+
const tacoCalls: ContractCall[] = [
336+
{
337+
interface: this.contract.interface,
338+
address: this.contract.address,
339+
method: "stakingProviderInfo",
340+
args: [stakingProvider],
341+
},
342+
]
343+
317344
const [
318345
authorizedStake,
319346
pendingAuthorizationDecrease,
@@ -323,6 +350,14 @@ export class Application implements IApplication {
323350
[operator],
324351
] = await this._multicall.aggregate(calls)
325352

353+
let stakingProviderInfo
354+
try {
355+
;[stakingProviderInfo] = await this._multicall.aggregate(tacoCalls)
356+
} catch (error) {
357+
console.warn("Failed to aggregate tacoCalls", error)
358+
stakingProviderInfo = undefined
359+
}
360+
326361
let isOperatorInPool = undefined
327362
if (operator && !isAddressZero(operator)) {
328363
try {
@@ -368,6 +403,7 @@ export class Application implements IApplication {
368403
deauthorizationCreatedAt,
369404
isOperatorInPool,
370405
operator,
406+
stakingProviderInfo,
371407
}
372408
}
373409

@@ -448,6 +484,12 @@ export class Application implements IApplication {
448484
)
449485
}
450486

487+
stakingProviderInfo = async (
488+
stakingProvider: string
489+
): Promise<StakingProviderInfo> => {
490+
return await this._application.stakingProviderInfo(stakingProvider)
491+
}
492+
451493
stakingProviderToOperator = async (
452494
stakingProvider: string
453495
): Promise<string> => {

0 commit comments

Comments
 (0)