catch
This commit is contained in:
@@ -10,6 +10,7 @@ import useIntersectionObserver from '@/widgets/intersection-observer';
|
|||||||
import { useStore } from '@/shared/model/store';
|
import { useStore } from '@/shared/model/store';
|
||||||
import { DefaultRequestPagination } from '@/entities/common/model/types';
|
import { DefaultRequestPagination } from '@/entities/common/model/types';
|
||||||
import { AlarmRoutes } from './alarm-routes';
|
import { AlarmRoutes } from './alarm-routes';
|
||||||
|
import { showAlert } from '@/widgets/show-alert';
|
||||||
|
|
||||||
export interface AlarmListProps {
|
export interface AlarmListProps {
|
||||||
appNotificationCategory: string;
|
appNotificationCategory: string;
|
||||||
@@ -92,6 +93,11 @@ export const AlarmList = ({
|
|||||||
&& rs.content.length === DEFAULT_PAGE_PARAM.size
|
&& rs.content.length === DEFAULT_PAGE_PARAM.size
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
}).catch((e: any) => {
|
||||||
|
if(e.response?.data?.error?.message){
|
||||||
|
showAlert(e.response?.data?.error?.message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -55,6 +55,11 @@ export const BoxContainer1 = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
setSettlement(rs.settlement);
|
setSettlement(rs.settlement);
|
||||||
|
}).catch((e: any) => {
|
||||||
|
if(e.response?.data?.error?.message){
|
||||||
|
showAlert(e.response?.data?.error?.message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -59,6 +59,11 @@ export const BoxContainer2 = () => {
|
|||||||
increase = Math.round(increase * 100) / 100;
|
increase = Math.round(increase * 100) / 100;
|
||||||
setSettlementIncrease(increase);
|
setSettlementIncrease(increase);
|
||||||
}
|
}
|
||||||
|
}).catch((e: any) => {
|
||||||
|
if(e.response?.data?.error?.message){
|
||||||
|
showAlert(e.response?.data?.error?.message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -74,6 +79,11 @@ export const BoxContainer2 = () => {
|
|||||||
setTopSalesDayInfo(rs.topSalesDayInfo);
|
setTopSalesDayInfo(rs.topSalesDayInfo);
|
||||||
setTopSalesTimeInfo(rs.topSalesTimeInfo);
|
setTopSalesTimeInfo(rs.topSalesTimeInfo);
|
||||||
setTopPaymentMethodInfo(rs.topPaymentMethodInfo);
|
setTopPaymentMethodInfo(rs.topPaymentMethodInfo);
|
||||||
|
}).catch((e: any) => {
|
||||||
|
if(e.response?.data?.error?.message){
|
||||||
|
showAlert(e.response?.data?.error?.message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import {
|
|||||||
HomeBannerListParams,
|
HomeBannerListParams,
|
||||||
HomeBannerListResponse
|
HomeBannerListResponse
|
||||||
} from '../model/types';
|
} from '../model/types';
|
||||||
|
import { showAlert } from '@/widgets/show-alert';
|
||||||
|
|
||||||
export const HomeBannerList = () => {
|
export const HomeBannerList = () => {
|
||||||
|
|
||||||
@@ -31,6 +32,11 @@ export const HomeBannerList = () => {
|
|||||||
else{
|
else{
|
||||||
setBannerList([]);
|
setBannerList([]);
|
||||||
}
|
}
|
||||||
|
}).catch((e: any) => {
|
||||||
|
if(e.response?.data?.error?.message){
|
||||||
|
showAlert(e.response?.data?.error?.message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
/*
|
/*
|
||||||
let items = [
|
let items = [
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import { DetailData, NoticeItem } from '@/entities/support/model/types';
|
|||||||
import { HomeNoticeItem } from './home-notice-item';
|
import { HomeNoticeItem } from './home-notice-item';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import { NoticeDetail } from '@/entities/support/ui/detail/notice-detail';
|
import { NoticeDetail } from '@/entities/support/ui/detail/notice-detail';
|
||||||
|
import { showAlert } from '@/widgets/show-alert';
|
||||||
|
|
||||||
export const HomeNoticeList = () => {
|
export const HomeNoticeList = () => {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
@@ -51,6 +52,11 @@ export const HomeNoticeList = () => {
|
|||||||
|
|
||||||
noticeList(listParams).then((rs) => {
|
noticeList(listParams).then((rs) => {
|
||||||
setResultList(rs.content);
|
setResultList(rs.content);
|
||||||
|
}).catch((e: any) => {
|
||||||
|
if(e.response?.data?.error?.message){
|
||||||
|
showAlert(e.response?.data?.error?.message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import {
|
|||||||
MerchantMidResponse
|
MerchantMidResponse
|
||||||
} from '../model/types';
|
} from '../model/types';
|
||||||
import { useStore } from '@/shared/model/store';
|
import { useStore } from '@/shared/model/store';
|
||||||
|
import { showAlert } from '@/widgets/show-alert';
|
||||||
|
|
||||||
export const InfoWrap = () => {
|
export const InfoWrap = () => {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
@@ -32,6 +33,11 @@ export const InfoWrap = () => {
|
|||||||
};
|
};
|
||||||
merchantMid(params).then((rs: MerchantMidResponse) => {
|
merchantMid(params).then((rs: MerchantMidResponse) => {
|
||||||
setData(rs);
|
setData(rs);
|
||||||
|
}).catch((e: any) => {
|
||||||
|
if(e.response?.data?.error?.message){
|
||||||
|
showAlert(e.response?.data?.error?.message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import { OnlineSection } from './section/online-section';
|
|||||||
import { CardSection } from './section/card-section';
|
import { CardSection } from './section/card-section';
|
||||||
import { EscrowSection } from './section/escrow-section';
|
import { EscrowSection } from './section/escrow-section';
|
||||||
import { useStore } from '@/shared/model/store';
|
import { useStore } from '@/shared/model/store';
|
||||||
|
import { showAlert } from '@/widgets/show-alert';
|
||||||
|
|
||||||
export const RegistrationStatusWrap = () => {
|
export const RegistrationStatusWrap = () => {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
@@ -41,6 +42,11 @@ export const RegistrationStatusWrap = () => {
|
|||||||
setOfflineInfomation(rs.offlineInfomation);
|
setOfflineInfomation(rs.offlineInfomation);
|
||||||
setCardApplications(rs.cardApplications);
|
setCardApplications(rs.cardApplications);
|
||||||
setEscrow(rs.escrow);
|
setEscrow(rs.escrow);
|
||||||
|
}).catch((e: any) => {
|
||||||
|
if(e.response?.data?.error?.message){
|
||||||
|
showAlert(e.response?.data?.error?.message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ import { usePaymentCardMutation } from '../api/use-payment-card-mutation';
|
|||||||
import { usePaymentNonCardMutation } from '../api/use-payment-non-card-mutation';
|
import { usePaymentNonCardMutation } from '../api/use-payment-non-card-mutation';
|
||||||
import { usePaymentInstallmentMutation } from '../api/use-payment-installment-mutation';
|
import { usePaymentInstallmentMutation } from '../api/use-payment-installment-mutation';
|
||||||
import { useStore } from '@/shared/model/store';
|
import { useStore } from '@/shared/model/store';
|
||||||
|
import { showAlert } from '@/widgets/show-alert';
|
||||||
|
|
||||||
export const InfoWrap = () => {
|
export const InfoWrap = () => {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
@@ -155,6 +156,11 @@ export const InfoWrap = () => {
|
|||||||
setGeneralTabItems(rs.generalTab.items);
|
setGeneralTabItems(rs.generalTab.items);
|
||||||
setInstallmentTabItems(rs.installmentTab.items);
|
setInstallmentTabItems(rs.installmentTab.items);
|
||||||
setMoneyPointTabItems(rs.moneyPointTab.items);
|
setMoneyPointTabItems(rs.moneyPointTab.items);
|
||||||
|
}).catch((e: any) => {
|
||||||
|
if(e.response?.data?.error?.message){
|
||||||
|
showAlert(e.response?.data?.error?.message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
const callPaymentNonCard = () => {
|
const callPaymentNonCard = () => {
|
||||||
@@ -171,6 +177,11 @@ export const InfoWrap = () => {
|
|||||||
setPaymentFees(rs.mobilePaymentData.paymentFees);
|
setPaymentFees(rs.mobilePaymentData.paymentFees);
|
||||||
setCategoryFees(rs.mobilePaymentData.categoryFees);
|
setCategoryFees(rs.mobilePaymentData.categoryFees);
|
||||||
setFeeRate(rs.otherPaymentData.feeRate);
|
setFeeRate(rs.otherPaymentData.feeRate);
|
||||||
|
}).catch((e: any) => {
|
||||||
|
if(e.response?.data?.error?.message){
|
||||||
|
showAlert(e.response?.data?.error?.message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
const callPaymentIntallment = () => {
|
const callPaymentIntallment = () => {
|
||||||
@@ -182,6 +193,11 @@ export const InfoWrap = () => {
|
|||||||
paymentInstallment(params).then((rs: PaymentInstallmentResponse) => {
|
paymentInstallment(params).then((rs: PaymentInstallmentResponse) => {
|
||||||
console.log(rs);
|
console.log(rs);
|
||||||
setInstallmentData(rs.installmentData);
|
setInstallmentData(rs.installmentData);
|
||||||
|
}).catch((e: any) => {
|
||||||
|
if(e.response?.data?.error?.message){
|
||||||
|
showAlert(e.response?.data?.error?.message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -202,6 +218,11 @@ export const InfoWrap = () => {
|
|||||||
if(rs.installmentDetails){
|
if(rs.installmentDetails){
|
||||||
setInstallmentDetails(rs.installmentDetails);
|
setInstallmentDetails(rs.installmentDetails);
|
||||||
}
|
}
|
||||||
|
}).catch((e: any) => {
|
||||||
|
if(e.response?.data?.error?.message){
|
||||||
|
showAlert(e.response?.data?.error?.message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
const changeToCardCompany = (cardCompany: string) => {
|
const changeToCardCompany = (cardCompany: string) => {
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import { NotifyRowKeys, PaymentNotificationDataParams, PaymentNotificationDataRe
|
|||||||
import { usePaymentNotificationDataMutation } from '../api/use-payment-notification-data-mutation';
|
import { usePaymentNotificationDataMutation } from '../api/use-payment-notification-data-mutation';
|
||||||
import { useStore } from '@/shared/model/store';
|
import { useStore } from '@/shared/model/store';
|
||||||
import { NotifyRow } from './section/notify-row';
|
import { NotifyRow } from './section/notify-row';
|
||||||
|
import { showAlert } from '@/widgets/show-alert';
|
||||||
|
|
||||||
export const NotificationDataWrap = () => {
|
export const NotificationDataWrap = () => {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
@@ -37,6 +38,11 @@ export const NotificationDataWrap = () => {
|
|||||||
setVirtualAccount(rs?.virtualAccount.detail);
|
setVirtualAccount(rs?.virtualAccount.detail);
|
||||||
setMobilePayment(rs?.mobilePayment.detail);
|
setMobilePayment(rs?.mobilePayment.detail);
|
||||||
setEscrowPayment(rs?.escrowPayment.detail);
|
setEscrowPayment(rs?.escrowPayment.detail);
|
||||||
|
}).catch((e: any) => {
|
||||||
|
if(e.response?.data?.error?.message){
|
||||||
|
showAlert(e.response?.data?.error?.message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import {
|
|||||||
SettlementStatus
|
SettlementStatus
|
||||||
} from '../model/types';
|
} from '../model/types';
|
||||||
import { useStore } from '@/shared/model/store';
|
import { useStore } from '@/shared/model/store';
|
||||||
|
import { showAlert } from '@/widgets/show-alert';
|
||||||
|
|
||||||
export const CalendarWrap = () => {
|
export const CalendarWrap = () => {
|
||||||
const { t, i18n } = useTranslation();
|
const { t, i18n } = useTranslation();
|
||||||
@@ -69,6 +70,11 @@ export const CalendarWrap = () => {
|
|||||||
setCompletedList(completedArr);
|
setCompletedList(completedArr);
|
||||||
setCompletedDateList(completedDateArr);
|
setCompletedDateList(completedDateArr);
|
||||||
}
|
}
|
||||||
|
}).catch((e: any) => {
|
||||||
|
if(e.response?.data?.error?.message){
|
||||||
|
showAlert(e.response?.data?.error?.message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
let maxYearMonth = moment().format('YYYYMM');
|
let maxYearMonth = moment().format('YYYYMM');
|
||||||
// let maxYearMonthValue = moment(maxYearMonth).format('YYYYMM');
|
// let maxYearMonthValue = moment(maxYearMonth).format('YYYYMM');
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import { useTranslation } from 'react-i18next';
|
|||||||
import { FullMenuClose } from '@/entities/common/ui/full-menu-close';
|
import { FullMenuClose } from '@/entities/common/ui/full-menu-close';
|
||||||
import { DetailMotionDuration, DetailMotionStyle, DetailMotionVariants } from '@/entities/common/model/constant';
|
import { DetailMotionDuration, DetailMotionStyle, DetailMotionVariants } from '@/entities/common/model/constant';
|
||||||
import { snackBar } from '@/shared/lib';
|
import { snackBar } from '@/shared/lib';
|
||||||
|
import { showAlert } from '@/widgets/show-alert';
|
||||||
|
|
||||||
export interface SettlementDetailProps {
|
export interface SettlementDetailProps {
|
||||||
detailOn: boolean;
|
detailOn: boolean;
|
||||||
@@ -71,6 +72,11 @@ export const SettlementDetail = ({
|
|||||||
snackBar('데이터가 존재하지 않습니다.');
|
snackBar('데이터가 존재하지 않습니다.');
|
||||||
onClickToClose();
|
onClickToClose();
|
||||||
}
|
}
|
||||||
|
}).catch((e: any) => {
|
||||||
|
if(e.response?.data?.error?.message){
|
||||||
|
showAlert(e.response?.data?.error?.message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -169,7 +169,13 @@ export const ListWrap = ({
|
|||||||
&& rs.nextCursor !== pageParam.cursor
|
&& rs.nextCursor !== pageParam.cursor
|
||||||
&& rs.content.length === DEFAULT_PAGE_PARAM.size
|
&& rs.content.length === DEFAULT_PAGE_PARAM.size
|
||||||
);
|
);
|
||||||
|
}).catch((e: any) => {
|
||||||
|
if(e.response?.data?.error?.message){
|
||||||
|
showAlert(e.response?.data?.error?.message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
settlementsHistorySummary(listSummaryParams).then((rs: SettlementsHistorySummaryResponse) => {
|
settlementsHistorySummary(listSummaryParams).then((rs: SettlementsHistorySummaryResponse) => {
|
||||||
setSettlementAmount(rs.settlementAmount || 0);
|
setSettlementAmount(rs.settlementAmount || 0);
|
||||||
setTransactionAmount(rs.transactionAmount || 0);
|
setTransactionAmount(rs.transactionAmount || 0);
|
||||||
@@ -177,6 +183,11 @@ export const ListWrap = ({
|
|||||||
setHoldAmount(rs.holdAmount || 0);
|
setHoldAmount(rs.holdAmount || 0);
|
||||||
setReleaseAmount(rs.releaseAmount || 0);
|
setReleaseAmount(rs.releaseAmount || 0);
|
||||||
setOffsetAmount(rs.offsetAmount || 0);
|
setOffsetAmount(rs.offsetAmount || 0);
|
||||||
|
}).catch((e: any) => {
|
||||||
|
if(e.response?.data?.error?.message){
|
||||||
|
showAlert(e.response?.data?.error?.message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
const callTransactionList = (type?: string) => {
|
const callTransactionList = (type?: string) => {
|
||||||
@@ -231,7 +242,13 @@ export const ListWrap = ({
|
|||||||
&& rs.nextCursor !== pageParam.cursor
|
&& rs.nextCursor !== pageParam.cursor
|
||||||
&& rs.content.length === DEFAULT_PAGE_PARAM.size
|
&& rs.content.length === DEFAULT_PAGE_PARAM.size
|
||||||
);
|
);
|
||||||
|
}).catch((e: any) => {
|
||||||
|
if(e.response?.data?.error?.message){
|
||||||
|
showAlert(e.response?.data?.error?.message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
settlementsTransactionSummary(listSummaryParams).then((rs) => {
|
settlementsTransactionSummary(listSummaryParams).then((rs) => {
|
||||||
setSettlementAmount(rs.settlementAmount);
|
setSettlementAmount(rs.settlementAmount);
|
||||||
setTransactionAmount(rs.transactionAmount);
|
setTransactionAmount(rs.transactionAmount);
|
||||||
@@ -240,6 +257,11 @@ export const ListWrap = ({
|
|||||||
setAuthFeeAmount(rs.authFeeAmount);
|
setAuthFeeAmount(rs.authFeeAmount);
|
||||||
setVatAmount(rs.vatAmount);
|
setVatAmount(rs.vatAmount);
|
||||||
setPreSettlementCancelOffset(rs.preSettlementCancelOffset);
|
setPreSettlementCancelOffset(rs.preSettlementCancelOffset);
|
||||||
|
}).catch((e: any) => {
|
||||||
|
if(e.response?.data?.error?.message){
|
||||||
|
showAlert(e.response?.data?.error?.message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -77,6 +77,11 @@ export const AllTransactionDetail = ({
|
|||||||
setTransactionInfo(rs.transactionInfo);
|
setTransactionInfo(rs.transactionInfo);
|
||||||
setSettlementInfo(rs.settlementInfo);
|
setSettlementInfo(rs.settlementInfo);
|
||||||
setPartCancelInfo(rs.partCancelInfo);
|
setPartCancelInfo(rs.partCancelInfo);
|
||||||
|
}).catch((e: any) => {
|
||||||
|
if(e.response?.data?.error?.message){
|
||||||
|
showAlert(e.response?.data?.error?.message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import {
|
|||||||
import { NumericFormat } from 'react-number-format';
|
import { NumericFormat } from 'react-number-format';
|
||||||
import { DetailMotionDuration, DetailMotionStyle, DetailMotionVariants } from '@/entities/common/model/constant';
|
import { DetailMotionDuration, DetailMotionStyle, DetailMotionVariants } from '@/entities/common/model/constant';
|
||||||
import { FullMenuClose } from '@/entities/common/ui/full-menu-close';
|
import { FullMenuClose } from '@/entities/common/ui/full-menu-close';
|
||||||
|
import { showAlert } from '@/widgets/show-alert';
|
||||||
|
|
||||||
export interface BillingDetailProps {
|
export interface BillingDetailProps {
|
||||||
detailOn: boolean;
|
detailOn: boolean;
|
||||||
@@ -42,6 +43,11 @@ export const BillingDetail = ({
|
|||||||
transactionAmount: rs.transactionAmount,
|
transactionAmount: rs.transactionAmount,
|
||||||
buyerName: rs.buyerName
|
buyerName: rs.buyerName
|
||||||
})
|
})
|
||||||
|
}).catch((e: any) => {
|
||||||
|
if(e.response?.data?.error?.message){
|
||||||
|
showAlert(e.response?.data?.error?.message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
const onClickToClose = () => {
|
const onClickToClose = () => {
|
||||||
|
|||||||
@@ -69,7 +69,12 @@ export const CashReceiptDetail = ({
|
|||||||
snackBar('용도 변경을 성공하였습니다.', function(){
|
snackBar('용도 변경을 성공하였습니다.', function(){
|
||||||
reload();
|
reload();
|
||||||
}, 2000);
|
}, 2000);
|
||||||
});
|
}).catch((e: any) => {
|
||||||
|
if(e.response?.data?.error?.message){
|
||||||
|
showAlert(e.response?.data?.error?.message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
const callDetail = () => {
|
const callDetail = () => {
|
||||||
|
|||||||
@@ -85,6 +85,11 @@ export const EscrowDetail = ({
|
|||||||
setMerchantInfo(rs.merchantInfo || {});
|
setMerchantInfo(rs.merchantInfo || {});
|
||||||
|
|
||||||
setOrderNumber(rs.importantInfo?.orderNumber);
|
setOrderNumber(rs.importantInfo?.orderNumber);
|
||||||
|
}).catch((e: any) => {
|
||||||
|
if(e.response?.data?.error?.message){
|
||||||
|
showAlert(e.response?.data?.error?.message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|||||||
Reference in New Issue
Block a user