Skip to content

Commit 9583b7c

Browse files
feat(explorer): i have added a share button, which adds a query param… (#32)
* feat(explorer): i have added a share button, which adds a query param admin & copy text to clipboard * feat(explorer): add button to share Add button to share url * feat(explorer): add a button add a share url button, which will copy the url on clipboard * refactor: code update * Update apps/explorer/src/components/SearchBar.tsx Co-authored-by: Vivian Plasencia <v.pcalana@gmail.com> * Update apps/explorer/src/app/[network]/page.tsx Co-authored-by: Vivian Plasencia <v.pcalana@gmail.com> --------- Co-authored-by: Vivian Plasencia <v.pcalana@gmail.com>
1 parent 91ae57e commit 9583b7c

File tree

2 files changed

+37
-7
lines changed

2 files changed

+37
-7
lines changed

apps/explorer/src/app/[network]/page.tsx

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -59,19 +59,34 @@ export default function Network() {
5959
filterGroups(adminParam || groupIdParam || "")
6060
}, [adminParam, groupIdParam, filterGroups])
6161

62+
const handleShare = () => {
63+
const url = window.location.href
64+
65+
navigator.clipboard.writeText(url)
66+
}
67+
6268
return loading ? (
6369
<div className="flex justify-center items-center h-screen">
6470
<div className="loader" />
6571
</div>
6672
) : (
6773
allGroups && (
6874
<div className="mx-auto max-w-7xl px-4 lg:px-8 pt-20">
69-
<SearchBar
70-
className="mb-6"
71-
placeholder="Group ID, Admin"
72-
onChange={filterGroups}
73-
queryParam={queryParam}
74-
/>
75+
<div className="flex mb-6 gap-4">
76+
<SearchBar
77+
className="!mt-0 flex-1"
78+
placeholder="Group ID, Admin"
79+
onChange={filterGroups}
80+
queryParam={queryParam}
81+
/>
82+
<button
83+
type="button"
84+
className="flex bg-blue-950 text-white items-center justify-center px-4 rounded-md"
85+
onClick={handleShare}
86+
>
87+
Copy Link
88+
</button>
89+
</div>
7590

7691
<div className="flex justify-center flex-col pb-10 font-[family-name:var(--font-geist-sans)]">
7792
<ul className="divide-y divide-gray-300 min-w-xl">

apps/explorer/src/components/SearchBar.tsx

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,14 @@
33
import { FaSearch } from "react-icons/fa"
44
import { useState, useEffect, ChangeEvent } from "react"
55

6-
export default function SearchBar({ placeholder, onChange, className, queryParam }: any) {
6+
interface ISearchBarProps {
7+
placeholder: string
8+
onChange: (value: string) => void
9+
className?: string
10+
queryParam?: string | null
11+
}
12+
13+
export default function SearchBar({ placeholder, onChange, className, queryParam }: ISearchBarProps) {
714
const [searchQuery, setSearchQuery] = useState("")
815
useEffect(() => {
916
if (queryParam) {
@@ -15,6 +22,14 @@ export default function SearchBar({ placeholder, onChange, className, queryParam
1522
const { value } = event.target
1623
setSearchQuery(value)
1724
onChange(value)
25+
const url = new URL(window.location.href)
26+
url.search = ""
27+
if(value.startsWith("0x")) {
28+
url.searchParams.set("admin", value)
29+
} else {
30+
url.searchParams.set("groupid", value)
31+
}
32+
window.history.pushState({}, "", url.toString())
1833
}
1934

2035
return (

0 commit comments

Comments
 (0)