mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-08-25 12:27:13 +00:00
feat(sub): show the announcement on the subscription info page
The subAnnounce setting was only emitted as a base64 Announce response header, which most client apps ignore and browsers never see. Pass it into the sub page view-model and render it as an info alert at the top of the card; custom themes get the announce key for free. Closes #5276
This commit is contained in:
Vendored
+1
@@ -18,6 +18,7 @@ interface SubPageData {
|
|||||||
links?: string[];
|
links?: string[];
|
||||||
emails?: string[];
|
emails?: string[];
|
||||||
datepicker?: 'gregorian' | 'jalalian';
|
datepicker?: 'gregorian' | 'jalalian';
|
||||||
|
announce?: string;
|
||||||
downloadByte?: string | number;
|
downloadByte?: string | number;
|
||||||
uploadByte?: string | number;
|
uploadByte?: string | number;
|
||||||
usedByte?: string | number;
|
usedByte?: string | number;
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import { Fragment, useCallback, useEffect, useMemo, useState } from 'react';
|
import { Fragment, useCallback, useEffect, useMemo, useState } from 'react';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import {
|
import {
|
||||||
|
Alert,
|
||||||
Button,
|
Button,
|
||||||
Card,
|
Card,
|
||||||
Col,
|
Col,
|
||||||
@@ -61,6 +62,7 @@ const links: string[] = Array.isArray(subData.links) ? subData.links : [];
|
|||||||
const linkEmails: string[] = Array.isArray(subData.emails) ? subData.emails : [];
|
const linkEmails: string[] = Array.isArray(subData.emails) ? subData.emails : [];
|
||||||
const subEmail = [...new Set(linkEmails.filter(Boolean))].join(', ');
|
const subEmail = [...new Set(linkEmails.filter(Boolean))].join(', ');
|
||||||
const datepicker = subData.datepicker || 'gregorian';
|
const datepicker = subData.datepicker || 'gregorian';
|
||||||
|
const announce = subData.announce || '';
|
||||||
|
|
||||||
const isUnlimited = totalByte <= 0 && expireMs === 0;
|
const isUnlimited = totalByte <= 0 && expireMs === 0;
|
||||||
const isActive = (() => {
|
const isActive = (() => {
|
||||||
@@ -283,6 +285,9 @@ export default function SubPage() {
|
|||||||
<Row justify="center">
|
<Row justify="center">
|
||||||
<Col xs={24} sm={22} md={18} lg={14} xl={12}>
|
<Col xs={24} sm={22} md={18} lg={14} xl={12}>
|
||||||
<Card hoverable className="subscription-card" title={cardTitle} extra={cardExtra}>
|
<Card hoverable className="subscription-card" title={cardTitle} extra={cardExtra}>
|
||||||
|
{announce && (
|
||||||
|
<Alert type="info" showIcon message={announce} style={{ marginBottom: 16 }} />
|
||||||
|
)}
|
||||||
<Descriptions
|
<Descriptions
|
||||||
bordered
|
bordered
|
||||||
column={1}
|
column={1}
|
||||||
|
|||||||
@@ -281,6 +281,7 @@ func (a *SUBController) serveSubPage(c *gin.Context, basePath string, page PageD
|
|||||||
"links": page.Result,
|
"links": page.Result,
|
||||||
"emails": page.Emails,
|
"emails": page.Emails,
|
||||||
"datepicker": datepicker,
|
"datepicker": datepicker,
|
||||||
|
"announce": a.subAnnounce,
|
||||||
}
|
}
|
||||||
|
|
||||||
// When an admin has configured a custom subscription theme, render it
|
// When an admin has configured a custom subscription theme, render it
|
||||||
|
|||||||
Reference in New Issue
Block a user