Skip to content

Commit

Permalink
Bring B features over to A stream (#4432)
Browse files Browse the repository at this point in the history
* move domain tags and hiding/archiving to A stream

* allow hidden domains to be counted in summaries

* allow org admins to see hidden domains

* don't show domain filters on myTracker page

* move myTracker to the A stream

* move activity logs to A stream

* fix AdminDomains test

* add dismissable alert banner

* put ABTestVariant inside Wrapper file

* put hidden and archive features back into B stream

* rehide hidden domains in landing page summaries

* comment out alert banner for domain consolidation

* cleanup

* cert status info box
  • Loading branch information
lcampbell2 committed May 15, 2023
1 parent 1ab8fc8 commit 6ff56de
Show file tree
Hide file tree
Showing 13 changed files with 1,002 additions and 1,079 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -415,7 +415,7 @@ export const loadDomainConnectionsByOrgId =
showArchivedDomains = aql``
}
let showHiddenDomains = aql`FILTER e.hidden != true`
if (permission === 'super_admin') {
if (['super_admin'].includes(permission)) {
showHiddenDomains = aql``
}

Expand Down
65 changes: 18 additions & 47 deletions frontend/src/admin/AdminDomainCard.js
Original file line number Diff line number Diff line change
@@ -1,29 +1,16 @@
import React from 'react'
import { Trans } from '@lingui/macro'
import { array, bool, string } from 'prop-types'
import {
Flex,
Grid,
Link,
ListItem,
Stack,
Tag,
TagLabel,
Text,
} from '@chakra-ui/react'
import { Flex, Grid, Link, ListItem, Stack, Tag, TagLabel, Text } from '@chakra-ui/react'
import { ExternalLinkIcon } from '@chakra-ui/icons'
import { ABTestVariant, ABTestingWrapper } from '../app/ABTestWrapper'

import { sanitizeUrl } from '../utilities/sanitizeUrl'
import { ABTestingWrapper } from '../app/ABTestWrapper'
import { ABTestVariant } from '../app/ABTestVariant'

export function AdminDomainCard({ url, tags, isHidden, isArchived, ...rest }) {
return (
<ListItem {...rest}>
<Grid
templateColumns={{ base: 'auto', md: '40% 60%' }}
columnGap="1.5rem"
>
<Grid templateColumns={{ base: 'auto', md: '40% 60%' }} columnGap="1.5rem">
<Stack isInline align="center">
<Text fontWeight="bold">
<Trans>Domain:</Trans>
Expand All @@ -41,49 +28,33 @@ export function AdminDomainCard({ url, tags, isHidden, isArchived, ...rest }) {
<ExternalLinkIcon mx="2px" aria-hidden="true" />
</Link>
</Stack>
<ABTestingWrapper insiderVariantName="B">
<ABTestVariant name="B">
<Flex>
{tags?.map((tag, idx) => {
return (
<Tag
key={idx}
m="1"
borderRadius="full"
borderWidth="1px"
borderColor="gray.900"
>
<TagLabel mx="auto">{tag}</TagLabel>
</Tag>
)
})}
<Flex>
{tags?.map((tag, idx) => {
return (
<Tag key={idx} m="1" borderRadius="full" borderWidth="1px" borderColor="gray.900">
<TagLabel mx="auto">{tag}</TagLabel>
</Tag>
)
})}
<ABTestingWrapper insiderVariantName="B">
<ABTestVariant name="B">
{isHidden && (
<Tag
m="1"
borderRadius="full"
borderWidth="1px"
borderColor="gray.900"
>
<Tag m="1" borderRadius="full" borderWidth="1px" borderColor="gray.900">
<TagLabel mx="auto">
<Trans>Hidden</Trans>
</TagLabel>
</Tag>
)}
{isArchived && (
<Tag
m="1"
borderRadius="full"
borderWidth="1px"
borderColor="gray.900"
>
<Tag m="1" borderRadius="full" borderWidth="1px" borderColor="gray.900">
<TagLabel mx="auto">
<Trans>Archived</Trans>
</TagLabel>
</Tag>
)}
</Flex>
</ABTestVariant>
</ABTestingWrapper>
</ABTestVariant>
</ABTestingWrapper>
</Flex>
</Grid>
</ListItem>
)
Expand Down
154 changes: 43 additions & 111 deletions frontend/src/admin/AdminDomainModal.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,28 +30,16 @@ import {
Tooltip,
useToast,
} from '@chakra-ui/react'
import {
AddIcon,
MinusIcon,
QuestionOutlineIcon,
SmallAddIcon,
} from '@chakra-ui/icons'
import { AddIcon, MinusIcon, QuestionOutlineIcon, SmallAddIcon } from '@chakra-ui/icons'
import { array, bool, func, number, object, string } from 'prop-types'
import { Field, FieldArray, Formik } from 'formik'
import { useMutation } from '@apollo/client'

import { DomainField } from '../components/fields/DomainField'
import { CREATE_DOMAIN, UPDATE_DOMAIN } from '../graphql/mutations'
import { ABTestingWrapper } from '../app/ABTestWrapper'
import { ABTestVariant } from '../app/ABTestVariant'
import { ABTestVariant, ABTestingWrapper } from '../app/ABTestWrapper'

export function AdminDomainModal({
isOpen,
onClose,
validationSchema,
orgId,
...props
}) {
export function AdminDomainModal({ isOpen, onClose, validationSchema, orgId, ...props }) {
const {
editingDomainId,
editingDomainUrl,
Expand Down Expand Up @@ -84,9 +72,7 @@ export function AdminDomainModal({
if (createDomain.result.__typename === 'Domain') {
toast({
title: i18n._(t`Domain added`),
description: i18n._(
t`${createDomain.result.domain} was added to ${orgSlug}`,
),
description: i18n._(t`${createDomain.result.domain} was added to ${orgSlug}`),
status: 'success',
duration: 9000,
isClosable: true,
Expand Down Expand Up @@ -178,9 +164,7 @@ export function AdminDomainModal({
const stringValues = values?.map((label) => {
return label[i18n.locale]
})
const difference = tagOptions.filter(
(label) => !stringValues?.includes(label[i18n.locale]),
)
const difference = tagOptions.filter((label) => !stringValues?.includes(label[i18n.locale]))
return difference?.map((label, idx) => {
return (
<Tag
Expand All @@ -202,12 +186,7 @@ export function AdminDomainModal({
}

return (
<Modal
isOpen={isOpen}
onClose={onClose}
initialFocusRef={initialFocusRef}
motionPreset="slideInBottom"
>
<Modal isOpen={isOpen} onClose={onClose} initialFocusRef={initialFocusRef} motionPreset="slideInBottom">
<ModalOverlay />
<ModalContent pb={4}>
<Formik
Expand Down Expand Up @@ -255,30 +234,15 @@ export function AdminDomainModal({
}
}}
>
{({
handleSubmit,
handleChange,
isSubmitting,
values,
errors,
touched,
}) => (
{({ handleSubmit, handleChange, isSubmitting, values, errors, touched }) => (
<form id="form" onSubmit={handleSubmit}>
<ModalHeader>
{mutation === 'update' ? (
<Trans>Edit Domain Details</Trans>
) : (
<Trans>Add Domain Details</Trans>
)}
{mutation === 'update' ? <Trans>Edit Domain Details</Trans> : <Trans>Add Domain Details</Trans>}
</ModalHeader>
<ModalCloseButton />
<ModalBody>
<Stack spacing={4} p={25}>
<DomainField
name="domainUrl"
label={t`New Domain URL:`}
placeholder={t`New Domain URL`}
/>
<DomainField name="domainUrl" label={t`New Domain URL:`} placeholder={t`New Domain URL`} />

<FieldArray
name="selectors"
Expand All @@ -297,12 +261,7 @@ export function AdminDomainModal({
touched.selectors[index]
}
>
<Grid
gridTemplateColumns="auto 1fr"
gap="0.5em"
alignItems="center"
mb="0.5em"
>
<Grid gridTemplateColumns="auto 1fr" gap="0.5em" alignItems="center" mb="0.5em">
<IconButton
variant="danger"
icon={<MinusIcon size="icons.xs" />}
Expand All @@ -312,11 +271,7 @@ export function AdminDomainModal({
onClick={() => arrayHelpers.remove(index)}
aria-label="remove-dkim-selector"
/>
<Field
id={`selectors.${index}`}
name={`selectors.${index}`}
h="1.5rem"
>
<Field id={`selectors.${index}`} name={`selectors.${index}`} h="1.5rem">
{({ field }) => (
<Input
{...field}
Expand All @@ -329,9 +284,7 @@ export function AdminDomainModal({
</Field>

<FormErrorMessage gridColumn="2 / 3" mt={0}>
{errors &&
errors.selectors &&
errors.selectors[index]}
{errors && errors.selectors && errors.selectors[index]}
</FormErrorMessage>
</Grid>
</FormControl>
Expand All @@ -348,41 +301,36 @@ export function AdminDomainModal({
</Box>
)}
/>
<FieldArray
name="tags"
render={(arrayHelpers) => (
<Box>
<Text fontWeight="bold">Tags:</Text>
<SimpleGrid columns={3} spacing={2}>
{values.tags?.map((label, idx) => {
return (
<Tag key={idx} borderRadius="full">
<TagLabel>{label[i18n.locale]}</TagLabel>
<TagCloseButton
ml="auto"
onClick={() => arrayHelpers.remove(idx)}
aria-label={`remove-tag-${label[i18n.locale]}`}
/>
</Tag>
)
})}
</SimpleGrid>
<Divider borderBottomColor="gray.900" />
<SimpleGrid columns={3} spacing={2}>
{addableTags(values.tags, arrayHelpers)}
</SimpleGrid>
</Box>
)}
/>
<ABTestingWrapper insiderVariantName="B">
<ABTestVariant name="B">
<FieldArray
name="tags"
render={(arrayHelpers) => (
<Box>
<Text fontWeight="bold">Tags:</Text>
<SimpleGrid columns={3} spacing={2}>
{values.tags?.map((label, idx) => {
return (
<Tag key={idx} borderRadius="full">
<TagLabel>{label[i18n.locale]}</TagLabel>
<TagCloseButton
ml="auto"
onClick={() => arrayHelpers.remove(idx)}
aria-label={`remove-tag-${
label[i18n.locale]
}`}
/>
</Tag>
)
})}
</SimpleGrid>
<Divider borderBottomColor="gray.900" />
<SimpleGrid columns={3} spacing={2}>
{addableTags(values.tags, arrayHelpers)}
</SimpleGrid>
</Box>
)}
/>

<Flex align="center">
<Tooltip
label={t`Prevent this domain from being counted in your organization's summaries.`}
>
<Tooltip label={t`Prevent this domain from being counted in your organization's summaries.`}>
<QuestionOutlineIcon tabIndex={0} />
</Tooltip>
<label>
Expand All @@ -398,7 +346,6 @@ export function AdminDomainModal({
<Trans>Hide domain</Trans>
</Badge>
</Flex>

{permission === 'SUPER_ADMIN' && (
<Box>
<Flex align="center">
Expand All @@ -424,38 +371,23 @@ export function AdminDomainModal({

<Text fontSize="sm">
{orgCount > 0 ? (
<Trans>
Note: This will affect results for {orgCount}{' '}
organizations
</Trans>
<Trans>Note: This will affect results for {orgCount} organizations</Trans>
) : (
<Trans>
Note: This could affect results for multiple
organizations
</Trans>
<Trans>Note: This could affect results for multiple organizations</Trans>
)}
</Text>
</Box>
)}

<Text>
<Trans>
Please allow up to 24 hours for summaries to reflect
any changes.
</Trans>
<Trans>Please allow up to 24 hours for summaries to reflect any changes.</Trans>
</Text>
</ABTestVariant>
</ABTestingWrapper>
</Stack>
</ModalBody>

<ModalFooter>
<Button
variant="primary"
isLoading={isSubmitting}
type="submit"
mr="4"
>
<Button variant="primary" isLoading={isSubmitting} type="submit" mr="4">
<Trans>Confirm</Trans>
</Button>
</ModalFooter>
Expand Down
Loading

0 comments on commit 6ff56de

Please sign in to comment.