diff --git a/src/components/common/ClaimCSBButton.tsx b/src/components/common/ClaimCSBButton.tsx
new file mode 100644
index 0000000000..00b128537d
--- /dev/null
+++ b/src/components/common/ClaimCSBButton.tsx
@@ -0,0 +1,21 @@
+"use client"
+
+import { useTranslations } from "next-intl"
+
+import { useWalletClaimCSBModal } from "@crossbell/connect-kit"
+
+import { Button } from "~/components/ui/Button"
+
+export function ClaimCSBButton() {
+ const t = useTranslations()
+ const claimCSBModal = useWalletClaimCSBModal()
+ return (
+
+ )
+}
diff --git a/src/components/common/ConnectButton.tsx b/src/components/common/ConnectButton.tsx
index f60e8c75c5..96a1f61742 100644
--- a/src/components/common/ConnectButton.tsx
+++ b/src/components/common/ConnectButton.tsx
@@ -276,6 +276,15 @@ export const ConnectButton = ({
}
>
+ csbDetailModal.show()}
+ />
diff --git a/src/components/home/HomeSidebar.tsx b/src/components/home/HomeSidebar.tsx
index 0d303c9d2f..dbcec517c4 100644
--- a/src/components/home/HomeSidebar.tsx
+++ b/src/components/home/HomeSidebar.tsx
@@ -11,6 +11,7 @@ import getQueryClient from "~/lib/query-client"
import { getShowcase } from "~/queries/home.server"
import { getBlockNumber } from "~/queries/site.server"
+import { ClaimCSBButton } from "../common/ClaimCSBButton"
import { FollowAllButton } from "../common/FollowAllButton"
import { BlockNumber } from "./BlockNumber"
import PromotionLinks from "./PromotionLinks"
@@ -91,6 +92,10 @@ export async function HomeSidebar({ hideSearch }: { hideSearch?: boolean }) {
>
+
+
{t("Need More CSB?")}
+
+
)
}
diff --git a/src/messages/en.json b/src/messages/en.json
index 7234afb48d..831841b7b7 100644
--- a/src/messages/en.json
+++ b/src/messages/en.json
@@ -117,5 +117,7 @@
"zh": "Chinese",
"zh-TW": "Traditional Chinese",
"Confirmed by {blockNumber} blocks": "Confirmed by {blockNumber} blocks",
- "Become a patron of {name}": "Become a patron of {name}"
+ "Become a patron of {name}": "Become a patron of {name}",
+ "Need More CSB?": "Need More CSB?",
+ "Claim CSB": "Claim CSB"
}
diff --git a/src/messages/ja.json b/src/messages/ja.json
index 0a3743f6eb..dbf6fea6eb 100644
--- a/src/messages/ja.json
+++ b/src/messages/ja.json
@@ -220,5 +220,7 @@
"en": "英語",
"ja": "日本語",
"zh": "中国語",
- "zh-TW": "繁体字中国語"
+ "zh-TW": "繁体字中国語",
+ "Need More CSB?": "もっと CSB が必要ですか?",
+ "Claim CSB": "CSB を請求"
}
diff --git a/src/messages/zh-TW.json b/src/messages/zh-TW.json
index 9cc77985f5..ad50c8af5c 100644
--- a/src/messages/zh-TW.json
+++ b/src/messages/zh-TW.json
@@ -411,5 +411,7 @@
"New Short": "新增圖文",
"Publishing": "你發佈的內容",
"Support Markdown": "支援 Markdown 語法",
- "on-chain posting on": "條鏈上發布於"
+ "on-chain posting on": "條鏈上發布於",
+ "Need More CSB?": "需要更多 CSB?",
+ "Claim CSB": "領取 CSB"
}
diff --git a/src/messages/zh.json b/src/messages/zh.json
index 31f705a60e..35bd3d87ee 100644
--- a/src/messages/zh.json
+++ b/src/messages/zh.json
@@ -436,5 +436,7 @@
"zh-TW": "繁体中文",
"Footer": "页脚",
"Support Markdown": "支持 Markdown",
- "on-chain posting on": "条链上发布于"
+ "on-chain posting on": "条链上发布于",
+ "Need More CSB?": "需要更多 CSB?",
+ "Claim CSB": "领取 CSB"
}
diff --git a/src/models/site.model.ts b/src/models/site.model.ts
index e6564755b0..35167376e8 100644
--- a/src/models/site.model.ts
+++ b/src/models/site.model.ts
@@ -1,4 +1,4 @@
-import { CharacterOperatorPermission } from "crossbell"
+import { CharacterOperatorPermission, createContract } from "crossbell"
import type { Address } from "viem"
import type { useContract } from "@crossbell/contract"
@@ -502,20 +502,9 @@ export async function checkDomain(domain: string, handle: string) {
return check.data
}
+const contract = createContract()
+
export async function getBlockNumber() {
- const result = await (
- await fetch("https://scan.crossbell.io/api/eth-rpc", {
- method: "POST",
- headers: {
- "Content-Type": "application/json",
- },
- body: JSON.stringify({
- jsonrpc: "2.0",
- method: "eth_blockNumber",
- params: [],
- id: 0,
- }),
- })
- ).json()
- return Number(BigInt(result.result))
+ const result = await contract.publicClient.getBlockNumber()
+ return Number(result)
}