feat: set name while forking #35

closed
opened by dvjn.dev targeting master

add feature to set custom name while forking a repo

Changed files
+22 -5
appview
pages
templates
repo
state
+12
appview/pages/templates/repo/fork.html
··· 6 6 </div> 7 7 <div class="p-6 bg-white dark:bg-gray-800 drop-shadow-sm rounded"> 8 8 <form hx-post="/{{ .RepoInfo.FullName }}/fork" class="space-y-12" hx-swap="none"> 9 + <fieldset class="space-y-3"> 10 + <legend class="dark:text-white">Set a name for your fork</legend> 11 + <input 12 + type="text" 13 + id="name" 14 + name="name" 15 + value="{{ .RepoInfo.Name }}" 16 + placeholder="repository name" 17 + required 18 + class="dark:bg-gray-700 dark:text-white dark:border-gray-600 dark:placeholder-gray-400"/> 19 + </fieldset> 20 + 9 21 <fieldset class="space-y-3"> 10 22 <legend class="dark:text-white">Select a knot to fork into</legend> 11 23 <div class="space-y-2">
+10 -5
appview/state/repo.go
··· 1690 1690 return 1691 1691 } 1692 1692 1693 + forkName := r.FormValue("name") 1694 + if forkName == "" { 1695 + s.pages.Notice(w, "repo", "Invalid form submission&mdash;missing repository name.") 1696 + return 1697 + } 1698 + 1693 1699 ok, err := s.enforcer.E.Enforce(user.Did, knot, knot, "repo:create") 1694 1700 if err != nil || !ok { 1695 1701 s.pages.Notice(w, "repo", "You do not have permission to create a repo in this knot.") 1696 1702 return 1697 1703 } 1698 1704 1699 - forkName := fmt.Sprintf("%s", f.RepoName) 1700 - 1701 - existingRepo, err := db.GetRepo(s.db, user.Did, f.RepoName) 1705 + existingRepo, err := db.GetRepo(s.db, user.Did, forkName) 1702 1706 if err == nil && existingRepo != nil { 1703 - forkName = fmt.Sprintf("%s-%s", forkName, randomString(3)) 1707 + s.pages.Notice(w, "repo", "Invalid form submission&mdash;repository already exists.") 1708 + return 1704 1709 } 1705 1710 1706 1711 secret, err := db.GetRegistrationKey(s.db, knot) ··· 1721 1726 } else { 1722 1727 uri = "https" 1723 1728 } 1724 - sourceUrl := fmt.Sprintf("%s://%s/%s/%s", uri, knot, f.OwnerDid(), f.RepoName) 1729 + sourceUrl := fmt.Sprintf("%s://%s/%s/%s", uri, f.Knot, f.OwnerDid(), f.RepoName) 1725 1730 sourceAt := f.RepoAt.String() 1726 1731 1727 1732 rkey := s.TID()