-
- {t('subscriptionUrl')} {index + 1}
-
+ {userSubscribe.map((item) => {
+ return (
+
+ {item.status >= 2 && (
+
+
+ {Array.from({ length: 16 }).map((_, i) => {
+ const row = Math.floor(i / 4);
+ const col = i % 4;
+ // 计算位置百分比
+ const top = 10 + row * 25 + (col % 2 === 0 ? 5 : -5);
+ const left = 5 + col * 30 + (row % 2 === 0 ? 0 : 10);
- {
- if (result) {
- toast.success(t('copySuccess'));
- }
+ return (
+
- e.stopPropagation()}
+ {statusWatermarks[item.status as keyof typeof statusWatermarks]}
+
+ );
+ })}
+
+
+ )}
+
+
+ {item.subscribe.name}
+ {formatDate(item.start_time)}
+
+ {item.status !== 4 && (
+
+
+
+
+
+
+
+ {t('prompt')}
+
+ {t('confirmResetSubscription')}
+
+
+
+ {t('cancel')}
+ {
+ await resetUserSubscribeToken({
+ user_subscribe_id: item.id,
+ });
+ await refetch();
+ toast.success(t('resetSuccess'));
+ }}
>
-
- {t('copy')}
-
-
-
-
-
-
- {applications
- ?.filter((application) => {
- const platformApps = application.platform?.[platform];
- return platformApps && platformApps.length > 0;
- })
- .map((application) => {
- const platformApps = application.platform?.[platform];
- const app =
- platformApps?.find((item) => item.is_default) || platformApps?.[0];
- if (!app) return null;
+ {t('confirm')}
+
+
+
+
+
+
- const handleCopy = (text: string, result: boolean) => {
+
+
+ )}
+
+
+
+ -
+ {t('used')}
+
+
+
+
+ -
+ {t('totalTraffic')}
+
+
+
+
+ -
+ {t('nextResetDays')}
+
+ {item.reset_time
+ ? differenceInDays(new Date(item.reset_time), new Date())
+ : t('noReset')}
+
+
+ -
+ {t('expirationDays')}
+
+ {}
+ {item.expire_time
+ ? differenceInDays(new Date(item.expire_time), new Date()) || t('unknown')
+ : t('noLimit')}
+
+
+
+
+
+ {getUserSubscribe(item.token, protocol)?.map((url, index) => (
+
+
+
+
+ {t('subscriptionUrl')} {index + 1}
+
+
+
{
if (result) {
- const href = getAppSubLink(application.subscribe_type, url);
- const showSuccessMessage = () => {
- toast.success(
- <>
- {t('copySuccess')}
-
- {t('manualImportMessage')}
- >,
- );
- };
-
- if (isBrowser() && href) {
- window.location.href = href;
- const checkRedirect = setTimeout(() => {
- if (window.location.href !== href) {
- showSuccessMessage();
- }
- clearTimeout(checkRedirect);
- }, 1000);
- return;
- }
-
- showSuccessMessage();
+ toast.success(t('copySuccess'));
}
- };
-
- return (
-
-
{application.name}
-
- {application.icon && (
-
- )}
-
-
-
-
-
-
-
-
- );
- })}
-
- {t('qrCode')}
-
- {t('scanToSubscribe')}
+ }}
+ >
+ e.stopPropagation()}
+ >
+
+ {t('copy')}
+
+
-
-
-
- ))}
-
-
-
- ))}
+
+
+
+ {applications
+ ?.filter((application) => {
+ const platformApps = application.platform?.[platform];
+ return platformApps && platformApps.length > 0;
+ })
+ .map((application) => {
+ const platformApps = application.platform?.[platform];
+ const app =
+ platformApps?.find((item) => item.is_default) ||
+ platformApps?.[0];
+ if (!app) return null;
+
+ const handleCopy = (text: string, result: boolean) => {
+ if (result) {
+ const href = getAppSubLink(application.subscribe_type, url);
+ const showSuccessMessage = () => {
+ toast.success(
+ <>
+
{t('copySuccess')}
+
+
{t('manualImportMessage')}
+ >,
+ );
+ };
+
+ if (isBrowser() && href) {
+ window.location.href = href;
+ const checkRedirect = setTimeout(() => {
+ if (window.location.href !== href) {
+ showSuccessMessage();
+ }
+ clearTimeout(checkRedirect);
+ }, 1000);
+ return;
+ }
+
+ showSuccessMessage();
+ }
+ };
+
+ return (
+
+
{application.name}
+
+ {application.icon && (
+
+ )}
+
+
+
+
+
+
+
+
+ );
+ })}
+
+ {t('qrCode')}
+
+ {t('scanToSubscribe')}
+
+
+
+
+ ))}
+
+
+
+ );
+ })}
>
) : (
<>
diff --git a/apps/user/locales/cs-CZ/dashboard.json b/apps/user/locales/cs-CZ/dashboard.json
index 5fec8a1..12d2a71 100644
--- a/apps/user/locales/cs-CZ/dashboard.json
+++ b/apps/user/locales/cs-CZ/dashboard.json
@@ -5,8 +5,11 @@
"copy": "kopírovat",
"copyFailure": "Kopírování selhalo, prosím zkopírujte ručně",
"copySuccess": "Kopírování úspěšné",
+ "deducted": "Zrušeno",
"download": "stáhnout",
"expirationDays": "Doba platnosti/dny",
+ "expired": "Vypršelo",
+ "finished": "Provoz vyčerpán",
"import": "Importovat",
"latestAnnouncement": "Nejnovější oznámení",
"manualImportMessage": "Tato aplikace momentálně nepodporuje spuštění, prosím importujte ručně, adresa předplatného byla automaticky zkopírována",
diff --git a/apps/user/locales/de-DE/dashboard.json b/apps/user/locales/de-DE/dashboard.json
index bd31574..8785969 100644
--- a/apps/user/locales/de-DE/dashboard.json
+++ b/apps/user/locales/de-DE/dashboard.json
@@ -5,8 +5,11 @@
"copy": "Kopieren",
"copyFailure": "Kopieren fehlgeschlagen, bitte manuell kopieren",
"copySuccess": "Kopieren erfolgreich",
+ "deducted": "Storniert",
"download": "Herunterladen",
"expirationDays": "Ablaufzeit/Tage",
+ "expired": "Abgelaufen",
+ "finished": "Verkehr erschöpft",
"import": "Importieren",
"latestAnnouncement": "Neueste Ankündigung",
"manualImportMessage": "Diese App unterstützt derzeit keine Aktivierung. Bitte manuell importieren, die Abonnementadresse wurde automatisch kopiert.",
diff --git a/apps/user/locales/en-US/dashboard.json b/apps/user/locales/en-US/dashboard.json
index 4b60c3b..f28acda 100644
--- a/apps/user/locales/en-US/dashboard.json
+++ b/apps/user/locales/en-US/dashboard.json
@@ -5,8 +5,11 @@
"copy": "Copy",
"copyFailure": "Copy failed, please copy manually",
"copySuccess": "Copy successful",
+ "deducted": "Canceled",
"download": "Download",
"expirationDays": "Expiration Days",
+ "expired": "Expired",
+ "finished": "Traffic exhausted",
"import": "Import",
"latestAnnouncement": "Latest Announcement",
"manualImportMessage": "This app does not support activation. Please import manually. The subscription address has been copied.",
diff --git a/apps/user/locales/es-ES/dashboard.json b/apps/user/locales/es-ES/dashboard.json
index 57254e1..881b110 100644
--- a/apps/user/locales/es-ES/dashboard.json
+++ b/apps/user/locales/es-ES/dashboard.json
@@ -5,8 +5,11 @@
"copy": "Copiar",
"copyFailure": "Error al copiar, por favor copia manualmente",
"copySuccess": "Copia exitosa",
+ "deducted": "Cancelado",
"download": "descargar",
"expirationDays": "Días de vencimiento",
+ "expired": "Caducado",
+ "finished": "Tráfico agotado",
"import": "importar",
"latestAnnouncement": "Último anuncio",
"manualImportMessage": "Esta aplicación no admite la activación por el momento. Por favor, importe manualmente. La dirección de suscripción ha sido copiada automáticamente.",
diff --git a/apps/user/locales/es-MX/dashboard.json b/apps/user/locales/es-MX/dashboard.json
index f6602fd..994573c 100644
--- a/apps/user/locales/es-MX/dashboard.json
+++ b/apps/user/locales/es-MX/dashboard.json
@@ -5,8 +5,11 @@
"copy": "copiar",
"copyFailure": "Error al copiar, por favor copia manualmente",
"copySuccess": "Copia exitosa",
+ "deducted": "Cancelado",
"download": "descargar",
"expirationDays": "Días de vencimiento",
+ "expired": "Expirado",
+ "finished": "Tráfico agotado",
"import": "Importar",
"latestAnnouncement": "Último anuncio",
"manualImportMessage": "Esta aplicación no admite la activación por el momento, por favor importe manualmente, la dirección de suscripción se ha copiado automáticamente",
diff --git a/apps/user/locales/fa-IR/dashboard.json b/apps/user/locales/fa-IR/dashboard.json
index 4f39cca..fafbb14 100644
--- a/apps/user/locales/fa-IR/dashboard.json
+++ b/apps/user/locales/fa-IR/dashboard.json
@@ -5,8 +5,11 @@
"copy": "کپی",
"copyFailure": "کپی ناموفق بود، لطفاً به صورت دستی کپی کنید",
"copySuccess": "کپی با موفقیت انجام شد",
+ "deducted": "لغو شده",
"download": "دانلود",
"expirationDays": "روزهای انقضا",
+ "expired": "منقضی شده",
+ "finished": "ترافیک تمام شده",
"import": "وارد کردن",
"latestAnnouncement": "آخرین اعلامیه",
"manualImportMessage": "این برنامه از فعالسازی پشتیبانی نمیکند. لطفاً به صورت دستی وارد کنید. آدرس اشتراک کپی شده است.",
diff --git a/apps/user/locales/fi-FI/dashboard.json b/apps/user/locales/fi-FI/dashboard.json
index 796574b..f600c1a 100644
--- a/apps/user/locales/fi-FI/dashboard.json
+++ b/apps/user/locales/fi-FI/dashboard.json
@@ -5,8 +5,11 @@
"copy": "kopioi",
"copyFailure": "Kopiointi epäonnistui, kopioi manuaalisesti",
"copySuccess": "Kopiointi onnistui",
+ "deducted": "Peruutettu",
"download": "lataa",
"expirationDays": "Vanhentumispäivät",
+ "expired": "Vanhentunut",
+ "finished": "Liikenne loppunut",
"import": "Tuo",
"latestAnnouncement": "Viimeisin ilmoitus",
"manualImportMessage": "Tämä sovellus ei tue herätystä tällä hetkellä, tuo manuaalisesti, tilausosoite on kopioitu automaattisesti",
diff --git a/apps/user/locales/fr-FR/dashboard.json b/apps/user/locales/fr-FR/dashboard.json
index d73e9e3..e10a869 100644
--- a/apps/user/locales/fr-FR/dashboard.json
+++ b/apps/user/locales/fr-FR/dashboard.json
@@ -5,8 +5,11 @@
"copy": "Copier",
"copyFailure": "Échec de la copie, veuillez copier manuellement",
"copySuccess": "Copie réussie",
+ "deducted": "Annulé",
"download": "télécharger",
"expirationDays": "Date d'expiration/jours",
+ "expired": "Expiré",
+ "finished": "Trafic épuisé",
"import": "Importer",
"latestAnnouncement": "Dernière annonce",
"manualImportMessage": "Cette application ne prend pas encore en charge l'activation, veuillez importer manuellement, l'adresse d'abonnement a été copiée automatiquement",
diff --git a/apps/user/locales/hi-IN/dashboard.json b/apps/user/locales/hi-IN/dashboard.json
index b779e93..08ee90f 100644
--- a/apps/user/locales/hi-IN/dashboard.json
+++ b/apps/user/locales/hi-IN/dashboard.json
@@ -5,8 +5,11 @@
"copy": "प्रतिलिपि",
"copyFailure": "प्रतिलिपि बनाने में विफल, कृपया मैन्युअल रूप से प्रतिलिपि बनाएँ",
"copySuccess": "प्रतिलिपि सफल",
+ "deducted": "रद्द किया गया",
"download": "डाउनलोड",
"expirationDays": "समाप्ति समय/दिन",
+ "expired": "समाप्त",
+ "finished": "ट्रैफ़िक समाप्त",
"import": "आयात",
"latestAnnouncement": "नवीनतम घोषणा",
"manualImportMessage": "यह ऐप फिलहाल जागृत करने का समर्थन नहीं करता है, कृपया मैन्युअल रूप से आयात करें, सदस्यता पता स्वचालित रूप से कॉपी कर लिया गया है।",
diff --git a/apps/user/locales/hu-HU/dashboard.json b/apps/user/locales/hu-HU/dashboard.json
index 0a3ec7c..49d6c81 100644
--- a/apps/user/locales/hu-HU/dashboard.json
+++ b/apps/user/locales/hu-HU/dashboard.json
@@ -5,8 +5,11 @@
"copy": "Másolás",
"copyFailure": "Másolás sikertelen, kérjük, másolja kézzel",
"copySuccess": "Sikeres másolás",
+ "deducted": "Törölve",
"download": "letöltés",
"expirationDays": "Lejárati idő/nap",
+ "expired": "Lejárt",
+ "finished": "Forgalom kimerült",
"import": "importálás",
"latestAnnouncement": "Legújabb bejelentés",
"manualImportMessage": "Ez az alkalmazás jelenleg nem támogatja az ébresztést, kérjük, importálja manuálisan, az előfizetési cím automatikusan másolva lett",
diff --git a/apps/user/locales/ja-JP/dashboard.json b/apps/user/locales/ja-JP/dashboard.json
index a946e29..0208e94 100644
--- a/apps/user/locales/ja-JP/dashboard.json
+++ b/apps/user/locales/ja-JP/dashboard.json
@@ -5,8 +5,11 @@
"copy": "コピー",
"copyFailure": "コピーに失敗しました。手動でコピーしてください",
"copySuccess": "コピー成功",
+ "deducted": "キャンセルされた",
"download": "ダウンロード",
"expirationDays": "有効期限/日",
+ "expired": "期限切れ",
+ "finished": "トラフィックが使い切られました",
"import": "インポート",
"latestAnnouncement": "最新のお知らせ",
"manualImportMessage": "このアプリは現在起動をサポートしていません。手動でインポートしてください。サブスクリプションアドレスは自動的にコピーされました。",
diff --git a/apps/user/locales/ko-KR/dashboard.json b/apps/user/locales/ko-KR/dashboard.json
index cbddcc2..07058cf 100644
--- a/apps/user/locales/ko-KR/dashboard.json
+++ b/apps/user/locales/ko-KR/dashboard.json
@@ -5,8 +5,11 @@
"copy": "복사",
"copyFailure": "복사 실패, 수동으로 복사하세요",
"copySuccess": "복사 성공",
+ "deducted": "취소됨",
"download": "다운로드",
"expirationDays": "만료일/일",
+ "expired": "만료됨",
+ "finished": "트래픽 소진됨",
"import": "가져오기",
"latestAnnouncement": "최신 공지",
"manualImportMessage": "이 앱은 현재 호출을 지원하지 않습니다. 수동으로 가져오세요. 구독 주소가 자동으로 복사되었습니다.",
diff --git a/apps/user/locales/no-NO/dashboard.json b/apps/user/locales/no-NO/dashboard.json
index a1dc7e5..0775be9 100644
--- a/apps/user/locales/no-NO/dashboard.json
+++ b/apps/user/locales/no-NO/dashboard.json
@@ -5,8 +5,11 @@
"copy": "kopier",
"copyFailure": "Kopiering mislyktes, vennligst kopier manuelt",
"copySuccess": "Kopiering vellykket",
+ "deducted": "Avbrutt",
"download": "last ned",
"expirationDays": "Utløpsdato/dager",
+ "expired": "Utløpt",
+ "finished": "Trafikk brukt opp",
"import": "Importer",
"latestAnnouncement": "Siste kunngjøring",
"manualImportMessage": "Denne appen støtter foreløpig ikke oppstart, vennligst importer manuelt, abonnementsadressen er automatisk kopiert",
diff --git a/apps/user/locales/pl-PL/dashboard.json b/apps/user/locales/pl-PL/dashboard.json
index c15bc6f..ed148f7 100644
--- a/apps/user/locales/pl-PL/dashboard.json
+++ b/apps/user/locales/pl-PL/dashboard.json
@@ -5,8 +5,11 @@
"copy": "kopiuj",
"copyFailure": "Kopiowanie nie powiodło się, proszę skopiować ręcznie",
"copySuccess": "Skopiowano pomyślnie",
+ "deducted": "Anulowane",
"download": "pobierz",
"expirationDays": "Czas wygaśnięcia/dni",
+ "expired": "Wygasło",
+ "finished": "Wykończony ruch",
"import": "Importuj",
"latestAnnouncement": "Najnowsze ogłoszenie",
"manualImportMessage": "Ta aplikacja tymczasowo nie obsługuje wywoływania, proszę zaimportować ręcznie, adres subskrypcji został automatycznie skopiowany",
diff --git a/apps/user/locales/pt-BR/dashboard.json b/apps/user/locales/pt-BR/dashboard.json
index eab91f4..627a61d 100644
--- a/apps/user/locales/pt-BR/dashboard.json
+++ b/apps/user/locales/pt-BR/dashboard.json
@@ -5,8 +5,11 @@
"copy": "Copiar",
"copyFailure": "Falha ao copiar, por favor copie manualmente",
"copySuccess": "Cópia bem-sucedida",
+ "deducted": "Cancelado",
"download": "baixar",
"expirationDays": "Data de expiração/dias",
+ "expired": "Expirado",
+ "finished": "Tráfego esgotado",
"import": "Importar",
"latestAnnouncement": "Último Anúncio",
"manualImportMessage": "Este aplicativo não suporta ativação no momento, por favor, importe manualmente. O endereço de assinatura foi copiado automaticamente.",
diff --git a/apps/user/locales/ro-RO/dashboard.json b/apps/user/locales/ro-RO/dashboard.json
index 0989928..a117942 100644
--- a/apps/user/locales/ro-RO/dashboard.json
+++ b/apps/user/locales/ro-RO/dashboard.json
@@ -5,8 +5,11 @@
"copy": "Copiază",
"copyFailure": "Copierea a eșuat, vă rugăm să copiați manual",
"copySuccess": "Copiere reușită",
+ "deducted": "Anulat",
"download": "descărcare",
"expirationDays": "Zile până la expirare",
+ "expired": "Expirat",
+ "finished": "Trafic epuizat",
"import": "Import",
"latestAnnouncement": "Ultimul anunț",
"manualImportMessage": "Această aplicație nu suportă momentan activarea, vă rugăm să importați manual, adresa de abonament a fost copiată automat",
diff --git a/apps/user/locales/ru-RU/dashboard.json b/apps/user/locales/ru-RU/dashboard.json
index 847bc88..85bd191 100644
--- a/apps/user/locales/ru-RU/dashboard.json
+++ b/apps/user/locales/ru-RU/dashboard.json
@@ -5,8 +5,11 @@
"copy": "Копировать",
"copyFailure": "Не удалось скопировать, пожалуйста, скопируйте вручную",
"copySuccess": "Копирование успешно",
+ "deducted": "Отменено",
"download": "скачать",
"expirationDays": "Срок действия/дни",
+ "expired": "Истекло",
+ "finished": "Трафик исчерпан",
"import": "Импорт",
"latestAnnouncement": "Последнее объявление",
"manualImportMessage": "Это приложение временно не поддерживает вызов, пожалуйста, импортируйте вручную, адрес подписки уже скопирован",
diff --git a/apps/user/locales/th-TH/dashboard.json b/apps/user/locales/th-TH/dashboard.json
index 22c3290..db6c267 100644
--- a/apps/user/locales/th-TH/dashboard.json
+++ b/apps/user/locales/th-TH/dashboard.json
@@ -5,8 +5,11 @@
"copy": "คัดลอก",
"copyFailure": "คัดลอกไม่สำเร็จ กรุณาคัดลอกด้วยตนเอง",
"copySuccess": "คัดลอกสำเร็จ",
+ "deducted": "ยกเลิก",
"download": "ดาวน์โหลด",
"expirationDays": "วันหมดอายุ/วัน",
+ "expired": "หมดอายุ",
+ "finished": "การใช้งานหมด",
"import": "นำเข้า",
"latestAnnouncement": "ประกาศล่าสุด",
"manualImportMessage": "แอปนี้ยังไม่รองรับการเปิดใช้งาน กรุณานำเข้าด้วยตนเอง ที่อยู่การสมัครสมาชิกได้ถูกคัดลอกอัตโนมัติแล้ว",
diff --git a/apps/user/locales/tr-TR/dashboard.json b/apps/user/locales/tr-TR/dashboard.json
index 22d2243..018ff51 100644
--- a/apps/user/locales/tr-TR/dashboard.json
+++ b/apps/user/locales/tr-TR/dashboard.json
@@ -5,8 +5,11 @@
"copy": "kopyala",
"copyFailure": "Kopyalama başarısız oldu, lütfen elle kopyalayın",
"copySuccess": "Kopyalama başarılı",
+ "deducted": "İptal edildi",
"download": "indir",
"expirationDays": "Son Kullanma Süresi/Gün",
+ "expired": "Süresi dolmuş",
+ "finished": "Trafik tükendi",
"import": "İçe Aktar",
"latestAnnouncement": "Son Duyuru",
"manualImportMessage": "Bu uygulama şu anda uyandırmayı desteklemiyor, lütfen elle içe aktarın, abone adresi otomatik olarak kopyalandı",
diff --git a/apps/user/locales/uk-UA/dashboard.json b/apps/user/locales/uk-UA/dashboard.json
index 2815aae..93262ee 100644
--- a/apps/user/locales/uk-UA/dashboard.json
+++ b/apps/user/locales/uk-UA/dashboard.json
@@ -5,8 +5,11 @@
"copy": "Копіювати",
"copyFailure": "Не вдалося скопіювати, будь ласка, скопіюйте вручну",
"copySuccess": "Скопійовано успішно",
+ "deducted": "Скасовано",
"download": "завантажити",
"expirationDays": "Термін дії/дні",
+ "expired": "Термін закінчився",
+ "finished": "Трафік вичерпано",
"import": "Імпорт",
"latestAnnouncement": "Останнє оголошення",
"manualImportMessage": "Цей додаток тимчасово не підтримує виклик, будь ласка, імпортуйте вручну, адресу підписки вже скопійовано",
diff --git a/apps/user/locales/vi-VN/dashboard.json b/apps/user/locales/vi-VN/dashboard.json
index e469aab..acc9aaa 100644
--- a/apps/user/locales/vi-VN/dashboard.json
+++ b/apps/user/locales/vi-VN/dashboard.json
@@ -5,8 +5,11 @@
"copy": "Sao chép",
"copyFailure": "Sao chép thất bại, vui lòng sao chép thủ công",
"copySuccess": "Sao chép thành công",
+ "deducted": "Đã hủy",
"download": "tải xuống",
"expirationDays": "Thời gian hết hạn/ngày",
+ "expired": "Hết hạn",
+ "finished": "Lưu lượng đã sử dụng",
"import": "Nhập khẩu",
"latestAnnouncement": "Thông báo mới nhất",
"manualImportMessage": "Ứng dụng này hiện không hỗ trợ kích hoạt, vui lòng nhập thủ công, địa chỉ đăng ký đã được sao chép tự động",
diff --git a/apps/user/locales/zh-CN/dashboard.json b/apps/user/locales/zh-CN/dashboard.json
index b152f21..fee6525 100644
--- a/apps/user/locales/zh-CN/dashboard.json
+++ b/apps/user/locales/zh-CN/dashboard.json
@@ -5,8 +5,11 @@
"copy": "复制",
"copyFailure": "复制失败,请手动复制",
"copySuccess": "复制成功",
+ "deducted": "已取消",
"download": "下载",
"expirationDays": "到期时间/天",
+ "expired": "已过期",
+ "finished": "流量已用尽",
"import": "导入",
"latestAnnouncement": "最新公告",
"manualImportMessage": "该应用暂不支持唤起,请手动导入,已自动复制订阅地址",
diff --git a/apps/user/locales/zh-HK/dashboard.json b/apps/user/locales/zh-HK/dashboard.json
index e9681f8..22c0e6c 100644
--- a/apps/user/locales/zh-HK/dashboard.json
+++ b/apps/user/locales/zh-HK/dashboard.json
@@ -5,8 +5,11 @@
"copy": "複製",
"copyFailure": "複製失敗,請手動複製",
"copySuccess": "複製成功",
+ "deducted": "已取消",
"download": "下載",
"expirationDays": "到期時間/天",
+ "expired": "已過期",
+ "finished": "流量已用盡",
"import": "匯入",
"latestAnnouncement": "最新公告",
"manualImportMessage": "該應用暫不支援喚起,請手動導入,已自動複製訂閱地址",
diff --git a/apps/user/services/common/common.ts b/apps/user/services/common/common.ts
index 99d74e8..c942f7d 100644
--- a/apps/user/services/common/common.ts
+++ b/apps/user/services/common/common.ts
@@ -25,6 +25,24 @@ export async function getApplication(options?: { [key: string]: any }) {
});
}
+/** Check verification code POST /v1/common/check_verification_code */
+export async function checkVerificationCode(
+ body: API.CheckVerificationCodeRequest,
+ options?: { [key: string]: any },
+) {
+ return request
(
+ '/v1/common/check_verification_code',
+ {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ data: body,
+ ...(options || {}),
+ },
+ );
+}
+
/** Get verification code POST /v1/common/send_code */
export async function sendEmailCode(body: API.SendCodeRequest, options?: { [key: string]: any }) {
return request('/v1/common/send_code', {
diff --git a/apps/user/services/common/typings.d.ts b/apps/user/services/common/typings.d.ts
index 3dbdacf..75a9b95 100644
--- a/apps/user/services/common/typings.d.ts
+++ b/apps/user/services/common/typings.d.ts
@@ -121,6 +121,17 @@ declare namespace API {
telephone: string;
};
+ type CheckVerificationCodeRequest = {
+ method: 'email' | 'mobile';
+ account: string;
+ code: string;
+ type: number;
+ };
+
+ type CheckVerificationCodeRespone = {
+ status: boolean;
+ };
+
type CloseOrderRequest = {
orderNo: string;
};
@@ -910,6 +921,7 @@ declare namespace API {
subscribe: Subscribe;
start_time: number;
expire_time: number;
+ finished_at: number;
reset_time: number;
traffic: number;
download: number;
diff --git a/apps/user/services/user/typings.d.ts b/apps/user/services/user/typings.d.ts
index a260e2c..13d8a66 100644
--- a/apps/user/services/user/typings.d.ts
+++ b/apps/user/services/user/typings.d.ts
@@ -1010,6 +1010,7 @@ declare namespace API {
subscribe: Subscribe;
start_time: number;
expire_time: number;
+ finished_at: number;
reset_time: number;
traffic: number;
download: number;