From d66fe5482b1b827aab121dc120db2ff4f14d6f7a Mon Sep 17 00:00:00 2001 From: shoopea Date: Fri, 19 Jun 2020 22:48:55 +0200 Subject: [PATCH] test --- job.go | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/job.go b/job.go index f98db83..4424ec6 100644 --- a/job.go +++ b/job.go @@ -2080,6 +2080,60 @@ func jobGetStash(j Job) { err = json.Unmarshal(j.Payload, &p) logOnError(err, "jobGetStash : Unmarshal payload") + if j.Trigger > 0 { + m, err := getObjMsg(j.Trigger) + logOnError(err, "jobAlchAll : getObjMsg("+strconv.FormatInt(j.Trigger, 10)+")") + if err == nil { + rule, err := getMsgParsingRule(m) + logOnError(err, "jobAlchAll : getMsgParsingRule") + if rule.MsgTypeID64 == cacheObjSubType[`msg_exchange_req`] { + p.CleanupMsgs = append(p.CleanupMsg, *m) + setJobPayloadJSON(j.ID64, p) + rescheduleJob(j.ID64, 0, time.Unix(maxUnixTimestamp, 0).UTC()) + return + } else if rule.MsgTypeID64 == cacheObjSubType[`msg_exchange_ack`] { + p.CleanupMsgs = append(p.CleanupMsg, *m) + for k, v := range p.ClientID64 { + if v == j.UserID64 { + p.ClientID64[len(p.ClientID64)-1], p.ClientID64[k] = p.ClientID64[k], p.ClientID64[len(p.ClientID64)-1] + p.ClientID64 = p.ClientID64[:len(p.ClientID64)-1] + } + } + p.Trigger = 0 + } else if rule.MsgTypeID64 == cacheObjSubType[`msg_busy`] { + p.CleanupMsgs = append(p.CleanupMsg, *m) + } + } + } + + if len(p.ClientID64) > 0 && p.Trigger == 0 { + var ( + userID64 int64 = 0 + busyUntil time.Time = time.Now().UTC() + ) + for _, id := range p.ClientID64 { + clt, ok := getLockedClient(id, false) + if userID64 == 0 { + userID64 = clt.TGUserID64 + busyUntil = clt.CWBusyUntil + } else if busyUntil.After(clt.CWBusyUntil) { + userID64 = clt.TGUserID64 + busyUntil = clt.CWBusyUntil + } + } + setJobCallback(j.ID64, userID64, cacheObjSubType[`msg_exchange_req`]) + setJobCallback(j.ID64, userID64, cacheObjSubType[`msg_exchange_ack`]) + setJobCallback(j.ID64, userID64, cacheObjSubType[`msg_busy`]) + rescheduleJob(j.ID64, 0, time.Unix(maxUnixTimestamp, 0).UTC()) + clientSendCWMsgDelay(userID64, "âš–Exchange", time.Now().UTC().Add(-2*time.Second).Sub(busyUntil)) + } + + if len(p.ClientID64) == 0 && p.Trigger == 0 { + for _, m := range p.CleanupMsg { + clientDelTGMsg(m.TGUserID64, m.ID64, m.ChatID64) + } + } + err = setJobDone(j.ID64) logOnError(err, "jobGetStash : setJobDone")