( ctx context.Context, chat database.Chat, )
| 4007 | } |
| 4008 | |
| 4009 | func (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 { |
no test coverage detected