fix(location): another nesting

This commit is contained in:
dignifiedquire
2019-09-11 18:13:21 +02:00
parent ca9dccfcd7
commit dd2e3d35fd

View File

@@ -575,7 +575,7 @@ pub fn job_do_DC_JOB_MAYBE_SEND_LOCATIONS(context: &Context, _job: &Job) {
.map_err(Into::into) .map_err(Into::into)
}, },
) { ) {
context let msgs = context
.sql .sql
.prepare( .prepare(
"SELECT id \ "SELECT id \
@@ -586,15 +586,17 @@ pub fn job_do_DC_JOB_MAYBE_SEND_LOCATIONS(context: &Context, _job: &Job) {
AND independent=0 \ AND independent=0 \
ORDER BY timestamp;", ORDER BY timestamp;",
|mut stmt_locations, _| { |mut stmt_locations, _| {
for (chat_id, locations_send_begin, locations_last_sent) in rows { let msgs = rows
.into_iter()
.filter_map(|(chat_id, locations_send_begin, locations_last_sent)| {
if !stmt_locations if !stmt_locations
.exists(params![1, locations_send_begin, locations_last_sent,]) .exists(params![1, locations_send_begin, locations_last_sent,])
.unwrap_or_default() .unwrap_or_default()
{ {
// if there is no new location, there's nothing to send. // if there is no new location, there's nothing to send.
// however, maybe we want to bypass this test eg. 15 minutes // however, maybe we want to bypass this test eg. 15 minutes
continue; None
} } else {
// pending locations are attached automatically to every message, // pending locations are attached automatically to every message,
// so also to this empty text message. // so also to this empty text message.
// DC_CMD_LOCATION is only needed to create a nicer subject. // DC_CMD_LOCATION is only needed to create a nicer subject.
@@ -607,13 +609,19 @@ pub fn job_do_DC_JOB_MAYBE_SEND_LOCATIONS(context: &Context, _job: &Job) {
let mut msg = dc_msg_new(context, Viewtype::Text); let mut msg = dc_msg_new(context, Viewtype::Text);
msg.hidden = true; msg.hidden = true;
msg.param.set_int(Param::Cmd, 9); msg.param.set_int(Param::Cmd, 9);
// TODO: handle cleanup on error Some((chat_id, msg))
chat::send_msg(context, chat_id as u32, &mut msg).unwrap();
} }
Ok(()) })
.collect::<Vec<_>>();
Ok(msgs)
}, },
) )
.unwrap(); // TODO: Better error handling .unwrap_or_default(); // TODO: Better error handling
for (chat_id, mut msg) in msgs.into_iter() {
// TODO: better error handling
chat::send_msg(context, chat_id as u32, &mut msg).unwrap();
}
} }
if 0 != continue_streaming { if 0 != continue_streaming {
schedule_MAYBE_SEND_LOCATIONS(context, 0x1); schedule_MAYBE_SEND_LOCATIONS(context, 0x1);