From 20b3a904504d401cfc192b80440d76d787af94d9 Mon Sep 17 00:00:00 2001
From: silverwind <me@silverwind.io>
Date: Fri, 12 Aug 2022 23:03:41 +0200
Subject: [PATCH] Remove useless JS operation for relative time tooltips
 (#20756)

This operation that shifts the content from title to data-content is
useless when we can directly render the expected HTML instead.

This change does prevent these tooltips from working when the user has
JS disabled in their browser, but I think we made it clear by now that
JS is required for gitea to work properly.

Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: techknowlogick <techknowlogick@gitea.io>
---
 integrations/repo_test.go            | 2 +-
 modules/timeutil/since.go            | 4 ++--
 modules/timeutil/since_test.go       | 2 +-
 web_src/js/features/common-global.js | 8 --------
 4 files changed, 4 insertions(+), 12 deletions(-)

diff --git a/integrations/repo_test.go b/integrations/repo_test.go
index 872d3f24d1f72..c2ac6183f0457 100644
--- a/integrations/repo_test.go
+++ b/integrations/repo_test.go
@@ -64,7 +64,7 @@ func testViewRepo(t *testing.T) {
 			}
 		})
 
-		f.commitTime, _ = s.Find("span.time-since").Attr("title")
+		f.commitTime, _ = s.Find("span.time-since").Attr("data-content")
 		items = append(items, f)
 	})
 
diff --git a/modules/timeutil/since.go b/modules/timeutil/since.go
index 5e89b0faa29a4..8473d450510cf 100644
--- a/modules/timeutil/since.go
+++ b/modules/timeutil/since.go
@@ -234,7 +234,7 @@ func TimeSince(then time.Time, lang translation.Locale) template.HTML {
 }
 
 func htmlTimeSince(then, now time.Time, lang translation.Locale) template.HTML {
-	return template.HTML(fmt.Sprintf(`<span class="time-since" title="%s">%s</span>`,
+	return template.HTML(fmt.Sprintf(`<span class="time-since tooltip" data-content="%s">%s</span>`,
 		then.In(setting.DefaultUILocation).Format(GetTimeFormat(lang.Language())),
 		timeSince(then, now, lang)))
 }
@@ -245,7 +245,7 @@ func TimeSinceUnix(then TimeStamp, lang translation.Locale) template.HTML {
 }
 
 func htmlTimeSinceUnix(then, now TimeStamp, lang translation.Locale) template.HTML {
-	return template.HTML(fmt.Sprintf(`<span class="time-since" title="%s">%s</span>`,
+	return template.HTML(fmt.Sprintf(`<span class="time-since tooltip" data-content="%s">%s</span>`,
 		then.FormatInLocation(GetTimeFormat(lang.Language()), setting.DefaultUILocation),
 		timeSinceUnix(int64(then), int64(now), lang)))
 }
diff --git a/modules/timeutil/since_test.go b/modules/timeutil/since_test.go
index 8bdb9d7546a39..dfcf9cb01d985 100644
--- a/modules/timeutil/since_test.go
+++ b/modules/timeutil/since_test.go
@@ -119,7 +119,7 @@ func TestHtmlTimeSince(t *testing.T) {
 	// test that `diff` yields a result containing `expected`
 	test := func(expected string, diff time.Duration) {
 		actual := htmlTimeSince(BaseDate, BaseDate.Add(diff), translation.NewLocale("en-US"))
-		assert.Contains(t, actual, `title="Sat Jan  1 00:00:00 UTC 2000"`)
+		assert.Contains(t, actual, `data-content="Sat Jan  1 00:00:00 UTC 2000"`)
 		assert.Contains(t, actual, expected)
 	}
 	test("1 second", time.Second)
diff --git a/web_src/js/features/common-global.js b/web_src/js/features/common-global.js
index 259e409add3e6..a3aebc024625c 100644
--- a/web_src/js/features/common-global.js
+++ b/web_src/js/features/common-global.js
@@ -70,14 +70,6 @@ export function initGlobalTooltips() {
 }
 
 export function initGlobalCommon() {
-  // Show exact time
-  $('.time-since').each(function () {
-    $(this)
-      .addClass('tooltip')
-      .attr('data-content', $(this).attr('title'))
-      .attr('title', '');
-  });
-
   // Undo Safari emoji glitch fix at high enough zoom levels
   if (navigator.userAgent.match('Safari')) {
     $(window).resize(() => {