appview/repo: add an option to choose the name of the forked repo #629

closed
opened by vidyasagarv.com targeting master from vidyasagarv.com/tangled-core: clone

Given that repo names cannot be changed later, this gives the freedom to choose the name and still stay in the fork network.

Signed-off-by: Vidya Sagar VOBBILISETTI mail@vidyasagarv.com

Changed files
+19 -8
appview
pages
templates
repo
repo
+7
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" hx-indicator="#spinner"> 9 + 10 + <fieldset class="space-y-3"> 11 + <legend for="repo_name" class="dark:text-white">Repository name</legend> 12 + <input type="text" id="repo_name" name="repo_name" value="{{ .RepoInfo.Name }}" 13 + class="w-full p-2 border rounded bg-gray-100 dark:bg-gray-700 dark:text-white dark:border-gray-600" /> 14 + </fieldset> 15 + 9 16 <fieldset class="space-y-3"> 10 17 <legend class="dark:text-white">Select a knot to fork into</legend> 11 18 <div class="space-y-2">
+11 -7
appview/repo/repo.go
··· 2129 2129 } 2130 2130 2131 2131 // choose a name for a fork 2132 - forkName := f.Name 2132 + forkName := r.FormValue("repo_name") 2133 + if forkName == "" { 2134 + rp.pages.Notice(w, "repo", "Repository name cannot be empty.") 2135 + return 2136 + } 2137 + 2133 2138 // this check is *only* to see if the forked repo name already exists 2134 2139 // in the user's account. 2135 2140 existingRepo, err := db.GetRepo( 2136 2141 rp.db, 2137 2142 db.FilterEq("did", user.Did), 2138 - db.FilterEq("name", f.Name), 2143 + db.FilterEq("name", forkName), 2139 2144 ) 2140 2145 if err != nil { 2141 - if errors.Is(err, sql.ErrNoRows) { 2142 - // no existing repo with this name found, we can use the name as is 2143 - } else { 2146 + if !errors.Is(err, sql.ErrNoRows) { 2144 2147 log.Println("error fetching existing repo from db", "err", err) 2145 2148 rp.pages.Notice(w, "repo", "Failed to fork this repository. Try again later.") 2146 2149 return 2147 2150 } 2148 2151 } else if existingRepo != nil { 2149 - // repo with this name already exists, append random string 2150 - forkName = fmt.Sprintf("%s-%s", forkName, randomString(3)) 2152 + // repo with this name already exists 2153 + rp.pages.Notice(w, "repo", "A repository with this name already exists.") 2154 + return 2151 2155 } 2152 2156 l = l.With("forkName", forkName) 2153 2157
+1 -1
appview/pages/templates/repo/fragments/cloneDropdown.html
··· 1 1 {{ define "repo/fragments/cloneDropdown" }} 2 2 {{ $knot := .RepoInfo.Knot }} 3 3 {{ if eq $knot "knot1.tangled.sh" }} 4 - {{ $knot = "tangled.sh" }} 4 + {{ $knot = "tangled.org" }} 5 5 {{ end }} 6 6 7 7 <details id="clone-dropdown" class="relative inline-block text-left group">