Revert "[MM-8497] Ability to set Do Not Disturb for a specified period of time (#16067)" (#17657)

This reverts commit 77d42568f9.
Этот коммит содержится в:
Jesse Hallam
2021-05-21 09:38:27 -03:00
коммит произвёл GitHub
родитель e1b13c10fc
Коммит ff383990f8
26 изменённых файлов: 21 добавлений и 584 удалений

Просмотреть файл

@@ -11,65 +11,42 @@ import (
type TaskFunc func()
type ScheduledTask struct {
Name string `json:"name"`
Interval time.Duration `json:"interval"`
Recurring bool `json:"recurring"`
function func()
cancel chan struct{}
cancelled chan struct{}
fromNextIntervalTime bool
Name string `json:"name"`
Interval time.Duration `json:"interval"`
Recurring bool `json:"recurring"`
function func()
cancel chan struct{}
cancelled chan struct{}
}
func CreateTask(name string, function TaskFunc, timeToExecution time.Duration) *ScheduledTask {
return createTask(name, function, timeToExecution, false, false)
return createTask(name, function, timeToExecution, false)
}
func CreateRecurringTask(name string, function TaskFunc, interval time.Duration) *ScheduledTask {
return createTask(name, function, interval, true, false)
return createTask(name, function, interval, true)
}
func CreateRecurringTaskFromNextIntervalTime(name string, function TaskFunc, interval time.Duration) *ScheduledTask {
return createTask(name, function, interval, true, true)
}
func createTask(name string, function TaskFunc, interval time.Duration, recurring bool, fromNextIntervalTime bool) *ScheduledTask {
func createTask(name string, function TaskFunc, interval time.Duration, recurring bool) *ScheduledTask {
task := &ScheduledTask{
Name: name,
Interval: interval,
Recurring: recurring,
function: function,
cancel: make(chan struct{}),
cancelled: make(chan struct{}),
fromNextIntervalTime: fromNextIntervalTime,
Name: name,
Interval: interval,
Recurring: recurring,
function: function,
cancel: make(chan struct{}),
cancelled: make(chan struct{}),
}
go func() {
defer close(task.cancelled)
var firstTick <-chan time.Time
var ticker *time.Ticker
if task.fromNextIntervalTime {
currTime := time.Now()
first := currTime.Truncate(interval)
if first.Before(currTime) {
first = first.Add(interval)
}
firstTick = time.After(time.Until(first))
ticker = &time.Ticker{C: nil}
} else {
firstTick = nil
ticker = time.NewTicker(interval)
}
ticker := time.NewTicker(interval)
defer func() {
ticker.Stop()
}()
for {
select {
case <-firstTick:
ticker = time.NewTicker(interval)
function()
case <-ticker.C:
function()
case <-task.cancel:

Просмотреть файл

@@ -4,7 +4,6 @@
package model
import (
"sync"
"sync/atomic"
"testing"
"time"
@@ -74,35 +73,3 @@ func TestCancelTask(t *testing.T) {
time.Sleep(TASK_TIME + time.Second)
assert.EqualValues(t, 0, atomic.LoadInt32(executionCount))
}
func TestCreateRecurringTaskFromNextIntervalTime(t *testing.T) {
TASK_NAME := "Test Recurring Task starting from next interval time"
TASK_TIME := time.Second * 2
var executionTime time.Time
var mu sync.Mutex
testFunc := func() {
mu.Lock()
executionTime = time.Now()
mu.Unlock()
}
task := CreateRecurringTaskFromNextIntervalTime(TASK_NAME, testFunc, TASK_TIME)
defer task.Cancel()
time.Sleep(TASK_TIME)
mu.Lock()
expectedSeconds := executionTime.Second()
mu.Unlock()
assert.EqualValues(t, 0, expectedSeconds%2)
time.Sleep(TASK_TIME)
mu.Lock()
expectedSeconds = executionTime.Second()
mu.Unlock()
assert.EqualValues(t, 0, expectedSeconds%2)
assert.Equal(t, TASK_NAME, task.Name)
assert.Equal(t, TASK_TIME, task.Interval)
assert.True(t, task.Recurring)
}

Просмотреть файл

@@ -25,8 +25,6 @@ type Status struct {
Manual bool `json:"manual"`
LastActivityAt int64 `json:"last_activity_at"`
ActiveChannel string `json:"active_channel,omitempty" db:"-"`
DNDEndTime int64 `json:"dnd_end_time"`
PrevStatus string `json:"-"`
}
func (o *Status) ToJson() string {

Просмотреть файл

@@ -12,7 +12,7 @@ import (
)
func TestStatus(t *testing.T) {
status := Status{NewId(), STATUS_ONLINE, true, 0, "123", 0, ""}
status := Status{NewId(), STATUS_ONLINE, true, 0, "123"}
json := status.ToJson()
status2 := StatusFromJson(strings.NewReader(json))
@@ -29,7 +29,7 @@ func TestStatus(t *testing.T) {
}
func TestStatusListToJson(t *testing.T) {
statuses := []*Status{{NewId(), STATUS_ONLINE, true, 0, "123", 0, ""}, {NewId(), STATUS_OFFLINE, true, 0, "", 0, ""}}
statuses := []*Status{{NewId(), STATUS_ONLINE, true, 0, "123"}, {NewId(), STATUS_OFFLINE, true, 0, ""}}
jsonStatuses := StatusListToJson(statuses)
var dat []map[string]interface{}