package utils

import (
	"context"
	"time"
)

func SetTimeout(f func(), timeout int) context.CancelFunc {
	ctx, cancelFunc := context.WithCancel(context.Background())
	go func() {
		select {
		case <-ctx.Done():
		case <-time.After(time.Duration(timeout) * time.Second):
			f()
		}
	}()
	return cancelFunc
}

func SetInterval(what func(), delay time.Duration) chan bool {
	ticker := time.NewTicker(delay)
	stopIt := make(chan bool)
	go func() {

		for {

			select {
			case <-stopIt:
				return
			case <-ticker.C:
				what()
			}
		}

	}()

	// return the bool channel to use it as a stopper
	return stopIt
}