package render

import (
	"context"
	"errors"
	"fmt"

	"gitlab.golang-school.ru/potok-2/lessons/lesson-23/pkg/logger"
)

func Error(ctx context.Context, err error, message string) error {
	ctxErr, ok := ctx.Value(logger.ContextErrKey{}).(*error)
	if ok {
		*ctxErr = fmt.Errorf("%s: %w", message, err)
	}

	err = unpack(err)

	return fmt.Errorf("%s: %w", message, err)
}

func unpack(err error) error {
	for {
		e := errors.Unwrap(err)
		if e == nil {
			break
		}

		err = e
	}

	return err
}
