空间分享链接防微信封禁

This commit is contained in:
yezian 2024-12-13 15:47:15 +08:00
parent 060c67a1fe
commit b2a04e95fd
2 changed files with 47 additions and 8 deletions

View File

@ -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 (
<div className="">
<div>
<div className="p-4 fixed top-0 z-10 w-full">
<div className="w-9 h-9 flex items-center justify-center bg-[#FFFFFF1A] rounded-full float-left absolute">
<FontAwesomeIcon

View File

@ -19,7 +19,24 @@ export default function Share() {
const [isFetching, setIsFetching] = useState(true);
const router = useRouter();
const { user_id } = useParams();
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(() => {
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: "已复制到剪贴板",