Skip to content

Linkify timeline event timestamps to match GitHub.com behavior #7293

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 2 commits into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 29 additions & 19 deletions webviews/components/timeline.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -365,22 +365,26 @@ const MergedEventView = (event: MergedEvent) => {
);
};

const HeadDeleteEventView = (event: HeadRefDeleteEvent) => (
<div className="comment-container commit">
<div className="commit-message">
<div className="avatar-container">
<Avatar for={event.actor} />
</div>
<AuthorLink for={event.actor} />
<div className="message">
deleted the {event.headRef} branch{nbsp}
const HeadDeleteEventView = (event: HeadRefDeleteEvent) => {
const { pr } = useContext(PullRequestContext);
return (
<div className="comment-container commit">
<div className="commit-message">
<div className="avatar-container">
<Avatar for={event.actor} />
</div>
<AuthorLink for={event.actor} />
<div className="message">
deleted the {event.headRef} branch{nbsp}
</div>
</div>
<Timestamp href={pr.url} date={event.createdAt} />
</div>
<Timestamp date={event.createdAt} />
</div>
);
);
};

const CrossReferencedEventView = (event: CrossReferencedEvent) => {
const { pr } = useContext(PullRequestContext);
const { source } = event;
return (
<div className="comment-container commit">
Expand All @@ -395,7 +399,7 @@ const CrossReferencedEventView = (event: CrossReferencedEvent) => {
{event.willCloseTarget ? 'which will close this issue' : ''}
</div>
</div>
<Timestamp date={event.createdAt} />
<Timestamp href={pr.url} date={event.createdAt} />
</div>
);
};
Expand All @@ -408,6 +412,7 @@ function joinWithAnd(arr: JSX.Element[]): JSX.Element {
}

const AssignUnassignEventView = ({ event }: { event: AssignEvent | UnassignEvent | ConsolidatedAssignUnassignEvent }) => {
const { pr } = useContext(PullRequestContext);
const { actor } = event;
const assignees = (event as AssignEvent).assignees || [];
const unassignees = (event as UnassignEvent).unassignees || [];
Expand All @@ -434,12 +439,13 @@ const AssignUnassignEventView = ({ event }: { event: AssignEvent | UnassignEvent
{message}
</div>
</div>
<Timestamp date={event.createdAt} />
<Timestamp href={pr.url} date={event.createdAt} />
</div>
);
};

const ClosedEventView = ({ event, isIssue }: { event: ClosedEvent, isIssue: boolean }) => {
const { pr } = useContext(PullRequestContext);
const { actor, createdAt } = event;
return (
<div className="comment-container commit">
Expand All @@ -450,12 +456,13 @@ const ClosedEventView = ({ event, isIssue }: { event: ClosedEvent, isIssue: bool
<AuthorLink for={actor} />
<div className="message">{isIssue ? 'closed this issue' : 'closed this pull request'}</div>
</div>
<Timestamp date={createdAt} />
<Timestamp href={pr.url} date={createdAt} />
</div>
);
};

const ReopenedEventView = ({ event, isIssue }: { event: ReopenedEvent, isIssue: boolean }) => {
const { pr } = useContext(PullRequestContext);
const { actor, createdAt } = event;
return (
<div className="comment-container commit">
Expand All @@ -466,12 +473,13 @@ const ReopenedEventView = ({ event, isIssue }: { event: ReopenedEvent, isIssue:
<AuthorLink for={actor} />
<div className="message">{isIssue ? 'reopened this issue' : 'reopened this pull request'}</div>
</div>
<Timestamp date={createdAt} />
<Timestamp href={pr.url} date={createdAt} />
</div>
);
};

const CopilotStartedEventView = (event: CopilotStartedEvent) => {
const { pr } = useContext(PullRequestContext);
const { createdAt, onBehalfOf, sessionLink } = event;
const { openSessionLog } = useContext(PullRequestContext);

Expand All @@ -494,12 +502,13 @@ const CopilotStartedEventView = (event: CopilotStartedEvent) => {
<a onClick={handleSessionLogClick}><button className='secondary' title="View session log (Ctrl/Cmd+Click to open in second editor group)">View session</button></a>
</div>)
: null}
<Timestamp date={createdAt} />
<Timestamp href={pr.url} date={createdAt} />
</div>
);
};

const CopilotFinishedEventView = (event: CopilotFinishedEvent) => {
const { pr } = useContext(PullRequestContext);
const { createdAt, onBehalfOf } = event;
return (
<div className="comment-container commit">
Expand All @@ -508,12 +517,13 @@ const CopilotFinishedEventView = (event: CopilotFinishedEvent) => {
{nbsp}
<div className="message">Copilot finished work on behalf of <AuthorLink for={onBehalfOf} /></div>
</div>
<Timestamp date={createdAt} />
<Timestamp href={pr.url} date={createdAt} />
</div>
);
};

const CopilotFinishedErrorEventView = (event: CopilotFinishedErrorEvent) => {
const { pr } = useContext(PullRequestContext);
const { createdAt, onBehalfOf } = event;
const { openSessionLog } = useContext(PullRequestContext);

Expand All @@ -534,7 +544,7 @@ const CopilotFinishedErrorEventView = (event: CopilotFinishedErrorEvent) => {
<a onClick={handleSessionLogClick} title="View session log (Ctrl/Cmd+Click to open in second editor group)">Copilot has encountered an error. See logs for additional details.</a>
</div>
</div>
<Timestamp date={createdAt} />
<Timestamp href={pr.url} date={createdAt} />
</div>
);
};