saito.k a59cb0fffb Merged PR 700: [テストFB対応]User画面でライセンスのStatusの表示を変更したい
## 概要
[Task3506: テスト対応](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/3506)

- ライセンスが割り当たっている状態の表示をLicense Assignedにする
- ライセンスの期限切れ状態の表示をNo Licenseとする
- ヘッダーのOMDSCloudの表記を削除

## レビューポイント
- 修正内容に不足はないか
- 修正の認識ずれはないか
- ほかに修正が影響している箇所はないか

## UIの変更
- https://ndstokyo.sharepoint.com/:f:/r/sites/Piranha/Shared%20Documents/General/OMDS/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88/Task3506?csf=1&web=1&e=g2Hkr3

## 動作確認状況
- ローカルで確認

## 補足
- 相談、参考資料などがあれば
2024-01-23 11:02:50 +00:00

323 lines
10 KiB
TypeScript

import { PayloadAction, createSlice } from "@reduxjs/toolkit";
import { USER_ROLES } from "components/auth/constants";
import { UsersState } from "./state";
import {
addUserAsync,
listUsersAsync,
updateUserAsync,
getAllocatableLicensesAsync,
deallocateLicenseAsync,
} from "./operations";
import { RoleType, UserView } from "./types";
const initialState: UsersState = {
domain: { users: [], allocatableLicenses: [] },
apps: {
updateUser: {
id: 0,
name: "",
email: "",
role: USER_ROLES.NONE,
authorId: undefined,
encryption: undefined,
encryptionPassword: undefined,
prompt: undefined,
autoRenew: true,
notification: true,
},
selectedUser: {
id: 0,
name: "",
email: "",
role: USER_ROLES.NONE,
authorId: undefined,
encryption: undefined,
encryptionPassword: undefined,
prompt: undefined,
autoRenew: true,
notification: true,
},
addUser: {
name: "",
role: USER_ROLES.NONE,
email: "",
autoRenew: true,
notification: true,
authorId: undefined,
encryption: false,
prompt: false,
encryptionPassword: undefined,
},
licenseAllocateUser: {
id: 0,
name: "",
email: "",
authorId: "",
licenseStatus: "",
expiration: undefined,
remaining: undefined,
},
selectedlicenseId: 0,
hasPasswordMask: false,
isLoading: false,
},
};
export const userSlice = createSlice({
name: "user",
initialState,
reducers: {
changeName: (state, action: PayloadAction<{ name: string }>) => {
const { name } = action.payload;
state.apps.addUser.name = name;
},
changeEmail: (state, action: PayloadAction<{ email: string }>) => {
const { email } = action.payload;
state.apps.addUser.email = email;
},
changeRole: (state, action: PayloadAction<{ role: RoleType }>) => {
const { role } = action.payload;
state.apps.addUser.role = role;
},
changeAuthorId: (
state,
action: PayloadAction<{ authorId: string | undefined }>
) => {
const { authorId } = action.payload;
state.apps.addUser.authorId = authorId?.toUpperCase();
},
changeAutoRenew: (state, action: PayloadAction<{ autoRenew: boolean }>) => {
const { autoRenew } = action.payload;
state.apps.addUser.autoRenew = autoRenew;
},
changeEncryption: (
state,
action: PayloadAction<{ encryption: boolean }>
) => {
const { encryption } = action.payload;
state.apps.addUser.encryption = encryption;
if (!encryption) {
state.apps.addUser.encryptionPassword = undefined;
}
},
changePrompt: (state, action: PayloadAction<{ prompt: boolean }>) => {
const { prompt } = action.payload;
state.apps.addUser.prompt = prompt;
},
changeEncryptionPassword: (
state,
action: PayloadAction<{ encryptionPassword: string }>
) => {
const { encryptionPassword } = action.payload;
state.apps.addUser.encryptionPassword = encryptionPassword;
},
changeNotification: (
state,
action: PayloadAction<{ notification: boolean }>
) => {
const { notification } = action.payload;
state.apps.addUser.notification = notification;
},
cleanupAddUser: (state) => {
state.apps.addUser = initialState.apps.addUser;
},
changeUpdateUser: (state, action: PayloadAction<{ id: number }>) => {
const { id } = action.payload;
const user = state.domain.users.find((x) => x.id === id);
if (!user) {
return;
}
state.apps.updateUser.id = user.id;
state.apps.updateUser.name = user.name;
state.apps.updateUser.email = user.email;
state.apps.updateUser.role = user.role as RoleType;
state.apps.updateUser.authorId = user.authorId?.toUpperCase();
state.apps.updateUser.encryption = user.encryption;
state.apps.updateUser.encryptionPassword = undefined;
state.apps.updateUser.prompt = user.prompt;
state.apps.updateUser.autoRenew = user.autoRenew;
state.apps.updateUser.notification = user.notification;
state.apps.selectedUser.id = user.id;
state.apps.selectedUser.name = user.name;
state.apps.selectedUser.email = user.email;
state.apps.selectedUser.role = user.role as RoleType;
state.apps.selectedUser.authorId = user.authorId?.toUpperCase();
state.apps.selectedUser.encryption = user.encryption;
state.apps.selectedUser.encryptionPassword = undefined;
state.apps.selectedUser.prompt = user.prompt;
state.apps.selectedUser.autoRenew = user.autoRenew;
state.apps.selectedUser.notification = user.notification;
state.apps.hasPasswordMask = user.encryption;
},
changeUpdateRole: (state, action: PayloadAction<{ role: RoleType }>) => {
const { role } = action.payload;
state.apps.updateUser.role = role;
},
changeUpdateAuthorId: (
state,
action: PayloadAction<{ authorId: string }>
) => {
const { authorId } = action.payload;
state.apps.updateUser.authorId = authorId.toUpperCase();
},
changeUpdateEncryption: (
state,
action: PayloadAction<{ encryption: boolean }>
) => {
const { encryption } = action.payload;
state.apps.updateUser.encryption = encryption;
const initEncryption = state.apps.selectedUser.encryption;
const password = state.apps.updateUser.encryptionPassword;
if (initEncryption && encryption && !password) {
state.apps.hasPasswordMask = true;
}
if (!encryption) {
state.apps.updateUser.encryptionPassword = undefined;
}
},
changeUpdateEncryptionPassword: (
state,
action: PayloadAction<{ encryptionPassword: string }>
) => {
const { encryptionPassword } = action.payload;
state.apps.updateUser.encryptionPassword = encryptionPassword;
},
changeUpdatePrompt: (state, action: PayloadAction<{ prompt: boolean }>) => {
const { prompt } = action.payload;
state.apps.updateUser.prompt = prompt;
},
changeUpdateAutoRenew: (
state,
action: PayloadAction<{ autoRenew: boolean }>
) => {
const { autoRenew } = action.payload;
state.apps.updateUser.autoRenew = autoRenew;
},
changeUpdateNotification: (
state,
action: PayloadAction<{ notification: boolean }>
) => {
const { notification } = action.payload;
state.apps.updateUser.notification = notification;
},
changeHasPasswordMask: (
state,
action: PayloadAction<{ hasPasswordMask: boolean }>
) => {
const { hasPasswordMask } = action.payload;
state.apps.hasPasswordMask = hasPasswordMask;
},
cleanupUpdateUser: (state) => {
state.apps.updateUser = initialState.apps.updateUser;
},
changeLicenseAllocateUser: (
state,
action: PayloadAction<{ selectedUser: UserView }>
) => {
const { selectedUser } = action.payload;
state.apps.licenseAllocateUser.id = selectedUser.id;
state.apps.licenseAllocateUser.name = selectedUser.name;
state.apps.licenseAllocateUser.email = selectedUser.email;
state.apps.licenseAllocateUser.authorId =
selectedUser.authorId.toUpperCase();
state.apps.licenseAllocateUser.licenseStatus = selectedUser.licenseStatus;
state.apps.licenseAllocateUser.expiration = selectedUser.expiration;
state.apps.licenseAllocateUser.remaining = selectedUser.remaining;
},
changeSelectedlicenseId: (
state,
action: PayloadAction<{ selectedlicenseId: number }>
) => {
const { selectedlicenseId } = action.payload;
state.apps.selectedlicenseId = selectedlicenseId;
},
cleanupLicenseAllocateInfo: (state) => {
state.apps.licenseAllocateUser = initialState.apps.licenseAllocateUser;
state.apps.selectedlicenseId = initialState.apps.selectedlicenseId;
},
},
extraReducers: (builder) => {
builder.addCase(listUsersAsync.pending, (state) => {
state.apps.isLoading = true;
});
builder.addCase(listUsersAsync.fulfilled, (state, action) => {
state.domain.users = action.payload.users;
state.apps.isLoading = false;
});
builder.addCase(listUsersAsync.rejected, (state) => {
state.apps.isLoading = false;
});
builder.addCase(addUserAsync.pending, (state) => {
state.apps.isLoading = true;
});
builder.addCase(addUserAsync.fulfilled, (state) => {
state.apps.isLoading = false;
});
builder.addCase(addUserAsync.rejected, (state) => {
state.apps.isLoading = false;
});
builder.addCase(updateUserAsync.pending, (state) => {
state.apps.isLoading = true;
});
builder.addCase(updateUserAsync.fulfilled, (state) => {
state.apps.isLoading = false;
});
builder.addCase(updateUserAsync.rejected, (state) => {
state.apps.isLoading = false;
});
builder.addCase(getAllocatableLicensesAsync.pending, (state) => {
state.apps.isLoading = true;
});
builder.addCase(getAllocatableLicensesAsync.fulfilled, (state, action) => {
state.domain.allocatableLicenses = action.payload.allocatableLicenses;
state.apps.isLoading = false;
});
builder.addCase(getAllocatableLicensesAsync.rejected, (state) => {
state.apps.isLoading = false;
});
builder.addCase(deallocateLicenseAsync.pending, (state) => {
state.apps.isLoading = true;
});
builder.addCase(deallocateLicenseAsync.fulfilled, (state) => {
state.apps.isLoading = false;
});
builder.addCase(deallocateLicenseAsync.rejected, (state) => {
state.apps.isLoading = false;
});
},
});
export const {
changeName,
changeEmail,
changeRole,
changeAuthorId,
changeAutoRenew,
changeNotification,
cleanupAddUser,
changeUpdateUser,
changeUpdateRole,
changeUpdateAuthorId,
changeUpdateEncryption,
changeUpdateEncryptionPassword,
changeUpdatePrompt,
changeUpdateAutoRenew,
changeUpdateNotification,
cleanupUpdateUser,
changeEncryption,
changePrompt,
changeEncryptionPassword,
changeHasPasswordMask,
changeLicenseAllocateUser,
changeSelectedlicenseId,
cleanupLicenseAllocateInfo,
} = userSlice.actions;
export default userSlice.reducer;