Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions libs/spoke-codegen/src/graphql/campaign-stats.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,20 @@ query getCampaign($campaignId: String!) {
name
id
}
readiness {
id
basics
messagingService
textingHours
integration
contacts
autoassign
cannedResponses
campaignGroups
campaignVariables
interactions
texters
}
}
}

Expand Down
1 change: 1 addition & 0 deletions src/containers/AdminAutosending/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ const AdminAutosending: React.FC = () => {
error: getCampaignsError
} = useCampaignsEligibleForAutosendingQuery({
variables: { organizationId, isStarted, isBasic },
fetchPolicy: "cache-and-network",
pollInterval: 10 * 1000
});

Expand Down
62 changes: 53 additions & 9 deletions src/containers/AdminCampaignStats/index.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ import Alert from "@material-ui/lab/Alert";
import {
GetCampaignDocument,
GetOrganizationDataDocument,
GetOrganizationsDocument
GetOrganizationsDocument,
StartCampaignDocument
} from "@spoke/spoke-codegen";
import { css, StyleSheet } from "aphrodite";
import PropTypes from "prop-types";
Expand Down Expand Up @@ -94,7 +95,9 @@ class AdminCampaignStats extends React.Component {
copyCampaignError: undefined,
exportCampaignOpen: false,
exportCampaignError: undefined,
moreMenuAnchor: null
moreMenuAnchor: null,
startCampaignErrorOpen: false,
startCampaignError: undefined
};

handleNavigateToEdit = () => {
Expand All @@ -108,6 +111,20 @@ class AdminCampaignStats extends React.Component {
this.props.history.push(`/admin/${organizationId}/autosending`);
};

handleStartCampaign = async () => {
try {
const result = await this.props.mutations.startCampaign();
if (result.errors) {
throw result.errors;
}
} catch (error) {
this.setState({
startCampaignError: error.message ?? String(error),
startCampaignErrorOpen: true
});
}
};

handleOpenMoreMenu = (event) => {
this.setState({ moreMenuAnchor: event.currentTarget });
};
Expand Down Expand Up @@ -239,7 +256,11 @@ class AdminCampaignStats extends React.Component {
if (!campaign) {
return <h1> Uh oh! Campaign {campaignId} doesn't seem to exist </h1>;
}
const { pendingJobs, messagingService } = campaign;
const { pendingJobs, messagingService, readiness } = campaign;

const isCampaignReady = Object.keys(readiness)
.filter((key) => key !== "__typename" && key !== "id")
.every((key) => readiness[key]);

const currentExportJob = pendingJobs.find(
(job) => job.jobType === "export"
Expand Down Expand Up @@ -336,12 +357,19 @@ class AdminCampaignStats extends React.Component {
>
Edit
</Button>
<Button
variant="outlined"
onClick={this.handleNavigateToAutosending}
>
Autosending
</Button>
{!campaign.isStarted && isCampaignReady && (
<Button variant="outlined" onClick={this.handleStartCampaign}>
Start Campaign
</Button>
)}
{campaign.isStarted && window.ENABLE_AUTOSENDING && (
<Button
variant="outlined"
onClick={this.handleNavigateToAutosending}
>
Autosending
</Button>
)}
{isAdmin && (
<>
<Button
Expand Down Expand Up @@ -473,6 +501,18 @@ class AdminCampaignStats extends React.Component {
this.setState({ exportMessageOpen: false });
}}
/>
<Snackbar
open={this.state.startCampaignErrorOpen}
autoHideDuration={5000}
onClose={() => {
this.setState({
startCampaignErrorOpen: false,
startCampaignError: undefined
});
}}
>
<Alert severity="error">{this.state.startCampaignError}</Alert>
</Snackbar>
<Snackbar
open={this.state.campaignJustCopied}
message={
Expand Down Expand Up @@ -567,6 +607,10 @@ const queries = {
};

const mutations = {
startCampaign: (ownProps) => () => ({
mutation: StartCampaignDocument,
variables: { campaignId: ownProps.match.params.campaignId }
}),
archiveCampaign: (ownProps) => () => ({
mutation: gql`
mutation archiveCampaign($campaignId: String!) {
Expand Down
Loading