forked from tangled.org/core
A fork of tangled.org/core to hack on

Compare changes

Choose any two refs to compare.

Changed files
+33 -19
appview
pulls
+33 -19
appview/pulls/pulls.go
··· 1 1 package pulls 2 2 3 3 import ( 4 + "context" 4 5 "database/sql" 5 6 "encoding/json" 6 7 "errors" ··· 31 32 32 33 "github.com/bluekeyes/go-gitdiff/gitdiff" 33 34 comatproto "github.com/bluesky-social/indigo/api/atproto" 35 + "github.com/bluesky-social/indigo/atproto/client" 34 36 lexutil "github.com/bluesky-social/indigo/lex/util" 35 37 indigoxrpc "github.com/bluesky-social/indigo/xrpc" 36 38 "github.com/go-chi/chi/v5" ··· 1206 1208 return 1207 1209 } 1208 1210 1211 + blob, err := comatproto.RepoUploadBlob(r.Context(), client, strings.NewReader(patch)) 1212 + if err != nil { 1213 + log.Println("failed to upload patch", err) 1214 + s.pages.Notice(w, "pull", "Failed to create pull request. Try again later.") 1215 + return 1216 + } 1217 + 1209 1218 _, err = comatproto.RepoPutRecord(r.Context(), client, &comatproto.RepoPutRecord_Input{ 1210 1219 Collection: tangled.RepoPullNSID, 1211 1220 Repo: user.Did, ··· 1217 1226 Repo: string(f.RepoAt()), 1218 1227 Branch: targetBranch, 1219 1228 }, 1220 - Patch: patch, 1229 + Patch: blob.Blob.Ref.String(), 1221 1230 Source: recordPullSource, 1222 1231 CreatedAt: time.Now().Format(time.RFC3339), 1223 1232 }, ··· 1273 1282 return 1274 1283 } 1275 1284 1276 - // build a stack out of this patch 1277 - stackId := uuid.New() 1278 - stack, err := newStack(f, user, targetBranch, patch, pullSource, stackId.String()) 1285 + client, err := s.oauth.AuthorizedClient(r) 1279 1286 if err != nil { 1280 - log.Println("failed to create stack", err) 1281 - s.pages.Notice(w, "pull", fmt.Sprintf("Failed to create stack: %v", err)) 1287 + log.Println("failed to get authorized client", err) 1288 + s.pages.Notice(w, "pull", "Failed to create pull request. Try again later.") 1282 1289 return 1283 1290 } 1284 1291 1285 - client, err := s.oauth.AuthorizedClient(r) 1292 + // build a stack out of this patch 1293 + stackId := uuid.New() 1294 + stack, err := newStack(r.Context(), client, f, user, targetBranch, patch, pullSource, stackId.String()) 1286 1295 if err != nil { 1287 - log.Println("failed to get authorized client", err) 1288 - s.pages.Notice(w, "pull", "Failed to create pull request. Try again later.") 1296 + log.Println("failed to create stack", err) 1297 + s.pages.Notice(w, "pull", fmt.Sprintf("Failed to create stack: %v", err)) 1289 1298 return 1290 1299 } 1291 1300 ··· 1902 1911 ) { 1903 1912 targetBranch := pull.TargetBranch 1904 1913 1914 + client, err := s.oauth.AuthorizedClient(r) 1915 + if err != nil { 1916 + log.Println("failed to authorize client") 1917 + s.pages.Notice(w, "resubmit-error", "Failed to create pull request. Try again later.") 1918 + return 1919 + } 1920 + 1905 1921 origStack, _ := r.Context().Value("stack").(models.Stack) 1906 - newStack, err := newStack(f, user, targetBranch, patch, pull.PullSource, stackId) 1922 + newStack, err := newStack(r.Context(), client, f, user, targetBranch, patch, pull.PullSource, stackId) 1907 1923 if err != nil { 1908 1924 log.Println("failed to create resubmitted stack", err) 1909 1925 s.pages.Notice(w, "pull-merge-error", "Failed to merge pull request. Try again later.") ··· 2124 2140 return 2125 2141 } 2126 2142 2127 - client, err := s.oauth.AuthorizedClient(r) 2128 - if err != nil { 2129 - log.Println("failed to authorize client") 2130 - s.pages.Notice(w, "resubmit-error", "Failed to create pull request. Try again later.") 2131 - return 2132 - } 2133 - 2134 2143 _, err = comatproto.RepoApplyWrites(r.Context(), client, &comatproto.RepoApplyWrites_Input{ 2135 2144 Repo: user.Did, 2136 2145 Writes: writes, ··· 2399 2408 s.pages.HxLocation(w, fmt.Sprintf("/%s/pulls/%d", f.OwnerSlashRepo(), pull.PullId)) 2400 2409 } 2401 2410 2402 - func newStack(f *reporesolver.ResolvedRepo, user *oauth.User, targetBranch, patch string, pullSource *models.PullSource, stackId string) (models.Stack, error) { 2411 + func newStack(ctx context.Context, client *client.APIClient, f *reporesolver.ResolvedRepo, user *oauth.User, targetBranch, patch string, pullSource *models.PullSource, stackId string) (models.Stack, error) { 2403 2412 formatPatches, err := patchutil.ExtractPatches(patch) 2404 2413 if err != nil { 2405 2414 return nil, fmt.Errorf("Failed to extract patches: %v", err) ··· 2424 2433 body := fp.Body 2425 2434 rkey := tid.TID() 2426 2435 2436 + blob, err := comatproto.RepoUploadBlob(ctx, client, strings.NewReader(fp.Raw)) 2437 + if err != nil { 2438 + return nil, fmt.Errorf("Failed to upload patch: %v", err) 2439 + } 2440 + 2427 2441 initialSubmission := models.PullSubmission{ 2428 - Patch: fp.Raw, 2442 + Patch: blob.Blob.Ref.String(), 2429 2443 SourceRev: fp.SHA, 2430 2444 } 2431 2445 pull := models.Pull{