🐛 fix: Add copy subscription functionality to user subscription dashboard and improve localization for new features
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
import { Display } from '@/components/display';
|
||||
import { ProTable, ProTableActions } from '@/components/pro-table';
|
||||
import useGlobalStore from '@/config/use-global';
|
||||
import {
|
||||
createUserSubscribe,
|
||||
deleteUserSubscribe,
|
||||
@@ -28,6 +29,7 @@ export default function UserSubscription({ userId }: { userId: number }) {
|
||||
const t = useTranslations('user');
|
||||
const [loading, setLoading] = useState(false);
|
||||
const ref = useRef<ProTableActions>(null);
|
||||
const { getUserSubscribeUrls } = useGlobalStore();
|
||||
|
||||
return (
|
||||
<ProTable<API.UserSubscribe, Record<string, unknown>>
|
||||
@@ -146,6 +148,16 @@ export default function UserSubscription({ userId }: { userId: number }) {
|
||||
return true;
|
||||
}}
|
||||
/>,
|
||||
<Button
|
||||
key='copy'
|
||||
variant='secondary'
|
||||
onClick={async () => {
|
||||
await navigator.clipboard.writeText(getUserSubscribeUrls(row.token)[0] || '');
|
||||
toast.success(t('copySuccess'));
|
||||
}}
|
||||
>
|
||||
{t('copySubscription')}
|
||||
</Button>,
|
||||
<ConfirmButton
|
||||
key='delete'
|
||||
trigger={<Button variant='destructive'>{t('delete')}</Button>}
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
import { NEXT_PUBLIC_API_URL, NEXT_PUBLIC_SITE_URL } from '@/config/constants';
|
||||
import { extractDomain } from '@workspace/ui/utils';
|
||||
import { create } from 'zustand';
|
||||
|
||||
export interface GlobalStore {
|
||||
@@ -5,9 +7,10 @@ export interface GlobalStore {
|
||||
user?: API.User;
|
||||
setCommon: (common: Partial<API.GetGlobalConfigResponse>) => void;
|
||||
setUser: (user?: API.User) => void;
|
||||
getUserSubscribeUrls: (uuid: string, type?: string) => string[];
|
||||
}
|
||||
|
||||
export const useGlobalStore = create<GlobalStore>((set) => ({
|
||||
export const useGlobalStore = create<GlobalStore>((set, get) => ({
|
||||
common: {
|
||||
site: {
|
||||
host: '',
|
||||
@@ -77,6 +80,22 @@ export const useGlobalStore = create<GlobalStore>((set) => ({
|
||||
},
|
||||
})),
|
||||
setUser: (user) => set({ user }),
|
||||
getUserSubscribeUrls: (uuid: string, type?: string) => {
|
||||
const { pan_domain, subscribe_domain, subscribe_path } = get().common.subscribe || {};
|
||||
const domains = subscribe_domain
|
||||
? subscribe_domain.split('\n')
|
||||
: [extractDomain(NEXT_PUBLIC_API_URL || NEXT_PUBLIC_SITE_URL || '', pan_domain)];
|
||||
|
||||
return domains.map((domain) => {
|
||||
if (pan_domain) {
|
||||
if (type) return `https://${uuid}.${type}.${domain}`;
|
||||
return `https://${uuid}.${domain}`;
|
||||
} else {
|
||||
if (type) return `https://${domain}${subscribe_path}?token=${uuid}&type=${type}`;
|
||||
return `https://${domain}${subscribe_path}?token=${uuid}`;
|
||||
}
|
||||
});
|
||||
},
|
||||
}));
|
||||
|
||||
export default useGlobalStore;
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
"confirm": "Potvrdit",
|
||||
"confirmDelete": "Opravdu chcete smazat?",
|
||||
"confirmOffline": "Potvrdit offline",
|
||||
"copySubscription": "Kopírovat předplatné",
|
||||
"copySuccess": "Kopírování bylo úspěšné",
|
||||
"create": "Vytvořit",
|
||||
"createSubscription": "Vytvořit předplatné",
|
||||
"createSuccess": "Vytvoření úspěšné",
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
"confirm": "Bestätigen",
|
||||
"confirmDelete": "Sind Sie sicher, dass Sie löschen möchten?",
|
||||
"confirmOffline": "Offline bestätigen",
|
||||
"copySubscription": "Abonnement kopieren",
|
||||
"copySuccess": "Kopie erfolgreich",
|
||||
"create": "Erstellen",
|
||||
"createSubscription": "Abonnement erstellen",
|
||||
"createSuccess": "Erstellung erfolgreich",
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
"confirm": "Confirm",
|
||||
"confirmDelete": "Confirm Delete",
|
||||
"confirmOffline": "Confirm Offline",
|
||||
"copySubscription": "Copy Subscription",
|
||||
"copySuccess": "Copy successful",
|
||||
"create": "Create",
|
||||
"createSubscription": "Create Subscription",
|
||||
"createSuccess": "Create successful",
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
"confirm": "Confirmar",
|
||||
"confirmDelete": "¿Está seguro de que desea eliminar?",
|
||||
"confirmOffline": "Confirmar sin conexión",
|
||||
"copySubscription": "Copiar Suscripción",
|
||||
"copySuccess": "Copia exitosa",
|
||||
"create": "Crear",
|
||||
"createSubscription": "Crear suscripción",
|
||||
"createSuccess": "Creación exitosa",
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
"confirm": "Confirmar",
|
||||
"confirmDelete": "¿Está seguro de que desea eliminar?",
|
||||
"confirmOffline": "Confirmar sin conexión",
|
||||
"copySubscription": "Copiar Suscripción",
|
||||
"copySuccess": "Copia exitosa",
|
||||
"create": "Crear",
|
||||
"createSubscription": "Crear Suscripción",
|
||||
"createSuccess": "Creación exitosa",
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
"confirm": "تأیید",
|
||||
"confirmDelete": "آیا مطمئن هستید که میخواهید حذف کنید؟",
|
||||
"confirmOffline": "تأیید آفلاین",
|
||||
"copySubscription": "کپی اشتراک",
|
||||
"copySuccess": "کپی با موفقیت انجام شد",
|
||||
"create": "ایجاد",
|
||||
"createSubscription": "ایجاد اشتراک",
|
||||
"createSuccess": "ایجاد با موفقیت انجام شد",
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
"confirm": "Vahvista",
|
||||
"confirmDelete": "Oletko varma, että haluat poistaa?",
|
||||
"confirmOffline": "Vahvista offline-tila",
|
||||
"copySubscription": "Kopioi tilaus",
|
||||
"copySuccess": "Kopiointi onnistui",
|
||||
"create": "Luo",
|
||||
"createSubscription": "Luo tilaus",
|
||||
"createSuccess": "Luonti onnistui",
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
"confirm": "Confirmer",
|
||||
"confirmDelete": "Êtes-vous sûr de vouloir supprimer ?",
|
||||
"confirmOffline": "Confirmer hors ligne",
|
||||
"copySubscription": "Copier l'abonnement",
|
||||
"copySuccess": "Copie réussie",
|
||||
"create": "Créer",
|
||||
"createSubscription": "Créer un abonnement",
|
||||
"createSuccess": "Création réussie",
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
"confirm": "पुष्टि करें",
|
||||
"confirmDelete": "क्या आप वाकई हटाना चाहते हैं?",
|
||||
"confirmOffline": "ऑफ़लाइन की पुष्टि करें",
|
||||
"copySubscription": "सदस्यता कॉपी करें",
|
||||
"copySuccess": "कॉपी सफल",
|
||||
"create": "सृजन",
|
||||
"createSubscription": "सदस्यता बनाएं",
|
||||
"createSuccess": "सृजन सफल",
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
"confirm": "Megerősítés",
|
||||
"confirmDelete": "Biztosan törölni szeretné?",
|
||||
"confirmOffline": "Megerősítés offline",
|
||||
"copySubscription": "Előfizetés másolása",
|
||||
"copySuccess": "Másolás sikeres",
|
||||
"create": "Létrehozás",
|
||||
"createSubscription": "Előfizetés létrehozása",
|
||||
"createSuccess": "Sikeres létrehozás",
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
"confirm": "確認",
|
||||
"confirmDelete": "削除してもよろしいですか?",
|
||||
"confirmOffline": "オフラインを確認",
|
||||
"copySubscription": "サブスクリプションをコピー",
|
||||
"copySuccess": "コピーが成功しました",
|
||||
"create": "作成",
|
||||
"createSubscription": "サブスクリプションを作成",
|
||||
"createSuccess": "作成成功",
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
"confirm": "확인",
|
||||
"confirmDelete": "삭제하시겠습니까?",
|
||||
"confirmOffline": "오프라인 확인",
|
||||
"copySubscription": "구독 복사",
|
||||
"copySuccess": "복사 성공",
|
||||
"create": "생성",
|
||||
"createSubscription": "구독 생성",
|
||||
"createSuccess": "생성 성공",
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
"confirm": "bekreft",
|
||||
"confirmDelete": "Er du sikker på at du vil slette?",
|
||||
"confirmOffline": "Bekreft frakoblet",
|
||||
"copySubscription": "Kopier abonnement",
|
||||
"copySuccess": "Kopiering vellykket",
|
||||
"create": "opprett",
|
||||
"createSubscription": "Opprett abonnement",
|
||||
"createSuccess": "Opprettelse vellykket",
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
"confirm": "Potwierdź",
|
||||
"confirmDelete": "Czy na pewno chcesz usunąć?",
|
||||
"confirmOffline": "Potwierdź tryb offline",
|
||||
"copySubscription": "Kopiuj subskrypcję",
|
||||
"copySuccess": "Kopiowanie zakończone sukcesem",
|
||||
"create": "Utwórz",
|
||||
"createSubscription": "Utwórz subskrypcję",
|
||||
"createSuccess": "Utworzono pomyślnie",
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
"confirm": "confirmar",
|
||||
"confirmDelete": "Você tem certeza de que deseja excluir?",
|
||||
"confirmOffline": "Confirmar Offline",
|
||||
"copySubscription": "Copiar Assinatura",
|
||||
"copySuccess": "Cópia bem-sucedida",
|
||||
"create": "Criar",
|
||||
"createSubscription": "Criar Assinatura",
|
||||
"createSuccess": "Criação bem-sucedida",
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
"confirm": "Confirmare",
|
||||
"confirmDelete": "Sunteți sigur că doriți să ștergeți?",
|
||||
"confirmOffline": "Confirmare Offline",
|
||||
"copySubscription": "Copiază Abonamentul",
|
||||
"copySuccess": "Copiază cu succes",
|
||||
"create": "crea",
|
||||
"createSubscription": "Creează Abonament",
|
||||
"createSuccess": "Creat cu succes",
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
"confirm": "Подтвердить",
|
||||
"confirmDelete": "Вы уверены, что хотите удалить?",
|
||||
"confirmOffline": "Подтвердить офлайн",
|
||||
"copySubscription": "Копировать подписку",
|
||||
"copySuccess": "Копирование успешно",
|
||||
"create": "Создать",
|
||||
"createSubscription": "Создать подписку",
|
||||
"createSuccess": "Создание успешно",
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
"confirm": "ยืนยัน",
|
||||
"confirmDelete": "คุณแน่ใจหรือว่าต้องการลบ?",
|
||||
"confirmOffline": "ยืนยันออฟไลน์",
|
||||
"copySubscription": "คัดลอกการสมัครสมาชิก",
|
||||
"copySuccess": "คัดลอกสำเร็จ",
|
||||
"create": "สร้าง",
|
||||
"createSubscription": "สร้างการสมัครสมาชิก",
|
||||
"createSuccess": "สร้างสำเร็จ",
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
"confirm": "Onayla",
|
||||
"confirmDelete": "Silmek istediğinizden emin misiniz?",
|
||||
"confirmOffline": "Çevrimdışı Onayla",
|
||||
"copySubscription": "Aboneliği Kopyala",
|
||||
"copySuccess": "Kopyalama başarılı",
|
||||
"create": "oluştur",
|
||||
"createSubscription": "Abonelik Oluştur",
|
||||
"createSuccess": "Başarıyla oluşturuldu",
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
"confirm": "Підтвердити",
|
||||
"confirmDelete": "Ви впевнені, що хочете видалити?",
|
||||
"confirmOffline": "Підтвердити офлайн",
|
||||
"copySubscription": "Копіювати підписку",
|
||||
"copySuccess": "Копіювання успішне",
|
||||
"create": "створити",
|
||||
"createSubscription": "Створити підписку",
|
||||
"createSuccess": "Створено успішно",
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
"confirm": "Xác nhận",
|
||||
"confirmDelete": "Bạn có chắc chắn muốn xóa không?",
|
||||
"confirmOffline": "Xác nhận Ngoại tuyến",
|
||||
"copySubscription": "Sao chép Đăng ký",
|
||||
"copySuccess": "Sao chép thành công",
|
||||
"create": "Tạo",
|
||||
"createSubscription": "Tạo Đăng Ký",
|
||||
"createSuccess": "Tạo thành công",
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
"confirm": "确认",
|
||||
"confirmDelete": "确认删除",
|
||||
"confirmOffline": "确认下线",
|
||||
"copySubscription": "复制订阅",
|
||||
"copySuccess": "复制成功",
|
||||
"create": "创建",
|
||||
"createSubscription": "创建订阅",
|
||||
"createSuccess": "创建成功",
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
"confirm": "確認",
|
||||
"confirmDelete": "您確定要刪除嗎?",
|
||||
"confirmOffline": "確認離線",
|
||||
"copySubscription": "複製訂閱",
|
||||
"copySuccess": "複製成功",
|
||||
"create": "建立",
|
||||
"createSubscription": "建立訂閱",
|
||||
"createSuccess": "建立成功",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// @ts-ignore
|
||||
|
||||
|
||||
// API 更新时间:
|
||||
// API 唯一标识:
|
||||
import * as ads from './ads';
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// @ts-ignore
|
||||
|
||||
|
||||
// API 更新时间:
|
||||
// API 唯一标识:
|
||||
import * as auth from './auth';
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// @ts-ignore
|
||||
|
||||
|
||||
// API 更新时间:
|
||||
// API 唯一标识:
|
||||
import * as auth from './auth';
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// @ts-ignore
|
||||
|
||||
|
||||
// API 更新时间:
|
||||
// API 唯一标识:
|
||||
import * as announcement from './announcement';
|
||||
|
||||
Reference in New Issue
Block a user