feat: add HEZ staking reward claim functionality

- Add staking-rewards.ts with unclaimed era detection and payoutStakers
- Show unclaimed rewards with per-era claim buttons in Scores tab
- Support batch claim via utility.batchAll
- Add translations for 6 languages
This commit is contained in:
2026-02-21 18:35:05 +03:00
parent a14bd57bbe
commit f2b809cb7c
11 changed files with 584 additions and 42 deletions
+9
View File
@@ -161,6 +161,15 @@ const ar: Translations = {
claimSuccess: 'تم المطالبة بالمكافأة بنجاح!',
claimFailed: 'فشلت المطالبة بالمكافأة',
noPezRewards: 'لا توجد مكافآت PEZ قابلة للمطالبة',
unclaimedRewards: 'المكافآت غير المطالب بها',
claimStakingReward: 'مطالبة',
claimAllStaking: 'مطالبة الكل',
claimingStakingReward: 'جارٍ المطالبة بمكافآت الستيكينغ...',
stakingClaimSuccess: 'تم المطالبة بمكافآت الستيكينغ!',
stakingClaimFailed: 'فشل المطالبة بمكافآت الستيكينغ',
noUnclaimedRewards: 'لا توجد مكافآت غير مطالب بها',
rewardHistory: 'سجل المكافآت',
era: 'حقبة',
},
wallet: {
+9
View File
@@ -162,6 +162,15 @@ const ckb: Translations = {
claimSuccess: 'خەڵات بە سەرکەوتوویی داوا کرا!',
claimFailed: 'داواکردنی خەڵات سەرنەکەوت',
noPezRewards: 'خەڵاتی PEZ ی داواکراو نییە',
unclaimedRewards: 'خەڵاتە داوانەکراوەکان',
claimStakingReward: 'داواکردن',
claimAllStaking: 'هەموو داوابکە',
claimingStakingReward: 'خەڵاتەکانی ستەیکینگ داوادەکرێن...',
stakingClaimSuccess: 'خەڵاتەکانی ستەیکینگ داواکران!',
stakingClaimFailed: 'داواکردنی خەڵاتەکانی ستەیکینگ سەرکەوتوو نەبوو',
noUnclaimedRewards: 'خەڵاتی داوانەکراو نییە',
rewardHistory: 'مێژووی خەڵاتەکان',
era: 'سەردەم',
},
wallet: {
+9
View File
@@ -161,6 +161,15 @@ const en: Translations = {
claimSuccess: 'Reward claimed successfully!',
claimFailed: 'Failed to claim reward',
noPezRewards: 'No claimable PEZ rewards',
unclaimedRewards: 'Unclaimed Rewards',
claimStakingReward: 'Claim',
claimAllStaking: 'Claim All',
claimingStakingReward: 'Claiming staking rewards...',
stakingClaimSuccess: 'Staking rewards claimed!',
stakingClaimFailed: 'Failed to claim staking rewards',
noUnclaimedRewards: 'No unclaimed rewards',
rewardHistory: 'Reward History',
era: 'Era',
},
wallet: {
+9
View File
@@ -161,6 +161,15 @@ const fa: Translations = {
claimSuccess: 'پاداش با موفقیت مطالبه شد!',
claimFailed: 'مطالبه پاداش ناموفق بود',
noPezRewards: 'پاداش PEZ قابل مطالبه‌ای وجود ندارد',
unclaimedRewards: 'پاداش‌های مطالبه نشده',
claimStakingReward: 'مطالبه',
claimAllStaking: 'مطالبه همه',
claimingStakingReward: 'در حال مطالبه پاداش‌های استیکینگ...',
stakingClaimSuccess: 'پاداش‌های استیکینگ مطالبه شد!',
stakingClaimFailed: 'مطالبه پاداش‌های استیکینگ ناموفق بود',
noUnclaimedRewards: 'پاداش مطالبه نشده‌ای وجود ندارد',
rewardHistory: 'تاریخچه پاداش‌ها',
era: 'دوره',
},
wallet: {
+9
View File
@@ -166,6 +166,15 @@ const krd: Translations = {
claimSuccess: 'Xelat bi serkeftin hat daxwazkirin!',
claimFailed: 'Daxwazkirina xelatê biserneket',
noPezRewards: 'Xelatên PEZ yên daxwazkir tune ne',
unclaimedRewards: 'Xelatên Nedaxwazkir',
claimStakingReward: 'Daxwaz bike',
claimAllStaking: 'Hemûyan Daxwaz Bike',
claimingStakingReward: 'Xelatên staking tên daxwazkirin...',
stakingClaimSuccess: 'Xelatên staking hatin daxwazkirin!',
stakingClaimFailed: 'Daxwazkirina xelatên staking bi ser neket',
noUnclaimedRewards: 'Xelatên nedaxwazkir tune ne',
rewardHistory: 'Dîroka Xelatan',
era: 'Era',
},
wallet: {
+9
View File
@@ -161,6 +161,15 @@ const tr: Translations = {
claimSuccess: 'Ödül başarıyla talep edildi!',
claimFailed: 'Ödül talep edilemedi',
noPezRewards: 'Talep edilebilir PEZ ödülü yok',
unclaimedRewards: 'Talep Edilmemiş Ödüller',
claimStakingReward: 'Talep Et',
claimAllStaking: 'Tümünü Talep Et',
claimingStakingReward: 'Staking ödülleri talep ediliyor...',
stakingClaimSuccess: 'Staking ödülleri talep edildi!',
stakingClaimFailed: 'Staking ödülleri talep edilemedi',
noUnclaimedRewards: 'Talep edilmemiş ödül yok',
rewardHistory: 'Ödül Geçmişi',
era: 'Era',
},
wallet: {
+9
View File
@@ -163,6 +163,15 @@ export interface Translations {
claimSuccess: string;
claimFailed: string;
noPezRewards: string;
unclaimedRewards: string;
claimStakingReward: string;
claimAllStaking: string;
claimingStakingReward: string;
stakingClaimSuccess: string;
stakingClaimFailed: string;
noUnclaimedRewards: string;
rewardHistory: string;
era: string;
};
// Wallet section