From 0c657112a3ca513f0907e74cbccb72165b3f6286 Mon Sep 17 00:00:00 2001
From: sillyguodong <33891828+sillyguodong@users.noreply.github.com>
Date: Fri, 5 May 2023 06:54:38 +0800
Subject: [PATCH] Display warning when user try to rename default branch
 (#24512)

Follow #24380

It's better to warn users when they try to rename the default branch.


![image](https://user-images.githubusercontent.com/33891828/236107929-c8ac2854-dd0f-4500-a0a7-800c8fe48861.png)

---------

Co-authored-by: techknowlogick <matti@mdranta.net>
Co-authored-by: Jason Song <i@wolfogre.com>
Co-authored-by: silverwind <me@silverwind.io>
Co-authored-by: Giteabot <teabot@gitea.io>
---
 options/locale/locale_en-US.ini    | 1 +
 templates/repo/branch/list.tmpl    | 5 +++++
 web_src/js/features/repo-branch.js | 5 +++++
 3 files changed, 11 insertions(+)

diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini
index a90c236944..ee8ec1a3ad 100644
--- a/options/locale/locale_en-US.ini
+++ b/options/locale/locale_en-US.ini
@@ -2412,6 +2412,7 @@ branch.included_desc = This branch is part of the default branch
 branch.included = Included
 branch.create_new_branch = Create branch from branch:
 branch.confirm_create_branch = Create branch
+branch.warning_rename_default_branch = You are renaming the default branch.
 branch.rename_branch_to = Rename "%s" to:
 branch.confirm_rename_branch = Rename branch
 branch.create_branch_operation = Create branch
diff --git a/templates/repo/branch/list.tmpl b/templates/repo/branch/list.tmpl
index 53ca2b9b09..cad4a95818 100644
--- a/templates/repo/branch/list.tmpl
+++ b/templates/repo/branch/list.tmpl
@@ -52,6 +52,7 @@
 								{{end}}
 								{{if and $.IsWriter (not $.Repository.IsArchived) (not .IsDeleted) (not $.IsMirror)}}
 									<button class="ui tertiary button show-modal show-rename-branch-modal gt-mx-3"
+										data-is-default-branch="true"
 										data-modal="#rename-branch-modal"
 										data-old-branch-name="{{$.DefaultBranch}}"
 										data-tooltip-content="{{$.locale.Tr "repo.branch.rename" ($.DefaultBranch)}}"
@@ -158,6 +159,7 @@
 										{{end}}
 										{{if and $.IsWriter (not $.Repository.IsArchived) (not .IsDeleted) (not $.IsMirror)}}
 											<button class="ui tertiary button show-modal show-rename-branch-modal gt-mx-3"
+												data-is-default-branch="false"
 												data-old-branch-name="{{.Name}}"
 												data-modal="#rename-branch-modal"
 												data-tooltip-content="{{$.locale.Tr "repo.branch.rename" (.Name)}}"
@@ -229,6 +231,9 @@
 	<form class="ui form" action="{{$.Repository.Link}}/settings/rename_branch" method="post">
 		<div class="content">
 			{{.CsrfTokenHtml}}
+			<div class="field default-branch-warning">
+				<span class="text red">{{.locale.Tr "repo.branch.warning_raname_default_branch"}}</span>
+			</div>
 			<div class="field">
 				<span class="text" data-rename-branch-to="{{.locale.Tr "repo.branch.rename_branch_to"}}"></span>
 			</div>
diff --git a/web_src/js/features/repo-branch.js b/web_src/js/features/repo-branch.js
index e7c2645dcd..e6da9661b6 100644
--- a/web_src/js/features/repo-branch.js
+++ b/web_src/js/features/repo-branch.js
@@ -1,4 +1,5 @@
 import $ from 'jquery';
+import {toggleElem} from '../utils/dom.js';
 
 export function initRepoBranchButton() {
   initRepoCreateBranchButton();
@@ -31,6 +32,10 @@ function initRepoRenameBranchButton() {
     const oldBranchName = $(this).attr('data-old-branch-name');
     $modal.find('input[name=from]').val(oldBranchName);
 
+    // display the warning that the branch which is chosen is the default branch
+    const $warn = $modal.find('.default-branch-warning');
+    toggleElem($warn, $(this).attr('data-is-default-branch') === 'true');
+
     const $text = $modal.find('[data-rename-branch-to]');
     $text.text($text.attr('data-rename-branch-to').replace('%s', oldBranchName));
   });