MCPcopy Index your code
hub / github.com/coder/coder / resolveChatDiffContents

Method resolveChatDiffContents

coderd/exp_chats.go:4009–4092  ·  view source on GitHub ↗
(
	ctx context.Context,
	chat database.Chat,
)

Source from the content-addressed store, hash-verified

4007}
4008
4009func (api *API) resolveChatDiffContents(
4010 ctx context.Context,
4011 chat database.Chat,
4012) (codersdk.ChatDiffContents, error) {
4013 result := codersdk.ChatDiffContents{ChatID: chat.ID}
4014
4015 status, found, err := api.getCachedChatDiffStatus(ctx, chat.ID)
4016 if err != nil {
4017 return result, err
4018 }
4019
4020 reference, err := api.resolveChatDiffReference(ctx, chat, found, status)
4021 if err != nil {
4022 return result, err
4023 }
4024
4025 if reference.RepositoryRef != nil {
4026 provider := strings.TrimSpace(reference.RepositoryRef.Provider)
4027 if provider != "" {
4028 result.Provider = &provider
4029 }
4030
4031 origin := strings.TrimSpace(reference.RepositoryRef.RemoteOrigin)
4032 if origin != "" {
4033 result.RemoteOrigin = &origin
4034 }
4035
4036 branch := strings.TrimSpace(reference.RepositoryRef.Branch)
4037 if branch != "" {
4038 result.Branch = &branch
4039 }
4040 }
4041
4042 if reference.PullRequestURL != "" {
4043 pullRequestURL := strings.TrimSpace(reference.PullRequestURL)
4044 result.PullRequestURL = &pullRequestURL
4045 if !found || !strings.EqualFold(strings.TrimSpace(status.Url.String), pullRequestURL) {
4046 _, err := api.upsertChatDiffStatusReference(ctx, chat.ID, pullRequestURL, time.Now().UTC().Add(-time.Second))
4047 if err != nil {
4048 return result, err
4049 }
4050 }
4051 }
4052
4053 if reference.RepositoryRef == nil {
4054 return result, nil
4055 }
4056
4057 gp := api.resolveGitProvider(ctx, reference.RepositoryRef.RemoteOrigin)
4058 if gp == nil {
4059 return result, nil
4060 }
4061
4062 token, err := api.resolveChatGitAccessToken(ctx, chat.OwnerID, reference.RepositoryRef.RemoteOrigin)
4063 if errors.Is(err, gitsync.ErrNoTokenAvailable) || token == nil {
4064 // No token available; return metadata without fetching diff.
4065 return result, nil
4066 } else if err != nil {

Callers 1

getChatDiffContentsMethod · 0.95

Calls 11

resolveGitProviderMethod · 0.95
AddMethod · 0.65
ParsePullRequestURLMethod · 0.65
FetchPullRequestDiffMethod · 0.65
FetchBranchDiffMethod · 0.65
IsMethod · 0.45
ErrorfMethod · 0.45

Tested by

no test coverage detected