Skip to content

Commit 419ada3

Browse files
authored
Merge pull request #8285 from fjordllc/chore/handle-answerjs-warning
Q&A Answer部分の非Vue化の不具合修正(追加)
2 parents 0ffe595 + 954b600 commit 419ada3

File tree

3 files changed

+44
-40
lines changed

3 files changed

+44
-40
lines changed

app/javascript/answer.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,13 @@ document.addEventListener('DOMContentLoaded', () => {
1414
const answers = document.querySelectorAll('.answer')
1515
const loadingContent = document.querySelector('.loading-content')
1616
const answerContent = document.querySelector('.answer-content')
17-
if (answers) {
17+
18+
if (loadingContent && answerContent) {
1819
loadingContent.style.display = 'none'
1920
answerContent.style.display = 'block'
21+
}
2022

23+
if (answers.length > 0) {
2124
answers.forEach((answer) => {
2225
initializeAnswer(answer)
2326
})

app/javascript/new-answer.js

+39-38
Original file line numberDiff line numberDiff line change
@@ -33,20 +33,22 @@ document.addEventListener('DOMContentLoaded', () => {
3333
saveButton.disabled = editorTextarea.value.length === 0
3434
})
3535

36-
saveButton.addEventListener('click', () => {
36+
saveButton.addEventListener('click', async () => {
3737
savedAnswer = editorTextarea.value
38-
createAnswer(savedAnswer, questionId)
39-
editorTextarea.value = ''
40-
answerEditorPreview.innerHTML = markdownInitializer.render(
41-
editorTextarea.value
42-
)
43-
saveButton.disabled = true
44-
updateAnswerCount(true)
45-
updateWatchable(questionId)
46-
if (previewTab.classList.contains('is-active')) {
47-
toggleVisibility(tabElements, 'is-active')
38+
const answerCreated = await createAnswer(savedAnswer, questionId)
39+
if (answerCreated) {
40+
editorTextarea.value = ''
41+
answerEditorPreview.innerHTML = markdownInitializer.render(
42+
editorTextarea.value
43+
)
44+
saveButton.disabled = true
45+
updateAnswerCount(true)
46+
updateWatchable(questionId)
47+
if (previewTab.classList.contains('is-active')) {
48+
toggleVisibility(tabElements, 'is-active')
49+
}
50+
resizeTextarea(editorTextarea, defaultTextareaSize)
4851
}
49-
resizeTextarea(editorTextarea, defaultTextareaSize)
5052
})
5153

5254
const editTab = answerEditor.querySelector('.edit-answer-tab')
@@ -70,43 +72,42 @@ document.addEventListener('DOMContentLoaded', () => {
7072
}
7173
})
7274

73-
function createAnswer(description, questionId) {
75+
async function createAnswer(description, questionId) {
7476
if (description.length < 1) {
75-
return null
77+
return false
7678
}
7779
const params = {
7880
question_id: questionId,
7981
answer: {
8082
description: description
8183
}
8284
}
83-
fetch('/api/answers', {
84-
method: 'POST',
85-
headers: {
86-
'Content-Type': 'application/json; charset=utf-8',
87-
'X-Requested-With': 'XMLHttpRequest',
88-
'X-CSRF-Token': CSRF.getToken()
89-
},
90-
credentials: 'same-origin',
91-
redirect: 'manual',
92-
body: JSON.stringify(params)
93-
})
94-
.then((response) => {
95-
if (response.ok) {
96-
return response.text()
97-
} else {
98-
return response.json().then((data) => {
99-
throw new Error(data.errors.join(', '))
100-
})
101-
}
85+
try {
86+
const response = await fetch('/api/answers', {
87+
method: 'POST',
88+
headers: {
89+
'Content-Type': 'application/json; charset=utf-8',
90+
'X-Requested-With': 'XMLHttpRequest',
91+
'X-CSRF-Token': CSRF.getToken()
92+
},
93+
credentials: 'same-origin',
94+
redirect: 'manual',
95+
body: JSON.stringify(params)
10296
})
103-
.then((html) => {
97+
98+
if (response.ok) {
99+
const html = await response.text()
104100
initializeNewAnswer(html)
105101
toast('回答を投稿しました!')
106-
})
107-
.catch((error) => {
108-
console.warn(error)
109-
})
102+
return true
103+
} else {
104+
const data = await response.json()
105+
throw new Error(data.errors.join(', '))
106+
}
107+
} catch (error) {
108+
console.warn(error)
109+
return false
110+
}
110111
}
111112

112113
function toggleVisibility(elements, className) {

app/views/questions/show.html.slim

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ hr.a-border
3535
.answer-content style='display: none;'
3636
- if @question.ai_answer
3737
= render 'ai_answer', question: @question
38-
header.thread-comments__header.answer-content
38+
header.thread-comments__header
3939
h2.thread-comments__title
4040
| 回答・コメント
4141
.answers-list

0 commit comments

Comments
 (0)