feat: reply from mobile Filed (Closes #876)
This commit is contained in:
1 parent
33d7f4b884
commit
1b68223798
6 files changed
+138
-16
No files matched your search
@@ -492,6 +492,7 @@ textarea { resize: vertical; min-height: 120px; }
|
||||
.issue-edit-actions { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
|
||||
.issue-comment { padding:10px 0; border-bottom:1px solid #1b2d45; }
|
||||
.issue-comment-composer { display:grid; gap:8px; margin-top:16px; }
|
||||
.issue-comment-composer textarea { min-height:96px; }
|
||||
.issue-comment-composer button { min-height:44px; width:100%; }
|
||||
.visually-hidden { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
|
||||
.issue-attachment-controls { display:flex; max-width:100%; }
|
||||
@@ -521,14 +522,14 @@ textarea { resize: vertical; min-height: 120px; }
|
||||
.issue-milestone-editor { display:grid; gap:8px; max-width:100%; margin:14px 0; padding:12px; border:1px solid #2a496e; border-radius:12px; }
|
||||
.issue-milestone-editor select { width:100%; padding:8px; border-radius:8px; border:1px solid #1f3a5f; background:#0b1526; color:var(--text); }
|
||||
.work-milestone-filter, .issue-milestone-editor select, .issue-milestone-editor button { min-height:44px; }
|
||||
#issue-sheet.read-only .issue-comment-composer,
|
||||
#issue-sheet.read-only .issue-attachment-controls,
|
||||
#issue-sheet.read-only .issue-attachment-preview,
|
||||
#issue-sheet.read-only #issue-planning,
|
||||
#issue-sheet.read-only #issue-handoff,
|
||||
#issue-sheet.read-only #release-issue,
|
||||
#issue-sheet.read-only #close-issue,
|
||||
#issue-sheet.read-only .detail-defer,
|
||||
#issue-sheet.read-only #issue-blockers,
|
||||
#issue-sheet.read-only #load-older-issue-comments,
|
||||
#issue-sheet.read-only #retry-issue-comment-actions { display:none; }
|
||||
.issue-sheet-actions { position:sticky; bottom:0; z-index:3; display:grid; gap:8px; margin-top:14px; padding:10px 4px; padding-bottom:calc(10px + env(safe-area-inset-bottom)); background:rgba(11,21,38,.98); border-top:1px solid #2a496e; }
|
||||
.issue-sheet-actions button, .issue-sheet-actions a { min-height:44px; display:flex; align-items:center; justify-content:center; }
|
||||
|
||||
+12
-4
@@ -3329,6 +3329,7 @@
|
||||
qs('#load-older-issue-comments').hidden = true;
|
||||
qs('#issue-conversation-status').textContent = 'Loading newest messages…';
|
||||
qs('#issue-comment').value = issueController.loadDraft(item);
|
||||
qs('#issue-comment-title').textContent = readOnly ? 'Add follow-up' : 'Add comment';
|
||||
qs('#issue-comment-status').textContent = '';
|
||||
qs('#issue-handoff').open = false;
|
||||
qs('#issue-handoff-recipient').innerHTML = '<option value="">Select a teammate</option>';
|
||||
@@ -3379,9 +3380,8 @@
|
||||
'Assigned to ' + detail.assignees.join(', ') : 'No assignee reported';
|
||||
if (readOnly) paintIssueConversation(issueConversation.snapshot(), null);
|
||||
else renderIssueConversation(issueConversation.snapshot());
|
||||
if (readOnly) qs('#load-older-issue-comments').hidden = true;
|
||||
qs('#open-issue-gitea').href = detail.url || item.url || '#';
|
||||
qs('#issue-sheet-status').textContent = readOnly ? 'Filed issue ready · read-only' :
|
||||
qs('#issue-sheet-status').textContent = readOnly ? 'Filed issue ready · follow-up enabled' :
|
||||
'Issue ready · ' + (detail.state || 'open');
|
||||
qs('#edit-issue-content').disabled = false;
|
||||
const dueDraft = issueController.loadDueDateDraft(item);
|
||||
@@ -5470,7 +5470,11 @@
|
||||
button.disabled = true;
|
||||
qs('#issue-conversation-status').textContent = 'Loading older messages…';
|
||||
try {
|
||||
renderIssueConversation(await issueConversation.loadOlder());
|
||||
if (issueController.readOnly(selectedIssue)) {
|
||||
paintIssueConversation(await issueConversation.loadOlder(), null);
|
||||
} else {
|
||||
renderIssueConversation(await issueConversation.loadOlder());
|
||||
}
|
||||
panel.scrollTop += panel.scrollHeight - previousHeight;
|
||||
} catch (error) {
|
||||
qs('#issue-conversation-status').textContent = error.message + ' Loaded messages and your draft are safe; retry.';
|
||||
@@ -5703,7 +5707,11 @@
|
||||
}
|
||||
try {
|
||||
const comment = await issueController.comment(selectedIssue, preparedBody);
|
||||
if (issueConversation) renderIssueConversation(issueConversation.append(comment));
|
||||
if (issueConversation) {
|
||||
const conversation = issueConversation.append(comment);
|
||||
if (issueController.readOnly(selectedIssue)) paintIssueConversation(conversation, null);
|
||||
else renderIssueConversation(conversation);
|
||||
}
|
||||
qs('#issue-comment').value = '';
|
||||
issueAttachmentController.clear();
|
||||
qs('#issue-comment-status').textContent = 'Comment posted.';
|
||||
|
||||
@@ -48,10 +48,12 @@ function createIssueSheet({ fetchJson, storage, createConversationPager = global
|
||||
});
|
||||
},
|
||||
conversation(item, initialPage) {
|
||||
const access = this.readOnly(item) ? '&access=filed' : '';
|
||||
const pager = createConversationPager({
|
||||
loadPage: page => fetchJson(issuePath(item) + '/comments?page=' + encodeURIComponent(page) + '&limit=20', {
|
||||
headers: { Accept: 'application/json' },
|
||||
}),
|
||||
loadPage: page => fetchJson(
|
||||
issuePath(item) + '/comments?page=' + encodeURIComponent(page) + '&limit=20' + access,
|
||||
{ headers: { Accept: 'application/json' } },
|
||||
),
|
||||
});
|
||||
pager.reset(initialPage || { comments: [], page: 1, older_page: null, total: 0 });
|
||||
return pager;
|
||||
@@ -266,7 +268,8 @@ function createIssueSheet({ fetchJson, storage, createConversationPager = global
|
||||
operationId = storage?.getItem(operationKey(item)) || String(createOperationId()).slice(0, 128);
|
||||
storage?.setItem(operationKey(item), operationId);
|
||||
} catch (_error) { operationId = String(createOperationId()).slice(0, 128); }
|
||||
commentRequest = fetchJson(issuePath(item) + '/comments', {
|
||||
const access = this.readOnly(item) ? '?access=filed' : '';
|
||||
commentRequest = fetchJson(issuePath(item) + '/comments' + access, {
|
||||
method: 'POST',
|
||||
headers: { Accept: 'application/json', 'Content-Type': 'application/json', 'Idempotency-Key': operationId },
|
||||
body: JSON.stringify({ body }),
|
||||
|
||||
Reference in new issue
Block a user