Skip to content

Commit 079cc2f

Browse files
refactor: address pr comments.
1 parent 46492f8 commit 079cc2f

4 files changed

Lines changed: 30 additions & 15 deletions

File tree

src/app.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -435,10 +435,10 @@ let workspaceContextStatusController = {
435435
}
436436

437437
const toWorkspaceScopeMarker = value => (value === 'repository' ? 'repository' : 'local')
438-
const setWorkspaceScopeMarker = nextScope => (
439-
(workspaceScopeMarker = toWorkspaceScopeMarker(nextScope)),
438+
const setWorkspaceScopeMarker = nextScope => {
439+
workspaceScopeMarker = toWorkspaceScopeMarker(nextScope)
440440
workspaceContextStatusController.render()
441-
)
441+
}
442442

443443
const toPullRequestNumber = value => {
444444
if (typeof value === 'number' && Number.isFinite(value) && value > 0) {
@@ -524,15 +524,15 @@ const byotControls = createGitHubByotControls({
524524
onWritableRepositoriesChange: ({
525525
repositories,
526526
selectedRepository,
527-
placeholderLabel,
527+
isLoadingRepositories,
528528
}) => {
529529
githubAiContextState.writableRepositories = Array.isArray(repositories)
530530
? [...repositories]
531531
: []
532532

533533
workspaceContextStatusController.syncWritableRepositoriesState({
534534
token: githubAiContextState.token,
535-
placeholderLabel,
535+
isLoadingRepositories,
536536
})
537537

538538
if (selectedRepository || githubAiContextState.selectedRepository) {

src/index.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -347,7 +347,9 @@ <h1>
347347
class="app-grid-workspace-context-status"
348348
id="workspace-context-status"
349349
hidden
350+
role="status"
350351
aria-live="polite"
352+
aria-atomic="true"
351353
></div>
352354

353355
<div class="workspace-editors-stack">

src/modules/app-core/workspace-context-status-controller.js

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
const isValidationLoadingPlaceholder = placeholderLabel =>
2-
typeof placeholderLabel === 'string' &&
3-
placeholderLabel.trim().toLowerCase() === 'loading writable repositories...'
4-
51
const hasTokenValue = token => typeof token === 'string' && token.trim().length > 0
62

73
const createWorkspaceContextStatusController = ({
@@ -15,6 +11,7 @@ const createWorkspaceContextStatusController = ({
1511
getSelectedRepositoryFullName,
1612
}) => {
1713
let hasValidatedGitHubPat = false
14+
let hasCompletedRepositoryLoad = false
1815
const appGrid =
1916
statusNode instanceof HTMLElement ? statusNode.closest('.app-grid') : null
2017

@@ -69,13 +66,20 @@ const createWorkspaceContextStatusController = ({
6966
const syncTokenState = token => {
7067
if (!hasTokenValue(token)) {
7168
hasValidatedGitHubPat = false
69+
hasCompletedRepositoryLoad = false
70+
} else if (hasCompletedRepositoryLoad) {
71+
hasValidatedGitHubPat = true
7272
}
7373

7474
render()
7575
}
7676

77-
const syncWritableRepositoriesState = ({ token, placeholderLabel }) => {
78-
if (hasTokenValue(token) && !isValidationLoadingPlaceholder(placeholderLabel)) {
77+
const syncWritableRepositoriesState = ({ token, isLoadingRepositories = false }) => {
78+
if (!isLoadingRepositories) {
79+
hasCompletedRepositoryLoad = true
80+
}
81+
82+
if (hasTokenValue(token) && !isLoadingRepositories) {
7983
hasValidatedGitHubPat = true
8084
}
8185

src/modules/github/byot-controls.js

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ export const createGitHubByotControls = ({
153153
updateTokenAddButtonState()
154154
}
155155

156-
const clearRepoOptions = placeholderLabel => {
156+
const clearRepoOptions = (placeholderLabel, { isLoadingRepositories = false } = {}) => {
157157
if (repoSelect instanceof HTMLSelectElement) {
158158
repoSelect.replaceChildren(
159159
createDefaultRepoOption({
@@ -169,6 +169,7 @@ export const createGitHubByotControls = ({
169169
repositories: [],
170170
selectedRepository: null,
171171
placeholderLabel,
172+
isLoadingRepositories,
172173
})
173174
}
174175
}
@@ -181,7 +182,10 @@ export const createGitHubByotControls = ({
181182
return writableRepos.find(repo => repo.fullName === lastSelectedRepository) ?? null
182183
}
183184

184-
const emitWritableRepositories = ({ placeholderLabel = '' } = {}) => {
185+
const emitWritableRepositories = ({
186+
placeholderLabel = '',
187+
isLoadingRepositories = false,
188+
} = {}) => {
185189
if (typeof onWritableRepositoriesChange !== 'function') {
186190
return
187191
}
@@ -190,6 +194,7 @@ export const createGitHubByotControls = ({
190194
repositories: [...writableRepos],
191195
selectedRepository: getSelectedRepositoryObject(),
192196
placeholderLabel,
197+
isLoadingRepositories,
193198
})
194199
}
195200

@@ -302,7 +307,9 @@ export const createGitHubByotControls = ({
302307
clearAddButtonResetTimer()
303308
setTokenAddButtonState('loading')
304309

305-
clearRepoOptions('Loading writable repositories...')
310+
clearRepoOptions('Loading writable repositories...', {
311+
isLoadingRepositories: true,
312+
})
306313
setStatus('Loading writable repositories from GitHub...', 'pending')
307314

308315
try {
@@ -373,7 +380,9 @@ export const createGitHubByotControls = ({
373380
tokenInput.setAttribute('aria-label', 'GitHub token')
374381
setTokenFieldLockState(false)
375382
updateTokenActionVisibility()
376-
clearRepoOptions('Connect a token to load repositories')
383+
clearRepoOptions('Connect a token to load repositories', {
384+
isLoadingRepositories: false,
385+
})
377386
updateTokenAddButtonState()
378387
}
379388

0 commit comments

Comments
 (0)