// Copyright 2023 The Forgejo Authors. All rights reserved.
// SPDX-License-Identifier: MIT

package forgefed

import (
	"code.gitea.io/gitea/modules/validation"
	ap "github.com/go-ap/activitypub"
)

// ForgeLike activity data type
// swagger:model
type ForgeLike struct {
	// swagger:ignore
	ap.Activity
}

func (s ForgeLike) MarshalJSON() ([]byte, error) {
	return s.Activity.MarshalJSON()
}

func (s *ForgeLike) UnmarshalJSON(data []byte) error {
	return s.Activity.UnmarshalJSON(data)
}

func (s ForgeLike) Validate() []string {
	var result []string
	result = append(result, validation.ValidateNotEmpty(string(s.Type), "type")...)
	result = append(result, validation.ValidateOneOf(string(s.Type), []any{"Like"})...)
	result = append(result, validation.ValidateNotEmpty(s.Actor.GetID().String(), "actor")...)
	result = append(result, validation.ValidateNotEmpty(s.Object.GetID().String(), "object")...)
	result = append(result, validation.ValidateNotEmpty(s.StartTime.String(), "startTime")...)
	if s.StartTime.IsZero() {
		result = append(result, "StartTime was invalid.")
	}

	return result
}