func()

in internal/telemetry/telemetry.go [96:122]


func (c *CompletionTelemetryRateLimiter) Allow(name string, properties map[string]interface{}) bool {
	if name != "textDocument/completion" {
		return true
	}

	// always allow code-sample and template completions
	if properties != nil && properties["kind"] != nil {
		if kind, ok := properties["kind"].(string); ok {
			if kind == "code-sample" || kind == "template" {
				return true
			}
		}
	}

	timeStampNow := time.Now().Unix()
	if c.lastSentTimeStamp == 0 {
		c.lastSentTimeStamp = timeStampNow
		return true
	}

	// minimum interval between two completion telemetry events is 1 hour
	if timeStampNow-c.lastSentTimeStamp < 3600 {
		return false
	}
	c.lastSentTimeStamp = timeStampNow
	return true
}