Skip to content

Commit c5d3346

Browse files
committed
Refactor
1 parent f3b08e1 commit c5d3346

File tree

5 files changed

+18
-54
lines changed

5 files changed

+18
-54
lines changed

app/views/timer_sessions/_timer_container.html.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@
9292
<%= t('timer_sessions.timer.continue_last_session') %>
9393
<%= sprite_icon('add') %>
9494
<% end %>
95-
<button type="button" data-name="timer-share" data-action="click->form#share" class="btn-submit">
95+
<button type="submit" data-name="timer-share" data-action="click->form#share">
9696
<%= t('timer_sessions.timer.share') %>
9797
<%= sprite_icon('link') %>
9898
</button>

assets.src/src/redmine-tracky/controllers/form-controller.ts

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ export default class extends Controller {
3232

3333
public connect() {
3434
this.connected = true
35+
this.prefillFieldsFromURL()
3536
this.showShareIgnoredNotice()
3637
}
3738

@@ -77,7 +78,8 @@ export default class extends Controller {
7778
this.dispatchUpdate(form)
7879
}
7980

80-
public share(_event: Event) {
81+
public share(event: Event) {
82+
event.preventDefault()
8183
const parts: string[] = []
8284
const issueIds = this.extractIssueIds()
8385
const comments = this.descriptionTarget.value
@@ -92,30 +94,25 @@ export default class extends Controller {
9294
const query = parts.length > 0 ? `?${parts.join('&')}` : ''
9395
const url = `${window.location.origin}${window.location.pathname}${query}`
9496

95-
this.copyToClipboard(url).then(() => {
97+
navigator.clipboard.writeText(url).then(() => {
9698
this.showFlashNotice(this.shareCopiedValue)
9799
})
98100
}
99101

100-
private copyToClipboard(text: string): Promise<void> {
101-
if (navigator.clipboard?.writeText) {
102-
return navigator.clipboard.writeText(text).catch(() => {
103-
this.copyToClipboardFallback(text)
104-
})
105-
}
106-
this.copyToClipboardFallback(text)
107-
return Promise.resolve()
102+
private prefillFieldsFromURL() {
103+
const urlParams = new URLSearchParams(window.location.search)
104+
105+
this.prefillField(urlParams, 'comments', this.descriptionTarget)
106+
this.prefillField(urlParams, 'timer_start', this.startTarget)
107+
this.prefillField(urlParams, 'timer_end', this.endTarget)
108108
}
109109

110-
private copyToClipboardFallback(text: string) {
111-
const textarea = document.createElement('textarea')
112-
textarea.value = text
113-
textarea.style.position = 'fixed'
114-
textarea.style.opacity = '0'
115-
document.body.appendChild(textarea)
116-
textarea.select()
117-
document.execCommand('copy')
118-
document.body.removeChild(textarea)
110+
private prefillField(urlParams: URLSearchParams, param: string, target: HTMLInputElement) {
111+
const value = urlParams.get(param)
112+
if (!value) return
113+
114+
target.value = value
115+
target.dispatchEvent(new Event('change'))
119116
}
120117

121118
private showShareIgnoredNotice() {

assets.src/src/redmine-tracky/controllers/issue-completion-controller.ts

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -45,14 +45,6 @@ export default class extends Controller {
4545

4646
private prefillFromURL() {
4747
const urlParams = new URLSearchParams(window.location.search)
48-
49-
this.prefillIssuesFromURL(urlParams)
50-
this.prefillFieldFromURL(urlParams, 'comments', '#timer_session_comments')
51-
this.prefillFieldFromURL(urlParams, 'timer_start', '#timer_session_timer_start')
52-
this.prefillFieldFromURL(urlParams, 'timer_end', '#timer_session_timer_end')
53-
}
54-
55-
private prefillIssuesFromURL(urlParams: URLSearchParams) {
5648
const issueIds = urlParams.getAll('issue_ids[]')
5749

5850
issueIds.filter(v => v !== "").forEach((id) => {
@@ -70,17 +62,6 @@ export default class extends Controller {
7062
})
7163
}
7264

73-
private prefillFieldFromURL(urlParams: URLSearchParams, param: string, selector: string) {
74-
const value = urlParams.get(param)
75-
if (!value) return
76-
77-
const field = document.querySelector<HTMLInputElement>(selector)
78-
if (field) {
79-
field.value = value
80-
field.dispatchEvent(new Event('change'))
81-
}
82-
}
83-
8465
private addIssue(issue: { item: CompletionResult }) {
8566
const listController =
8667
this.application.getControllerForElementAndIdentifier(

assets.src/src/styles/timer_container.scss

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,6 @@
99
gap: 0.5rem;
1010
}
1111

12-
.btn-submit {
13-
-webkit-appearance: button;
14-
cursor: pointer;
15-
background-color: #fff;
16-
height: 28px;
17-
border: 1px solid #ccc;
18-
padding: 0 7px;
19-
transition: background-color 100ms linear;
20-
21-
&:hover {
22-
background-color: #ededed;
23-
}
24-
}
25-
2612
.timer-container button svg {
2713
stroke: #fff;
2814
}

assets/javascripts/redmine-tracky.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)