feat: interact to redirect to new site page for unregistered address
This commit is contained in:
parent
9eab1beadc
commit
b12f22d67d
|
|
@ -10,6 +10,7 @@ import { useStore } from "~/lib/store"
|
|||
import { SEOHead } from "../common/SEOHead"
|
||||
import { UniLink } from "../ui/UniLink"
|
||||
import { ConnectButton } from "../common/ConnectButton"
|
||||
import { getSiteLink } from "~/lib/helpers"
|
||||
|
||||
export function MainLayout({
|
||||
children,
|
||||
|
|
@ -40,7 +41,9 @@ export function MainLayout({
|
|||
<span className="align-middle">
|
||||
©{" "}
|
||||
<UniLink
|
||||
href={`https://blog.${OUR_DOMAIN}`}
|
||||
href={getSiteLink({
|
||||
subdomain: "blog",
|
||||
})}
|
||||
className="hover:text-indigo-500"
|
||||
>
|
||||
{APP_NAME}
|
||||
|
|
|
|||
|
|
@ -10,10 +10,13 @@ import {
|
|||
useGetMints,
|
||||
useCheckMint,
|
||||
} from "~/queries/page"
|
||||
import { useGetUserSites } from "~/queries/site"
|
||||
import { useAccount } from "wagmi"
|
||||
import { useConnectModal } from "@rainbow-me/rainbowkit"
|
||||
import { useState, useEffect } from "react"
|
||||
import { Button } from "../ui/Button"
|
||||
import { useRouter } from "next/router"
|
||||
import { SITE_URL } from "~/lib/env"
|
||||
|
||||
export const PostFooter: React.FC<{
|
||||
page?: Note
|
||||
|
|
@ -26,11 +29,15 @@ export const PostFooter: React.FC<{
|
|||
const { openConnectModal } = useConnectModal()
|
||||
const [likeProgress, setLikeProgress] = useState(false)
|
||||
const [mintProgress, setMintProgress] = useState(false)
|
||||
const userSite = useGetUserSites(address)
|
||||
const router = useRouter()
|
||||
|
||||
const like = async () => {
|
||||
if (!address) {
|
||||
setLikeProgress(true)
|
||||
openConnectModal?.()
|
||||
} else if (!userSite.data) {
|
||||
router.push(`${SITE_URL}/dashboard/new-site`)
|
||||
} else if (page?.id) {
|
||||
if (isLike.data?.count) {
|
||||
// unlikePage.mutate({
|
||||
|
|
@ -51,6 +58,8 @@ export const PostFooter: React.FC<{
|
|||
if (!address) {
|
||||
setMintProgress(true)
|
||||
openConnectModal?.()
|
||||
} else if (!userSite.data) {
|
||||
router.push(`${SITE_URL}/dashboard/new-site`)
|
||||
} else if (page?.id) {
|
||||
if (isMint.data?.count) {
|
||||
// TODO
|
||||
|
|
@ -81,6 +90,9 @@ export const PostFooter: React.FC<{
|
|||
|
||||
useEffect(() => {
|
||||
if (mintProgress && address && isMint.isSuccess && page?.id) {
|
||||
if (!userSite.data) {
|
||||
router.push(`${SITE_URL}/dashboard/new-site`)
|
||||
}
|
||||
if (!isMint.data.count) {
|
||||
mintPage.mutate({
|
||||
address,
|
||||
|
|
@ -90,6 +102,8 @@ export const PostFooter: React.FC<{
|
|||
setMintProgress(false)
|
||||
}
|
||||
}, [
|
||||
userSite.data,
|
||||
router,
|
||||
mintProgress,
|
||||
address,
|
||||
isMint.isSuccess,
|
||||
|
|
@ -100,6 +114,9 @@ export const PostFooter: React.FC<{
|
|||
|
||||
useEffect(() => {
|
||||
if (likeProgress && address && isLike.isSuccess && page?.id) {
|
||||
if (!userSite.data) {
|
||||
router.push(`${SITE_URL}/dashboard/new-site`)
|
||||
}
|
||||
if (!isLike.data.count) {
|
||||
likePage.mutate({
|
||||
address,
|
||||
|
|
@ -109,6 +126,8 @@ export const PostFooter: React.FC<{
|
|||
setLikeProgress(false)
|
||||
}
|
||||
}, [
|
||||
userSite.data,
|
||||
router,
|
||||
likeProgress,
|
||||
address,
|
||||
isLike.isSuccess,
|
||||
|
|
@ -124,7 +143,12 @@ export const PostFooter: React.FC<{
|
|||
className="flex items-center mr-10"
|
||||
isAutoWidth={true}
|
||||
onClick={like}
|
||||
isLoading={likePage.isLoading || unlikePage.isLoading || likeProgress}
|
||||
isLoading={
|
||||
userSite.isLoading ||
|
||||
likePage.isLoading ||
|
||||
unlikePage.isLoading ||
|
||||
likeProgress
|
||||
}
|
||||
style={
|
||||
isLike.isSuccess && isLike.data.count
|
||||
? {
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ import clsx from "clsx"
|
|||
import { useRouter } from "next/router"
|
||||
import { logout } from "~/lib/auth.client"
|
||||
import { IS_PROD } from "~/lib/constants"
|
||||
import { OUR_DOMAIN } from "~/lib/env"
|
||||
import { SITE_URL } from "~/lib/env"
|
||||
import { useStore } from "~/lib/store"
|
||||
import { Viewer } from "~/lib/types"
|
||||
import { getUserContentsUrl } from "~/lib/user-contents"
|
||||
|
|
@ -21,6 +21,7 @@ import {
|
|||
useGetSubscription,
|
||||
useSubscribeToSite,
|
||||
useUnsubscribeFromSite,
|
||||
useGetUserSites,
|
||||
} from "~/queries/site"
|
||||
import { useConnectModal } from "@rainbow-me/rainbowkit"
|
||||
import { Menu } from "@headlessui/react"
|
||||
|
|
@ -62,11 +63,15 @@ export const SiteHeader: React.FC<{
|
|||
const unsubscribeFromSite = useUnsubscribeFromSite()
|
||||
const { openConnectModal } = useConnectModal()
|
||||
const [followProgress, setFollowProgress] = useState<boolean>(false)
|
||||
const userSite = useGetUserSites(address)
|
||||
const router = useRouter()
|
||||
|
||||
const handleClickSubscribe = async () => {
|
||||
if (!address) {
|
||||
setFollowProgress(true)
|
||||
openConnectModal?.()
|
||||
} else if (!userSite.data) {
|
||||
router.push(`${SITE_URL}/dashboard/new-site`)
|
||||
} else if (site?.username) {
|
||||
if (subscription.data) {
|
||||
unsubscribeFromSite.mutate({
|
||||
|
|
@ -89,6 +94,9 @@ export const SiteHeader: React.FC<{
|
|||
|
||||
useEffect(() => {
|
||||
if (followProgress && address && subscription.isSuccess && site?.username) {
|
||||
if (!userSite.data) {
|
||||
router.push(`${SITE_URL}/dashboard/new-site`)
|
||||
}
|
||||
if (!subscription.data) {
|
||||
subscribeToSite.mutate({
|
||||
userId: address,
|
||||
|
|
@ -98,6 +106,8 @@ export const SiteHeader: React.FC<{
|
|||
setFollowProgress(false)
|
||||
}
|
||||
}, [
|
||||
userSite.data,
|
||||
router,
|
||||
followProgress,
|
||||
address,
|
||||
subscription.isSuccess,
|
||||
|
|
@ -106,6 +116,17 @@ export const SiteHeader: React.FC<{
|
|||
subscribeToSite,
|
||||
])
|
||||
|
||||
useEffect(() => {
|
||||
if (subscribeToSite.isError || subscribeToSite.data?.code) {
|
||||
toast.error(
|
||||
"Failed to follow: " +
|
||||
(subscribeToSite.data?.message ||
|
||||
(subscribeToSite.error as any)?.message),
|
||||
)
|
||||
subscribeToSite.reset()
|
||||
}
|
||||
}, [subscribeToSite.isError, subscribeToSite.data?.code])
|
||||
|
||||
const leftLinks: HeaderLinkType[] = [
|
||||
{ label: "Home", url: "/" },
|
||||
...(site?.navigation || []),
|
||||
|
|
@ -176,6 +197,7 @@ export const SiteHeader: React.FC<{
|
|||
onClick={handleClickSubscribe}
|
||||
className="space-x-1 align-middle"
|
||||
isLoading={
|
||||
userSite.isLoading ||
|
||||
unsubscribeFromSite.isLoading ||
|
||||
subscribeToSite.isLoading ||
|
||||
subscription.isLoading
|
||||
|
|
|
|||
Loading…
Reference in New Issue