From b2a04e95fd5d9c7c2f64293ca215b28857cf1336 Mon Sep 17 00:00:00 2001 From: yezian Date: Fri, 13 Dec 2024 15:47:15 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A9=BA=E9=97=B4=E5=88=86=E4=BA=AB=E9=93=BE?= =?UTF-8?q?=E6=8E=A5=E9=98=B2=E5=BE=AE=E4=BF=A1=E5=B0=81=E7=A6=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/share/[mid]/page.js | 29 ++++++++++++++++++++++++----- app/space/share/[user_id]/page.jsx | 26 +++++++++++++++++++++++--- 2 files changed, 47 insertions(+), 8 deletions(-) diff --git a/app/share/[mid]/page.js b/app/share/[mid]/page.js index 1d1440e..51cda38 100644 --- a/app/share/[mid]/page.js +++ b/app/share/[mid]/page.js @@ -2,24 +2,41 @@ import React, { useEffect, useState } from "react"; import { Divider, Toast } from "antd-mobile"; -import { useRouter, useParams, useSearchParams } from "next/navigation"; +import { useRouter, useParams } from "next/navigation"; import clipboard from "copy-to-clipboard"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faAngleLeft, faAngleRight } from "@fortawesome/free-solid-svg-icons"; import { getStreamerInfo } from "@/api/space"; import requireAPI from "@/utils/requireAPI"; -export default function ShareSpace({ data }) { +export default function ShareSpace() { const router = useRouter(); const { mid } = useParams(); const webUrl = process.env.NEXT_PUBLIC_WEB_URL; const [streamerInfo, setStreamerInfo] = useState(null); const [shareWebUrl, setShareWebUrl] = useState("https://tiefen.fun"); + + function generateRandomString(length = 10) { + const characters = + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + let result = ""; + for (let i = 0; i < length; i++) { + result += characters.charAt( + Math.floor(Math.random() * characters.length) + ); + } + return result; + } + useEffect(() => { getStreamerInfo(Number(mid)).then((res) => { setStreamerInfo(res); }); + function getRandomUrl(urls) { + return urls[Math.floor(Math.random() * urls.length)]; + } + const getShareWebUrl = async () => { try { const data = await requireAPI("POST", "/api/config/cold_config", { @@ -31,7 +48,8 @@ export default function ShareSpace({ data }) { }); return; } - setShareWebUrl(data.data.share_redirect_url); + const randomUrl = getRandomUrl(data.data.share_redirect_urls); + setShareWebUrl(randomUrl); } catch (error) { console.error(error); } @@ -58,12 +76,13 @@ export default function ShareSpace({ data }) { //复制邀请链接 const copyShareUrl = () => { - const shareCode = `${shareWebUrl}/zone/${streamerInfo?.streamer_ext?.user_id}`; + const randomStr = generateRandomString(); + const shareCode = `${shareWebUrl}/zone/${streamerInfo?.streamer_ext?.user_id}/${randomStr}`; copy(shareCode); }; return ( -
+
{ + function getRandomUrl(urls) { + return urls[Math.floor(Math.random() * urls.length)]; + } + const getShareWebUrl = async () => { try { const data = await requireAPI("POST", "/api/config/cold_config", { @@ -31,7 +48,8 @@ export default function Share() { }); return "https://tiefen.fun"; } - return data.data.share_redirect_url; + const randomUrl = getRandomUrl(data.data.share_redirect_urls); + return randomUrl; } catch (error) { return "https://tiefen.fun"; } @@ -56,9 +74,10 @@ export default function Share() { const _shareWebUrl = await getShareWebUrl(); setShareWebUrl(_shareWebUrl); + const randomStr = generateRandomString(); QRCode.toDataURL( - `${_shareWebUrl}/zone/${user_id}`, + `${_shareWebUrl}/zone/${user_id}/${randomStr}`, function (err, url) { setQrcodeUrl(url); } @@ -156,7 +175,8 @@ export default function Share() { //复制链接 const copyUrl = () => { - clipboard(`${shareWebUrl}/zone/${user_id}`); + const randomStr = generateRandomString(); + clipboard(`${shareWebUrl}/zone/${user_id}/${randomStr}`); Toast.show({ icon: "success", content: "已复制到剪贴板",