Fix 'send_at' option on the UI and bug in starting scheduled campaigns

This commit is contained in:
Kailash Nadh 2020-01-19 20:46:25 +05:30
parent 32a543bf4f
commit 6681f189fc
3 changed files with 13 additions and 5 deletions

View file

@ -217,6 +217,8 @@ class TheFormDef extends React.PureComponent {
} }
componentWillReceiveProps(nextProps) { componentWillReceiveProps(nextProps) {
// On initial load, toggle the send_later switch if the record
// has a "send_at" date.
if (nextProps.record.send_at === this.props.record.send_at) { if (nextProps.record.send_at === this.props.record.send_at) {
return return
} }
@ -260,6 +262,12 @@ class TheFormDef extends React.PureComponent {
values.body = this.props.body values.body = this.props.body
values.content_type = this.props.contentType values.content_type = this.props.contentType
if (values.send_at) {
values.send_later = true
} else {
values.send_later = false
}
// Create a new campaign. // Create a new campaign.
this.setState({ loading: true }) this.setState({ loading: true })
if (!this.props.isSingle) { if (!this.props.isSingle) {
@ -303,8 +311,7 @@ class TheFormDef extends React.PureComponent {
cs.MethodPut, cs.MethodPut,
{ {
...values, ...values,
id: this.props.record.id, id: this.props.record.id
send_at: !this.state.sendLater ? null : values.send_at
} }
) )
.then(resp => { .then(resp => {

View file

@ -1,4 +1,4 @@
export const DateFormat = "ddd D MMM YYYY, hh:MM A" export const DateFormat = "ddd D MMM YYYY, hh:mm A"
// Data types. // Data types.
export const ModelUsers = "users" export const ModelUsers = "users"

View file

@ -411,8 +411,9 @@ u AS (
-- For each campaign above, update the to_send count. -- For each campaign above, update the to_send count.
UPDATE campaigns AS ca UPDATE campaigns AS ca
SET to_send = co.to_send, SET to_send = co.to_send,
max_subscriber_id = co.max_subscriber_id, status = (CASE WHEN status != 'running' THEN 'running' ELSE status END),
started_at=(CASE WHEN ca.started_at IS NULL THEN NOW() ELSE ca.started_at END) max_subscriber_id = co.max_subscriber_id,
started_at=(CASE WHEN ca.started_at IS NULL THEN NOW() ELSE ca.started_at END)
FROM (SELECT * FROM counts) co FROM (SELECT * FROM counts) co
WHERE ca.id = co.campaign_id WHERE ca.id = co.campaign_id
) )