|
@@ -2,22 +2,23 @@ import React, { useCallback } from 'react';
|
|
|
|
|
|
|
|
import { useTranslation } from 'next-i18next';
|
|
import { useTranslation } from 'next-i18next';
|
|
|
|
|
|
|
|
-import { apiv3Put } from '~/client/util/apiv3-client';
|
|
|
|
|
|
|
+import { apiv3Delete, apiv3Post } from '~/client/util/apiv3-client';
|
|
|
import { toastSuccess, toastError } from '~/client/util/toastr';
|
|
import { toastSuccess, toastError } from '~/client/util/toastr';
|
|
|
-import { useSWRxPersonalSettings, usePersonalSettings } from '~/stores/personal-settings';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const ApiSettings = React.memo((): JSX.Element => {
|
|
const ApiSettings = React.memo((): JSX.Element => {
|
|
|
|
|
|
|
|
const { t } = useTranslation();
|
|
const { t } = useTranslation();
|
|
|
- const { mutate: mutateDatabaseData } = useSWRxPersonalSettings();
|
|
|
|
|
- const { data: personalSettingsData } = usePersonalSettings();
|
|
|
|
|
|
|
+ // const { data: personalSettingsData } = usePersonalSettings();
|
|
|
|
|
+ const [newAccessToken, setNewAccessToken] = React.useState<string | null>(null);
|
|
|
|
|
|
|
|
const submitHandler = useCallback(async() => {
|
|
const submitHandler = useCallback(async() => {
|
|
|
|
|
|
|
|
try {
|
|
try {
|
|
|
- await apiv3Put('/personal-setting/api-token');
|
|
|
|
|
- mutateDatabaseData();
|
|
|
|
|
|
|
+ await apiv3Delete('/personal-setting/access-token/all');
|
|
|
|
|
+ const expiredAt = new Date('2099-12-31T23:59:59.999Z');
|
|
|
|
|
+ const result = await apiv3Post('/personal-setting/access-token', { expiredAt });
|
|
|
|
|
+ setNewAccessToken(result.data.token);
|
|
|
|
|
|
|
|
toastSuccess(t('toaster.update_successed', { target: t('page_me_apitoken.api_token'), ns: 'commons' }));
|
|
toastSuccess(t('toaster.update_successed', { target: t('page_me_apitoken.api_token'), ns: 'commons' }));
|
|
|
}
|
|
}
|
|
@@ -25,7 +26,7 @@ const ApiSettings = React.memo((): JSX.Element => {
|
|
|
toastError(err);
|
|
toastError(err);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- }, [mutateDatabaseData, t]);
|
|
|
|
|
|
|
+ }, [t]);
|
|
|
|
|
|
|
|
return (
|
|
return (
|
|
|
<>
|
|
<>
|
|
@@ -35,7 +36,7 @@ const ApiSettings = React.memo((): JSX.Element => {
|
|
|
<div className="row mb-3">
|
|
<div className="row mb-3">
|
|
|
<label htmlFor="apiToken" className="col-md-3 text-md-end col-form-label">{t('Current API Token')}</label>
|
|
<label htmlFor="apiToken" className="col-md-3 text-md-end col-form-label">{t('Current API Token')}</label>
|
|
|
<div className="col-md-6">
|
|
<div className="col-md-6">
|
|
|
- {personalSettingsData?.apiToken != null
|
|
|
|
|
|
|
+ {newAccessToken != null
|
|
|
? (
|
|
? (
|
|
|
<input
|
|
<input
|
|
|
data-testid="grw-api-settings-input"
|
|
data-testid="grw-api-settings-input"
|
|
@@ -43,7 +44,7 @@ const ApiSettings = React.memo((): JSX.Element => {
|
|
|
className="form-control"
|
|
className="form-control"
|
|
|
type="text"
|
|
type="text"
|
|
|
name="apiToken"
|
|
name="apiToken"
|
|
|
- value={personalSettingsData.apiToken}
|
|
|
|
|
|
|
+ value={newAccessToken}
|
|
|
readOnly
|
|
readOnly
|
|
|
/>
|
|
/>
|
|
|
)
|
|
)
|