Skip to content

Commit b31aa10

Browse files
authored
Refactor to swagger TS API (#2903)
1 parent 1eba599 commit b31aa10

File tree

62 files changed

+654
-812
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+654
-812
lines changed

portal-ui/src/common/types.ts

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,6 @@ export interface ErrorResponseHandler {
3636
statusCode?: number;
3737
}
3838

39-
export interface IRetentionConfig {
40-
mode: string;
41-
unit: string;
42-
validity: number;
43-
}
44-
4539
export interface IBytesCalc {
4640
total: number;
4741
unit: string;

portal-ui/src/screens/Console/Buckets/BucketDetails/EnableBucketEncryption.tsx

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ import AddKeyModal from "./AddKeyModal";
4040
import {
4141
BucketEncryptionInfo,
4242
BucketEncryptionType,
43+
Error,
44+
HttpResponse,
4345
KmsKeyInfo,
4446
} from "api/consoleApi";
4547
import { api } from "api";
@@ -115,23 +117,26 @@ const EnableBucketEncryption = ({
115117
setLoading(false);
116118
closeModalAndRefresh();
117119
})
118-
.catch((err) => {
120+
.catch(async (res: HttpResponse<void, Error>) => {
121+
const err = (await res.json()) as Error;
119122
setLoading(false);
120-
dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));
123+
dispatch(setModalErrorSnackMessage(errorToHandler(err)));
121124
});
122125
} else {
123126
api.buckets
124127
.enableBucketEncryption(selectedBucket, {
125128
encType: encryptionType,
126129
kmsKeyID: kmsKeyID,
127130
})
128-
.then(() => {
131+
.then((res) => {
129132
setLoading(false);
130133
closeModalAndRefresh();
131134
})
132-
.catch((err) => {
135+
136+
.catch(async (res: HttpResponse<void, Error>) => {
137+
const err = (await res.json()) as Error;
133138
setLoading(false);
134-
dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));
139+
dispatch(setModalErrorSnackMessage(errorToHandler(err)));
135140
});
136141
}
137142
};

portal-ui/src/screens/Console/Buckets/BucketDetails/SetRetentionConfig.tsx

Lines changed: 29 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,14 @@ import {
2828
spacingUtils,
2929
} from "../../Common/FormComponents/common/styleLibrary";
3030

31-
import {
32-
ErrorResponseHandler,
33-
IRetentionConfig,
34-
} from "../../../../common/types";
35-
import api from "../../../../common/api";
3631
import ModalWrapper from "../../Common/ModalWrapper/ModalWrapper";
3732
import RadioGroupSelector from "../../Common/FormComponents/RadioGroupSelector/RadioGroupSelector";
3833
import InputBoxWrapper from "../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper";
3934
import { setModalErrorSnackMessage } from "../../../../systemSlice";
4035
import { useAppDispatch } from "../../../../store";
36+
import { api } from "api";
37+
import { ObjectRetentionMode, ObjectRetentionUnit } from "api/consoleApi";
38+
import { errorToHandler } from "api/errors";
4139

4240
const styles = (theme: Theme) =>
4341
createStyles({
@@ -63,9 +61,15 @@ const SetRetentionConfig = ({
6361
const dispatch = useAppDispatch();
6462
const [addLoading, setAddLoading] = useState<boolean>(false);
6563
const [loadingForm, setLoadingForm] = useState<boolean>(true);
66-
const [retentionMode, setRetentionMode] = useState<string>("compliance");
67-
const [retentionUnit, setRetentionUnit] = useState<string>("days");
68-
const [retentionValidity, setRetentionValidity] = useState<number>(1);
64+
const [retentionMode, setRetentionMode] = useState<
65+
ObjectRetentionMode | undefined
66+
>(ObjectRetentionMode.Compliance);
67+
const [retentionUnit, setRetentionUnit] = useState<
68+
ObjectRetentionUnit | undefined
69+
>(ObjectRetentionUnit.Days);
70+
const [retentionValidity, setRetentionValidity] = useState<
71+
number | undefined
72+
>(1);
6973
const [valid, setValid] = useState<boolean>(false);
7074

7175
const setRetention = (event: React.FormEvent) => {
@@ -74,24 +78,24 @@ const SetRetentionConfig = ({
7478
return;
7579
}
7680
setAddLoading(true);
77-
api
78-
.invoke("PUT", `/api/v1/buckets/${bucketName}/retention`, {
79-
mode: retentionMode,
80-
unit: retentionUnit,
81-
validity: retentionValidity,
81+
api.buckets
82+
.setBucketRetentionConfig(bucketName, {
83+
mode: retentionMode || ObjectRetentionMode.Compliance,
84+
unit: retentionUnit || ObjectRetentionUnit.Days,
85+
validity: retentionValidity || 1,
8286
})
8387
.then(() => {
8488
setAddLoading(false);
8589
closeModalAndRefresh();
8690
})
87-
.catch((err: ErrorResponseHandler) => {
91+
.catch((err) => {
8892
setAddLoading(false);
89-
dispatch(setModalErrorSnackMessage(err));
93+
dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));
9094
});
9195
};
9296

9397
useEffect(() => {
94-
if (Number.isNaN(retentionValidity) || retentionValidity < 1) {
98+
if (Number.isNaN(retentionValidity) || (retentionValidity || 1) < 1) {
9599
setValid(false);
96100
return;
97101
}
@@ -100,17 +104,17 @@ const SetRetentionConfig = ({
100104

101105
useEffect(() => {
102106
if (loadingForm) {
103-
api
104-
.invoke("GET", `/api/v1/buckets/${bucketName}/retention`)
105-
.then((res: IRetentionConfig) => {
107+
api.buckets
108+
.getBucketRetentionConfig(bucketName)
109+
.then((res) => {
106110
setLoadingForm(false);
107111

108112
// We set default values
109-
setRetentionMode(res.mode);
110-
setRetentionValidity(res.validity);
111-
setRetentionUnit(res.unit);
113+
setRetentionMode(res.data.mode);
114+
setRetentionValidity(res.data.validity);
115+
setRetentionUnit(res.data.unit);
112116
})
113-
.catch((err: ErrorResponseHandler) => {
117+
.catch(() => {
114118
setLoadingForm(false);
115119
});
116120
}
@@ -143,7 +147,7 @@ const SetRetentionConfig = ({
143147
name="retention_mode"
144148
label="Retention Mode"
145149
onChange={(e: React.ChangeEvent<{ value: unknown }>) => {
146-
setRetentionMode(e.target.value as string);
150+
setRetentionMode(e.target.value as ObjectRetentionMode);
147151
}}
148152
selectorOptions={[
149153
{ value: "compliance", label: "Compliance" },
@@ -158,7 +162,7 @@ const SetRetentionConfig = ({
158162
name="retention_unit"
159163
label="Retention Unit"
160164
onChange={(e: React.ChangeEvent<{ value: unknown }>) => {
161-
setRetentionUnit(e.target.value as string);
165+
setRetentionUnit(e.target.value as ObjectRetentionUnit);
162166
}}
163167
selectorOptions={[
164168
{ value: "days", label: "Days" },

portal-ui/src/screens/Console/Buckets/ListBuckets/AddBucket/AddBucket.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ import {
7575
Error,
7676
HttpResponse,
7777
ListBucketsResponse,
78+
ObjectRetentionMode,
7879
} from "../../../../../api/consoleApi";
7980
import { errorToHandler } from "../../../../../api/errors";
8081
import makeStyles from "@mui/styles/makeStyles";
@@ -484,7 +485,11 @@ const AddBucket = () => {
484485
name="retention_mode"
485486
label="Mode"
486487
onChange={(e: React.ChangeEvent<{ value: unknown }>) => {
487-
dispatch(setRetentionMode(e.target.value as string));
488+
dispatch(
489+
setRetentionMode(
490+
e.target.value as ObjectRetentionMode
491+
)
492+
);
488493
}}
489494
selectorOptions={[
490495
{ value: "compliance", label: "Compliance" },

portal-ui/src/screens/Console/Buckets/ListBuckets/AddBucket/addBucketsSlice.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
import { createSlice, PayloadAction } from "@reduxjs/toolkit";
1818
import { addBucketAsync } from "./addBucketThunks";
19+
import { ObjectRetentionMode } from "api/consoleApi";
1920

2021
export interface AddBucketState {
2122
loading: boolean;
@@ -29,7 +30,7 @@ export interface AddBucketState {
2930
quotaSize: string;
3031
quotaUnit: string;
3132
retentionEnabled: boolean;
32-
retentionMode: string;
33+
retentionMode: ObjectRetentionMode;
3334
retentionUnit: string;
3435
retentionValidity: number;
3536
navigateTo: string;
@@ -47,7 +48,7 @@ const initialState: AddBucketState = {
4748
quotaSize: "1",
4849
quotaUnit: "Ti",
4950
retentionEnabled: false,
50-
retentionMode: "compliance",
51+
retentionMode: ObjectRetentionMode.Compliance,
5152
retentionUnit: "days",
5253
retentionValidity: 180,
5354
navigateTo: "",
@@ -75,7 +76,7 @@ export const addBucketsSlice = createSlice({
7576
state.versioningEnabled = action.payload;
7677
if (!state.versioningEnabled || !state.retentionEnabled) {
7778
state.retentionEnabled = false;
78-
state.retentionMode = "compliance";
79+
state.retentionMode = ObjectRetentionMode.Compliance;
7980
state.retentionUnit = "days";
8081
state.retentionValidity = 180;
8182
}
@@ -119,7 +120,7 @@ export const addBucketsSlice = createSlice({
119120
state.retentionEnabled = action.payload;
120121
if (!state.versioningEnabled || !state.retentionEnabled) {
121122
state.retentionEnabled = false;
122-
state.retentionMode = "compliance";
123+
state.retentionMode = ObjectRetentionMode.Compliance;
123124
state.retentionUnit = "days";
124125
state.retentionValidity = 180;
125126
}
@@ -143,7 +144,7 @@ export const addBucketsSlice = createSlice({
143144
);
144145
}
145146
},
146-
setRetentionMode: (state, action: PayloadAction<string>) => {
147+
setRetentionMode: (state, action: PayloadAction<ObjectRetentionMode>) => {
147148
state.retentionMode = action.payload;
148149
},
149150
setRetentionUnit: (state, action: PayloadAction<string>) => {

portal-ui/src/screens/Console/Buckets/ListBuckets/BulkLifecycleModal.tsx

Lines changed: 23 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -33,20 +33,17 @@ import {
3333
import InputBoxWrapper from "../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper";
3434
import ModalWrapper from "../../Common/ModalWrapper/ModalWrapper";
3535
import PredefinedList from "../../Common/FormComponents/PredefinedList/PredefinedList";
36-
import api from "../../../../common/api";
3736
import GenericWizard from "../../Common/GenericWizard/GenericWizard";
3837
import FormSwitchWrapper from "../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper";
3938
import SelectWrapper from "../../Common/FormComponents/SelectWrapper/SelectWrapper";
4039
import RadioGroupSelector from "../../Common/FormComponents/RadioGroupSelector/RadioGroupSelector";
41-
import { ErrorResponseHandler } from "../../../../common/types";
4240
import QueryMultiSelector from "../../Common/FormComponents/QueryMultiSelector/QueryMultiSelector";
43-
import {
44-
ITierElement,
45-
ITierResponse,
46-
} from "../../Configurations/TiersConfiguration/types";
47-
import { ITiersDropDown, MultiBucketResult } from "../types";
41+
import { ITiersDropDown } from "../types";
4842
import { setModalErrorSnackMessage } from "../../../../systemSlice";
4943
import { useAppDispatch } from "../../../../store";
44+
import { api } from "api";
45+
import { MultiLifecycleResult, Tier } from "api/consoleApi";
46+
import { errorToHandler } from "api/errors";
5047

5148
interface IBulkReplicationModal {
5249
open: boolean;
@@ -94,21 +91,21 @@ const AddBulkReplicationModal = ({
9491
const [expiredObjectDM, setExpiredObjectDM] = useState<boolean>(false);
9592
const [NCExpirationDays, setNCExpirationDays] = useState<string>("0");
9693
const [NCTransitionDays, setNCTransitionDays] = useState<string>("0");
97-
const [ilmType, setIlmType] = useState<string>("expiry");
94+
const [ilmType, setIlmType] = useState<"expiry" | "transition">("expiry");
9895
const [expiryDays, setExpiryDays] = useState<string>("0");
9996
const [transitionDays, setTransitionDays] = useState<string>("0");
10097
const [isFormValid, setIsFormValid] = useState<boolean>(false);
101-
const [results, setResults] = useState<MultiBucketResult | null>(null);
98+
const [results, setResults] = useState<MultiLifecycleResult | null>(null);
10299

103100
useEffect(() => {
104101
if (loadingTiers) {
105-
api
106-
.invoke("GET", `/api/v1/admin/tiers`)
107-
.then((res: ITierResponse) => {
108-
const tiersList: ITierElement[] | null = get(res, "items", []);
102+
api.admin
103+
.tiersList()
104+
.then((res) => {
105+
const tiersList: Tier[] | null = get(res.data, "items", []);
109106

110107
if (tiersList !== null && tiersList.length >= 1) {
111-
const objList = tiersList.map((tier: ITierElement) => {
108+
const objList = tiersList.map((tier: Tier) => {
112109
const tierType = tier.type;
113110
const value = get(tier, `${tierType}.name`, "");
114111

@@ -122,9 +119,9 @@ const AddBulkReplicationModal = ({
122119
}
123120
setLoadingTiers(false);
124121
})
125-
.catch((err: ErrorResponseHandler) => {
122+
.catch((err) => {
126123
setLoadingTiers(false);
127-
dispatch(setModalErrorSnackMessage(err));
124+
dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));
128125
});
129126
}
130127
}, [loadingTiers, dispatch]);
@@ -198,16 +195,16 @@ const AddBulkReplicationModal = ({
198195
...rules,
199196
};
200197

201-
api
202-
.invoke("POST", `/api/v1/buckets/multi-lifecycle`, lifecycleInsert)
203-
.then((res: MultiBucketResult) => {
198+
api.buckets
199+
.addMultiBucketLifecycle(lifecycleInsert)
200+
.then((res) => {
204201
setAddLoading(false);
205-
setResults(res);
202+
setResults(res.data);
206203
to("++");
207204
})
208-
.catch((err: ErrorResponseHandler) => {
205+
.catch((err) => {
209206
setAddLoading(false);
210-
dispatch(setModalErrorSnackMessage(err));
207+
dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));
211208
});
212209
};
213210

@@ -250,7 +247,9 @@ const AddBulkReplicationModal = ({
250247
onChange={(
251248
e: React.ChangeEvent<{ value: unknown }>
252249
) => {
253-
setIlmType(e.target.value as string);
250+
setIlmType(
251+
e.target.value as "expiry" | "transition"
252+
);
254253
}}
255254
selectorOptions={[
256255
{ value: "expiry", label: "Expiry" },
@@ -422,7 +421,7 @@ const AddBulkReplicationModal = ({
422421
<Grid container>
423422
<Grid item xs={12} className={classes.formScrollable}>
424423
<h4>Buckets Results</h4>
425-
{results?.results.map((resultItem) => {
424+
{results?.results?.map((resultItem) => {
426425
return (
427426
<div className={classes.resultGrid}>
428427
{LogoToShow({ errString: resultItem.error || "" })}

0 commit comments

Comments
 (0)