feat: updated ui replication text and approval replication flag

This commit is contained in:
Akhil Mohan
2024-05-31 23:10:01 +05:30
committed by =
parent 51c1487ed1
commit a11f120a83
9 changed files with 38 additions and 25 deletions
@@ -26,6 +26,12 @@ export async function up(knex: Knex): Promise<void> {
t.boolean("isReplicated"); t.boolean("isReplicated");
}); });
} }
if (await knex.schema.hasTable(TableName.SecretApprovalRequest)) {
await knex.schema.alterTable(TableName.SecretApprovalRequest, (t) => {
t.boolean("isReplicated");
});
}
} }
export async function down(knex: Knex): Promise<void> { export async function down(knex: Knex): Promise<void> {
@@ -52,4 +58,10 @@ export async function down(knex: Knex): Promise<void> {
t.dropColumns("isReplicated"); t.dropColumns("isReplicated");
}); });
} }
if (await knex.schema.hasTable(TableName.SecretApprovalRequest)) {
await knex.schema.alterTable(TableName.SecretApprovalRequest, (t) => {
t.dropColumn("isReplicated");
});
}
} }
@@ -18,7 +18,8 @@ export const SecretApprovalRequestsSchema = z.object({
statusChangeBy: z.string().uuid().nullable().optional(), statusChangeBy: z.string().uuid().nullable().optional(),
committerId: z.string().uuid(), committerId: z.string().uuid(),
createdAt: z.date(), createdAt: z.date(),
updatedAt: z.date() updatedAt: z.date(),
isReplicated: z.boolean().nullable().optional()
}); });
export type TSecretApprovalRequests = z.infer<typeof SecretApprovalRequestsSchema>; export type TSecretApprovalRequests = z.infer<typeof SecretApprovalRequestsSchema>;
@@ -32,8 +32,7 @@ export const registerSecretApprovalRequestRouter = async (server: FastifyZodProv
}), }),
response: { response: {
200: z.object({ 200: z.object({
approvals: SecretApprovalRequestsSchema.merge( approvals: SecretApprovalRequestsSchema.extend({
z.object({
// secretPath: z.string(), // secretPath: z.string(),
policy: z.object({ policy: z.object({
id: z.string(), id: z.string(),
@@ -46,8 +45,7 @@ export const registerSecretApprovalRequestRouter = async (server: FastifyZodProv
environment: z.string(), environment: z.string(),
reviewers: z.object({ member: z.string(), status: z.string() }).array(), reviewers: z.object({ member: z.string(), status: z.string() }).array(),
approvers: z.string().array() approvers: z.string().array()
}) }).array()
).array()
}) })
} }
}, },
@@ -154,7 +154,8 @@ export const secretReplicationServiceFactory = ({
policyId: policy.id, policyId: policy.id,
status: "open", status: "open",
hasMerged: false, hasMerged: false,
committerId: membershipId committerId: membershipId,
isReplicated: true
}, },
tx tx
); );
@@ -44,7 +44,7 @@ export type TSecretApprovalSecChange = {
export type TSecretApprovalRequest<J extends unknown = EncryptedSecret> = { export type TSecretApprovalRequest<J extends unknown = EncryptedSecret> = {
id: string; id: string;
isReplication?: boolean; isReplicated?: boolean;
slug: string; slug: string;
createdAt: string; createdAt: string;
committerId: string; committerId: string;
@@ -213,7 +213,7 @@ export const SecretApprovalRequest = () => {
policy, policy,
reviewers, reviewers,
status, status,
isReplication isReplicated: isReplication
} = secretApproval; } = secretApproval;
const isApprover = policy?.approvers?.indexOf(myMembershipId || "") !== -1; const isApprover = policy?.approvers?.indexOf(myMembershipId || "") !== -1;
const isReviewed = const isReviewed =
@@ -185,7 +185,9 @@ export const SecretApprovalRequestChanges = ({
<div className="flex flex-grow flex-col"> <div className="flex flex-grow flex-col">
<div className="mb-1 text-lg"> <div className="mb-1 text-lg">
{generateCommitText(secretApprovalRequestDetails.commits)} {generateCommitText(secretApprovalRequestDetails.commits)}
{secretApprovalRequestDetails.isReplication && <span className="text-sm text-bunker-300"> (replication)</span>} {secretApprovalRequestDetails.isReplicated && (
<span className="text-sm text-bunker-300"> (replication)</span>
)}
</div> </div>
<div className="flex items-center text-sm text-bunker-300"> <div className="flex items-center text-sm text-bunker-300">
{committer?.user?.firstName} {committer?.user?.firstName}
@@ -144,8 +144,7 @@ export const CreateSecretImportForm = ({
defaultValue={false} defaultValue={false}
render={({ field }) => ( render={({ field }) => (
<Checkbox isChecked={field.value} onCheckedChange={field.onChange} id="isReplication"> <Checkbox isChecked={field.value} onCheckedChange={field.onChange} id="isReplication">
The replication mode retrieves secrets when changes occur in the specified Enable replication mode to synchronize changes across boards.
environment and secret path.
</Checkbox> </Checkbox>
)} )}
/> />
@@ -156,7 +156,7 @@ export const SecretImportItem = ({
</ProjectPermissionCan> </ProjectPermissionCan>
</div> </div>
</div> </div>
{isExpanded && !isDragging && ( {!isReplication && isExpanded && !isDragging && (
<td <td
colSpan={3} colSpan={3}
className={`bg-bunker-800 ${isExpanded && "border-b-2 border-mineshaft-500"}`} className={`bg-bunker-800 ${isExpanded && "border-b-2 border-mineshaft-500"}`}