85 lines
2.2 KiB
TypeScript
85 lines
2.2 KiB
TypeScript
import { createAsyncThunk } from "@reduxjs/toolkit";
|
|
import type { RootState } from "app/store";
|
|
import { getTranslationID } from "translation";
|
|
import { openSnackbar } from "features/ui/uiSlice";
|
|
import { getAccessToken } from "features/auth";
|
|
import {
|
|
LicensesApi,
|
|
SearchPartner,
|
|
PartnerLicenseInfo,
|
|
} from "../../../api/api";
|
|
import { Configuration } from "../../../api/configuration";
|
|
import { ErrorObject, createErrorObject } from "../../../common/errors";
|
|
|
|
export const issueTrialLicenseAsync = createAsyncThunk<
|
|
{
|
|
/* Empty Object */
|
|
},
|
|
{
|
|
selectedRow?: PartnerLicenseInfo | SearchPartner;
|
|
},
|
|
{
|
|
// rejectした時の返却値の型
|
|
rejectValue: {
|
|
error: ErrorObject;
|
|
};
|
|
}
|
|
>("licenses/issueTrialLicenseAsync", async (args, thunkApi) => {
|
|
const { selectedRow } = args;
|
|
// apiのConfigurationを取得する
|
|
const { getState } = thunkApi;
|
|
const state = getState() as RootState;
|
|
const { configuration } = state.auth;
|
|
const accessToken = getAccessToken(state.auth);
|
|
const config = new Configuration(configuration);
|
|
const licensesApi = new LicensesApi(config);
|
|
|
|
try {
|
|
if (!selectedRow) {
|
|
// アカウントが選択されていない場合はエラーとする。
|
|
const errorMessage = getTranslationID(
|
|
"trialLicenseIssuePopupPage.message.accountNotSelected"
|
|
);
|
|
thunkApi.dispatch(
|
|
openSnackbar({
|
|
level: "error",
|
|
message: errorMessage,
|
|
})
|
|
);
|
|
|
|
return {};
|
|
}
|
|
|
|
// トライアルライセンス発行処理を実行
|
|
await licensesApi.issueTrialLicenses(
|
|
{
|
|
issuedAccount: selectedRow.accountId,
|
|
},
|
|
{
|
|
headers: { authorization: `Bearer ${accessToken}` },
|
|
}
|
|
);
|
|
thunkApi.dispatch(
|
|
openSnackbar({
|
|
level: "info",
|
|
message: getTranslationID("common.message.success"),
|
|
})
|
|
);
|
|
return {};
|
|
} catch (e) {
|
|
// e ⇒ errorObjectに変換"
|
|
const error = createErrorObject(e);
|
|
|
|
const errorMessage = getTranslationID("common.message.internalServerError");
|
|
|
|
thunkApi.dispatch(
|
|
openSnackbar({
|
|
level: "error",
|
|
message: errorMessage,
|
|
})
|
|
);
|
|
|
|
return thunkApi.rejectWithValue({ error });
|
|
}
|
|
});
|