空间分享链接防微信封禁
This commit is contained in:
parent
060c67a1fe
commit
b2a04e95fd
|
@ -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
|
||||
|
|
|
@ -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: "已复制到剪贴板",
|
||||
|
|
Loading…
Reference in New Issue