import logWebUserEvent from './logWebUserEvent';

/**
 * Activity Feed Item Logging Utilities
 *
 * These functions log user interactions with activity feed items.
 *
 * Usage example:
 * ```typescript
 * // Log when user clicks on a song in the activity feed
 * logActivityFeedItemSongClicked({
 *   activityId: 'activity-123',
 *   index: 0,
 *   activityType: 'publish_song',
 *   clipId: 'clip-456',
 *   clipTitle: 'My Song',
 *   primaryUserId: 'user-789',
 *   primaryUserHandle: 'artist',
 *   feedType: 'full',
 * });
 * ```
 */

type ActivityFeedItemContext = {
  index: number;
  activityType: 'publish_song' | 'comment_song' | 'like_song' | 'remix_song';
  clipId: string;
  clipTitle: string;
  primaryUserId: string;
  primaryUserHandle: string;
  secondaryUserId?: string;
  secondaryUserHandle?: string;
  feedType: 'full' | 'home';
  commentId?: string;
};

export function logActivityFeedItemSongClicked({
  activityId,
  ...context
}: {
  activityId: string;
} & ActivityFeedItemContext) {
  logWebUserEvent({
    actionName: 'ActivityFeedItemSongClicked',
    principalObjectType: 'activity',
    principalObjectValue: activityId,
    context,
  });
}

export function logActivityFeedItemPrimaryUserClicked({
  activityId,
  ...context
}: {
  activityId: string;
} & ActivityFeedItemContext) {
  logWebUserEvent({
    actionName: 'ActivityFeedItemPrimaryUserClicked',
    principalObjectType: 'activity',
    principalObjectValue: activityId,
    context,
  });
}

export function logActivityFeedItemSecondaryUserClicked({
  activityId,
  ...context
}: {
  activityId: string;
} & ActivityFeedItemContext) {
  logWebUserEvent({
    actionName: 'ActivityFeedItemSecondaryUserClicked',
    principalObjectType: 'activity',
    principalObjectValue: activityId,
    context,
  });
}

export function logActivityFeedItemCommentClicked({
  activityId,
  commentId,
  ...context
}: {
  activityId: string;
  commentId: string;
} & ActivityFeedItemContext) {
  logWebUserEvent({
    actionName: 'ActivityFeedItemCommentClicked',
    principalObjectType: 'activity',
    principalObjectValue: activityId,
    context: {
      ...context,
      commentId,
    },
  });
}
