@@ -22,9 +22,16 @@ interface TableColumnsProps {
2222}
2323
2424// Calculate total staked across all vaults
25- const calculateTotalStaked = ( vaults : StakingVault [ ] ) : bigint => {
25+ const calculateTotalStaked = (
26+ vaults : StakingVault [ ] ,
27+ emergencyMode : boolean
28+ ) : bigint => {
2629 return vaults . reduce (
27- ( acc , vault ) => acc + ( vault . data ?. stakedBalance || 0n ) ,
30+ ( acc , vault ) =>
31+ acc +
32+ ( emergencyMode
33+ ? vault . data ?. depositedBalance || 0n
34+ : vault . data ?. stakedBalance || 0n ) ,
2835 BigInt ( 0 )
2936 )
3037}
@@ -68,7 +75,10 @@ export const createVaultTableColumns = ({
6875 isConnected,
6976} : TableColumnsProps ) => {
7077 // Calculate totals and current time once per column creation
71- const totalStaked = calculateTotalStaked ( vaults )
78+ const totalStaked = calculateTotalStaked (
79+ vaults ,
80+ Boolean ( emergencyModeEnabled )
81+ )
7282 const totalKarma = calculateTotalKarma ( vaults )
7383 const currentTimestamp = getCurrentTimestamp ( )
7484 const columnHelper = createColumnHelper < StakingVault > ( )
@@ -109,12 +119,15 @@ export const createVaultTableColumns = ({
109119 } ,
110120 } ) ,
111121 columnHelper . accessor ( 'data.stakedBalance' , {
112- header : 'Staked' ,
122+ header : emergencyModeEnabled ? 'Vault balance' : 'Staked' ,
113123 cell : ( { row } ) => {
124+ const balance = emergencyModeEnabled
125+ ? row . original . data ?. depositedBalance
126+ : row . original . data ?. stakedBalance
114127 return (
115128 < div className = "flex items-center gap-1" >
116129 < span className = "text-[13px] font-medium text-neutral-100" >
117- { formatSNT ( row . original . data ?. stakedBalance || 0n ) }
130+ { formatSNT ( balance || 0n ) }
118131 < span className = "ml-0.5 text-neutral-50" > SNT</ span >
119132 </ span >
120133 </ div >
@@ -265,33 +278,31 @@ export const createVaultTableColumns = ({
265278
266279 return (
267280 < div className = "flex items-end justify-end gap-2 lg:gap-4" >
281+ { Boolean ( emergencyModeEnabled ) && (
282+ < WithdrawVaultModal
283+ open = { isWithdrawModalOpen }
284+ onOpenChange = { open =>
285+ setOpenModalVaultId ( open ? withdrawModalId : null )
286+ }
287+ onClose = { ( ) => setOpenModalVaultId ( null ) }
288+ vaultAddress = { row . original . address }
289+ amountWei = { row . original . data ?. depositedBalance || 0n }
290+ >
291+ < Button
292+ variant = "danger"
293+ size = "24"
294+ iconBefore = { < AlertIcon /> }
295+ disabled = {
296+ ! row . original . data ?. depositedBalance ||
297+ row . original . data . depositedBalance === 0n
298+ }
299+ >
300+ Withdraw funds
301+ </ Button >
302+ </ WithdrawVaultModal >
303+ ) }
268304 { isLocked ? (
269305 < div className = "flex items-center gap-2" >
270- { ! emergencyModeEnabled && (
271- < WithdrawVaultModal
272- open = { isWithdrawModalOpen }
273- onOpenChange = { open =>
274- setOpenModalVaultId ( open ? withdrawModalId : null )
275- }
276- onClose = { ( ) => setOpenModalVaultId ( null ) }
277- vaultAddress = { row . original . address }
278- >
279- < Button
280- variant = "danger"
281- size = "32"
282- disabled = { ! isConnected }
283- className = "min-w-fit bg-danger-50 text-[13px] text-white-100 hover:bg-danger-60"
284- >
285- < AlertIcon className = "shrink-0" />
286- < span className = "hidden whitespace-nowrap xl:inline" >
287- Withdraw funds
288- </ span >
289- < span className = "whitespace-nowrap xl:hidden" >
290- Withdraw
291- </ span >
292- </ Button >
293- </ WithdrawVaultModal >
294- ) }
295306 < LockVaultModal
296307 open = { isLockModalOpen }
297308 onOpenChange = { open =>
0 commit comments