dsh-plugin-github-issues 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/client.js CHANGED
@@ -358,7 +358,6 @@ var TONE = {
358
358
  dot: "var(--dsw-alias-state-business-primary, var(--dsw-alias-link))"
359
359
  }
360
360
  };
361
- var PROJECT_SCOPE_COMMAND = "gh auth refresh -h github.com -s read:project";
362
361
  function Button({ children, onClick, variant = "outline", size = "md", disabled, title, ariaLabel }) {
363
362
  return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
364
363
  "button",
@@ -513,15 +512,6 @@ function Toast({ text, onDismiss, dismissLabel }) {
513
512
  /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("button", { type: "button", className: "gh-toast-close", "aria-label": dismissLabel, title: dismissLabel, onClick: onDismiss, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(CloseGlyph, { size: 12 }) })
514
513
  ] });
515
514
  }
516
- function CommandBlock({ command, copyLabel, onCopy }) {
517
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "gh-command", children: [
518
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("code", { className: "gh-command-text", children: command }),
519
- /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(Button, { size: "sm", variant: "ghost", onClick: onCopy, children: [
520
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(CopyGlyph, { size: 12 }),
521
- copyLabel
522
- ] })
523
- ] });
524
- }
525
515
  function StyleSheet({ chunks }) {
526
516
  return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("style", { children: chunks.join("\n") });
527
517
  }
@@ -1277,7 +1267,7 @@ var PAGE_CSS = `
1277
1267
  .ghp-panel .ghp-split{flex:1;min-height:0;width:100%;align-items:stretch}
1278
1268
  .ghp-panel .ghp-list-pane{flex:1;min-width:0;overflow:auto;overscroll-behavior:contain;padding-bottom:32px}
1279
1269
  .ghp-panel .ghx-pane{flex:0 0 380px;box-sizing:border-box;width:380px;max-height:100%;min-height:0;overflow:auto;overscroll-behavior:contain;padding-bottom:32px}
1280
- .ghp-panel .ghp-scope{grid-template-columns:minmax(0,.95fr) minmax(0,.95fr) minmax(0,1.3fr) minmax(0,1.3fr) minmax(0,.95fr) minmax(0,.75fr);gap:10px;margin-top:14px}
1270
+ .ghp-panel .ghp-scope{grid-template-columns:minmax(0,1.05fr) minmax(0,1.55fr) minmax(0,1.55fr) minmax(0,1fr) minmax(0,.8fr);gap:10px;margin-top:14px}
1281
1271
  @media (max-width:860px){.ghp-panel .ghp-scope{grid-template-columns:repeat(auto-fit,minmax(124px,1fr))}}
1282
1272
  .ghp-panel .ghp-filters{margin:12px 0 6px}
1283
1273
  @media (max-width:760px){
@@ -1329,44 +1319,6 @@ function Field(props) {
1329
1319
  props.children
1330
1320
  ] });
1331
1321
  }
1332
- function ScopeCombo(props) {
1333
- const { label, value, placeholder, options, disabled, onChange } = props;
1334
- const listId = (0, import_react2.useId)();
1335
- const selected = options.find((option) => option.value === value);
1336
- const [text, setText] = (0, import_react2.useState)(selected?.label ?? "");
1337
- (0, import_react2.useEffect)(() => {
1338
- const current = options.find((option) => option.value === value);
1339
- setText(current?.label ?? "");
1340
- }, [value, options]);
1341
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment, { children: [
1342
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1343
- "input",
1344
- {
1345
- className: "gh-input",
1346
- list: listId,
1347
- value: text,
1348
- disabled: disabled === true,
1349
- placeholder,
1350
- "aria-label": label,
1351
- onChange: (event) => {
1352
- const next = event.target.value;
1353
- setText(next);
1354
- if (next === "") {
1355
- onChange(void 0);
1356
- return;
1357
- }
1358
- const match = options.find((option) => option.label === next || option.value === next);
1359
- if (match !== void 0) onChange(match.value);
1360
- },
1361
- onBlur: () => {
1362
- const current = options.find((option) => option.value === value);
1363
- setText(current?.label ?? "");
1364
- }
1365
- }
1366
- ),
1367
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("datalist", { id: listId, children: options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("option", { value: option.label }, option.value)) })
1368
- ] });
1369
- }
1370
1322
  function GitHubPage({ snapshot, actions, t, resolveSession }) {
1371
1323
  const [filter, setFilter] = (0, import_react2.useState)("");
1372
1324
  const prefs = snapshot.prefs;
@@ -1388,16 +1340,11 @@ function GitHubPage({ snapshot, actions, t, resolveSession }) {
1388
1340
  label: t(STATE_LABEL[state])
1389
1341
  }));
1390
1342
  const orgs = snapshot.catalog?.orgs ?? [];
1391
- const orgOptions = [
1392
- { value: "", label: t("panel.allOrgs") },
1393
- ...orgs.map((org) => ({ value: org.login, label: org.name === void 0 ? org.login : `${org.login} \xB7 ${org.name}` }))
1394
- ];
1395
- const projectOptions = [
1396
- { value: "", label: t("panel.allProjects") },
1397
- ...(snapshot.orgProjects ?? []).map((project) => ({ value: project.id, label: project.title }))
1398
- ];
1399
- const repoSource = prefs.org === void 0 ? snapshot.catalog?.repos ?? [] : snapshot.orgRepos?.items ?? [];
1400
- const repoOptions = repoSource.map((repo) => ({
1343
+ const orgOptions = orgs.map((org) => ({
1344
+ value: org.login,
1345
+ label: org.name === void 0 ? org.login : `${org.login} \xB7 ${org.name}`
1346
+ }));
1347
+ const repoOptions = (snapshot.orgRepos?.items ?? []).map((repo) => ({
1401
1348
  value: repo.nameWithOwner,
1402
1349
  label: `${repo.nameWithOwner}${repo.isPrivate ? ` \xB7 ${t("panel.private")}` : ""}${repo.isFork === true ? ` \xB7 ${t("panel.fork")}` : ""}`
1403
1350
  }));
@@ -1407,7 +1354,7 @@ function GitHubPage({ snapshot, actions, t, resolveSession }) {
1407
1354
  ];
1408
1355
  const milestoneTitles = [
1409
1356
  ...prefs.milestone === void 0 ? [] : [prefs.milestone],
1410
- ...snapshot.milestoneOptions ?? []
1357
+ ...(snapshot.milestoneOptions ?? []).map((item) => item.title)
1411
1358
  ].filter((title, index, all) => title !== "" && all.indexOf(title) === index);
1412
1359
  const milestoneOptions = [
1413
1360
  { value: "", label: t("panel.allMilestones") },
@@ -1421,7 +1368,7 @@ function GitHubPage({ snapshot, actions, t, resolveSession }) {
1421
1368
  const noAuth = snapshot.status?.signedIn === false;
1422
1369
  const subtitle = snapshot.status?.signedIn === true && snapshot.status.login !== void 0 ? t("settings.signedIn", { login: snapshot.status.login }) : snapshot.loading ? t("panel.loading") : "";
1423
1370
  const split = snapshot.selected !== void 0;
1424
- const scopeHint = prefs.org === void 0 ? t("panel.scopeGlobal") : `${prefs.org}${prefs.projectId === void 0 ? "" : ` \xB7 ${t("panel.project")}`}${prefs.repo === void 0 ? "" : ` \xB7 ${prefs.repo}`}`;
1371
+ const scopeHint = prefs.org === void 0 ? t("panel.scopeGlobal") : `${prefs.org}${prefs.repo === void 0 ? "" : ` \xB7 ${prefs.repo}`}${prefs.milestone === void 0 ? "" : ` \xB7 ${prefs.milestone}`}`;
1425
1372
  return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("section", { className: "ghp-page ghp-panel", "data-github-panel": true, "aria-label": t("panel"), children: [
1426
1373
  /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(StyleSheet, { chunks: [CONTROLS_CSS, PAGE_CSS, ISSUE_ROW_CSS, ISSUE_DETAIL_CSS] }),
1427
1374
  /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "ghp-content", children: [
@@ -1449,36 +1396,27 @@ function GitHubPage({ snapshot, actions, t, resolveSession }) {
1449
1396
  ariaLabel: t("panel.org"),
1450
1397
  value: prefs.org ?? "",
1451
1398
  options: orgOptions,
1452
- onChange: (value) => actions.setOrg(value === "" ? void 0 : value)
1453
- }
1454
- ) }),
1455
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Field, { label: t("panel.project"), children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1456
- Select,
1457
- {
1458
- ariaLabel: t("panel.project"),
1459
- value: prefs.org === void 0 ? "" : prefs.projectId ?? "",
1460
- options: projectOptions,
1461
- disabled: prefs.org === void 0 || snapshot.projectsBlocked,
1462
- onChange: (value) => actions.setProject(value === "" ? void 0 : value)
1399
+ disabled: orgOptions.length === 0,
1400
+ onChange: (value) => actions.setOrg(value)
1463
1401
  }
1464
1402
  ) }),
1465
1403
  /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Field, { label: t("panel.repoFilter"), children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1466
- ScopeCombo,
1404
+ Select,
1467
1405
  {
1468
- label: t("panel.repoFilter"),
1469
- value: prefs.repo,
1470
- placeholder: prefs.org === void 0 ? t("panel.allRepos") : `${t("panel.allRepos")}\uFF08${String(repoOptions.length)}\uFF09`,
1406
+ ariaLabel: t("panel.repoFilter"),
1407
+ value: prefs.repo ?? "",
1471
1408
  options: repoOptions,
1472
- onChange: (repo) => actions.setRepo(repo)
1409
+ disabled: repoOptions.length === 0,
1410
+ onChange: (value) => actions.setRepo(value)
1473
1411
  }
1474
1412
  ) }),
1475
1413
  /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Field, { label: t("panel.milestoneFilter"), children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1476
1414
  Select,
1477
1415
  {
1478
1416
  ariaLabel: t("panel.milestoneFilter"),
1479
- value: prefs.projectId === void 0 ? prefs.milestone ?? "" : "",
1417
+ value: prefs.milestone ?? "",
1480
1418
  options: milestoneOptions,
1481
- disabled: prefs.projectId !== void 0,
1419
+ disabled: prefs.repo === void 0 || snapshot.scopeLoading,
1482
1420
  onChange: (value) => actions.setMilestone(value === "" ? void 0 : value)
1483
1421
  }
1484
1422
  ) }),
@@ -1501,18 +1439,6 @@ function GitHubPage({ snapshot, actions, t, resolveSession }) {
1501
1439
  }
1502
1440
  ) })
1503
1441
  ] }),
1504
- prefs.org === void 0 && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "ghp-notice", role: "note", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { children: t("panel.pickOrgHint") }) }),
1505
- snapshot.projectsBlocked && prefs.org !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "ghp-notice", role: "note", children: [
1506
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { children: t("panel.projectsBlocked") }),
1507
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1508
- CommandBlock,
1509
- {
1510
- command: PROJECT_SCOPE_COMMAND,
1511
- copyLabel: t("panel.copyCommand"),
1512
- onCopy: () => actions.copyText(PROJECT_SCOPE_COMMAND)
1513
- }
1514
- )
1515
- ] }),
1516
1442
  /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "ghp-filters", children: [
1517
1443
  /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "ghp-search", children: [
1518
1444
  /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "ghp-search-icon", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(SearchGlyph, { size: 13 }) }),
@@ -1537,15 +1463,7 @@ function GitHubPage({ snapshot, actions, t, resolveSession }) {
1537
1463
  {
1538
1464
  message: t("panel.error", { message: listError.message }),
1539
1465
  retryLabel: t("panel.refresh"),
1540
- onRetry: () => actions.refresh(),
1541
- children: listError.code === "missing_scope" && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1542
- CommandBlock,
1543
- {
1544
- command: PROJECT_SCOPE_COMMAND,
1545
- copyLabel: t("panel.copyCommand"),
1546
- onCopy: () => actions.copyText(PROJECT_SCOPE_COMMAND)
1547
- }
1548
- )
1466
+ onRetry: () => actions.refresh()
1549
1467
  }
1550
1468
  ),
1551
1469
  showSkeleton && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "ghp-list", "aria-hidden": "true", children: [0, 1, 2, 3, 4].map((index) => /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "ghp-skeleton-row", children: [
@@ -1556,7 +1474,7 @@ function GitHubPage({ snapshot, actions, t, resolveSession }) {
1556
1474
  EmptyState,
1557
1475
  {
1558
1476
  icon: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(GitHubIcon, { size: 28 }),
1559
- title: noAuth ? t("panel.emptyAuth") : snapshot.list?.notice ?? emptyTitle(prefs, snapshot.list?.totalCount, t)
1477
+ title: noAuth ? t("panel.emptyAuth") : snapshot.list?.notice ?? t("panel.empty")
1560
1478
  }
1561
1479
  ),
1562
1480
  /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "ghp-list", children: filtered.map((card) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
@@ -1582,16 +1500,6 @@ function GitHubPage({ snapshot, actions, t, resolveSession }) {
1582
1500
  snapshot.toast !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Toast, { text: t(snapshot.toast), onDismiss: () => actions.clearToast(), dismissLabel: t("panel.close") })
1583
1501
  ] });
1584
1502
  }
1585
- function emptyTitle(prefs, total, t) {
1586
- const projectId = prefs.org === void 0 ? void 0 : prefs.projectId;
1587
- if (projectId !== void 0 && prefs.assignee === "@me") {
1588
- return t("panel.emptyProjectMe", { count: total ?? 0 });
1589
- }
1590
- if (projectId !== void 0 && prefs.state === "open") {
1591
- return t("panel.emptyProjectOpen");
1592
- }
1593
- return t("panel.empty");
1594
- }
1595
1503
 
1596
1504
  // src/client/views/Settings.tsx
1597
1505
  var import_react3 = require("react");
@@ -1683,18 +1591,6 @@ function GitHubSettings({ snapshot, actions, t }) {
1683
1591
  /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "ghs-scopes", children: [
1684
1592
  /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "gh-field-label", children: t("settings.scopes") }),
1685
1593
  status.scopes.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "ghp-muted", children: "\u2014" }) : status.scopes.map((scope) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Badge, { tone: "neutral", children: scope }, scope))
1686
- ] }),
1687
- status.missingProjectScope && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "ghs-warn", role: "note", children: [
1688
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { children: t("settings.missingProject") }),
1689
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "ghp-muted", children: t("settings.command") }),
1690
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1691
- CommandBlock,
1692
- {
1693
- command: PROJECT_SCOPE_COMMAND,
1694
- copyLabel: t("settings.copy"),
1695
- onCopy: () => actions.copyText(PROJECT_SCOPE_COMMAND)
1696
- }
1697
- )
1698
1594
  ] })
1699
1595
  ] })
1700
1596
  ] }),
@@ -2661,24 +2557,16 @@ var GitHubStore = class {
2661
2557
  remote.status().then((result) => unwrap(result)),
2662
2558
  remote.loadPrefs().then((result) => unwrap(result))
2663
2559
  ]);
2664
- let sanePrefs = prefs.projectId !== void 0 && prefs.org === void 0 ? { ...prefs, projectId: void 0, repo: prefs.repo } : prefs;
2665
- if (sanePrefs.projectId !== void 0 && sanePrefs.milestone !== void 0) {
2666
- sanePrefs = { ...sanePrefs, milestone: void 0 };
2667
- void this.savePrefs({ milestone: null });
2668
- }
2669
2560
  this.update({
2670
2561
  status,
2671
- prefs: sanePrefs,
2562
+ prefs: { ...prefs, projectId: void 0 },
2672
2563
  projectsBlocked: status.missingProjectScope,
2673
2564
  loading: false
2674
2565
  });
2675
- if (sanePrefs.projectId === void 0 && prefs.projectId !== void 0) {
2676
- void this.savePrefs({ projectId: null });
2677
- }
2678
- if (sanePrefs.repo !== void 0) void this.loadRepoMilestones(sanePrefs.repo);
2679
- void this.loadCatalog();
2566
+ if (prefs.projectId !== void 0) void this.savePrefs({ projectId: null });
2680
2567
  void this.loadLinks();
2681
- if (prefs.org !== void 0) void this.loadOrgScope(prefs.org);
2568
+ await this.loadCatalog();
2569
+ await this.ensureScopeSelection();
2682
2570
  await this.reloadList();
2683
2571
  this.schedulePolling(status.config.pollSeconds);
2684
2572
  void this.hydratePinned();
@@ -2727,14 +2615,21 @@ var GitHubStore = class {
2727
2615
  after
2728
2616
  };
2729
2617
  if (prefs.org !== void 0) request.org = prefs.org;
2730
- if (prefs.org !== void 0 && prefs.projectId !== void 0) request.projectId = prefs.projectId;
2731
2618
  if (prefs.repo !== void 0) request.repos = [prefs.repo];
2732
- if (prefs.projectId === void 0 && prefs.milestone !== void 0) request.milestone = prefs.milestone;
2619
+ if (prefs.milestone !== void 0) {
2620
+ request.milestone = prefs.milestone;
2621
+ const option = this.snapshot.milestoneOptions.find((item) => item.title === prefs.milestone);
2622
+ if (option !== void 0) request.milestoneNumber = option.number;
2623
+ }
2733
2624
  return request;
2734
2625
  }
2735
2626
  /** Fetch the first page of the current cascade. */
2736
2627
  async reloadList(quiet = false) {
2737
2628
  const seq = ++this.listSeq;
2629
+ if (this.snapshot.prefs.repo === void 0) {
2630
+ this.update({ list: void 0, loading: false, loadingMore: false });
2631
+ return;
2632
+ }
2738
2633
  if (!quiet) this.update({ loading: true, error: void 0 });
2739
2634
  try {
2740
2635
  const remote = await this.api();
@@ -2746,7 +2641,6 @@ var GitHubStore = class {
2746
2641
  loadingMore: false,
2747
2642
  error: void 0
2748
2643
  });
2749
- this.rememberMilestones(page.items);
2750
2644
  this.refreshPinnedCard();
2751
2645
  } catch (error) {
2752
2646
  if (seq !== this.listSeq) return;
@@ -2759,55 +2653,73 @@ var GitHubStore = class {
2759
2653
  try {
2760
2654
  const remote = await this.api();
2761
2655
  const catalog = await remote.catalog().then((result) => unwrap(result));
2762
- this.update({
2763
- catalog,
2764
- projectsBlocked: this.snapshot.status?.missingProjectScope === true || catalog.projectsBlocked
2765
- });
2656
+ this.update({ catalog });
2766
2657
  } catch (error) {
2767
2658
  this.update({ error: asPanelError(error) });
2768
2659
  }
2769
2660
  }
2770
- /**
2771
- * Load the projects and repositories of one organization, once per session.
2772
- * A Projects v2 permission failure degrades to `projectsBlocked` while the
2773
- * repository list still works.
2774
- */
2661
+ /** Load one organization's repositories, once per session. */
2775
2662
  async loadOrgScope(org) {
2776
2663
  const cached = this.orgScopes.get(org);
2777
2664
  if (cached !== void 0) {
2778
- this.update({
2779
- orgProjects: cached.projects,
2780
- orgRepos: cached.repos,
2781
- projectsBlocked: cached.blocked || this.snapshot.status?.missingProjectScope === true,
2782
- ...cached.error === void 0 ? { projectsError: void 0 } : { projectsError: cached.error }
2783
- });
2665
+ this.update({ orgRepos: cached.repos, scopeLoading: false });
2784
2666
  return;
2785
2667
  }
2786
2668
  this.update({ scopeLoading: true });
2787
2669
  try {
2788
2670
  const remote = await this.api();
2789
- const [projects, repos] = await Promise.all([
2790
- remote.orgProjects(org).then((result) => unwrap(result)),
2791
- remote.orgRepos(org).then((result) => unwrap(result))
2792
- ]);
2793
- const scope = {
2794
- projects: projects.projects,
2795
- repos,
2796
- blocked: projects.blocked || this.snapshot.status?.missingProjectScope === true,
2797
- ...projects.error === void 0 ? {} : { error: projects.error }
2798
- };
2799
- this.orgScopes.set(org, scope);
2800
- this.update({
2801
- orgProjects: scope.projects,
2802
- orgRepos: scope.repos,
2803
- projectsBlocked: scope.blocked,
2804
- ...scope.error === void 0 ? { projectsError: void 0 } : { projectsError: scope.error },
2805
- scopeLoading: false
2806
- });
2671
+ const repos = await remote.orgRepos(org).then((result) => unwrap(result));
2672
+ this.orgScopes.set(org, { repos });
2673
+ this.update({ orgRepos: repos, scopeLoading: false });
2807
2674
  } catch (error) {
2808
2675
  this.update({ scopeLoading: false, error: asPanelError(error) });
2809
2676
  }
2810
2677
  }
2678
+ /**
2679
+ * Choose an organization when none is restored (or the saved one vanished).
2680
+ * @returns completion once its repository page is loaded.
2681
+ */
2682
+ async ensureOrgSelection() {
2683
+ const orgs = this.snapshot.catalog?.orgs ?? [];
2684
+ if (orgs.length === 0) return;
2685
+ const current = this.snapshot.prefs.org;
2686
+ const chosen = current !== void 0 && orgs.some((org) => org.login === current) ? current : orgs[0]?.login;
2687
+ if (chosen === void 0) return;
2688
+ if (chosen !== current) {
2689
+ this.resetMilestoneOptions();
2690
+ this.update({
2691
+ prefs: { ...this.snapshot.prefs, org: chosen, repo: void 0, milestone: void 0, projectId: void 0 },
2692
+ orgRepos: void 0
2693
+ });
2694
+ await this.savePrefs({ org: chosen, projectId: null, repo: null, milestone: null });
2695
+ }
2696
+ await this.loadOrgScope(chosen);
2697
+ await this.ensureRepoSelection();
2698
+ }
2699
+ /**
2700
+ * Choose a repository when none is restored (or it does not belong to the
2701
+ * organization). The repository picker has no "all repositories" state.
2702
+ * @returns completion once the milestone list is loaded.
2703
+ */
2704
+ async ensureRepoSelection() {
2705
+ const repos = this.snapshot.orgRepos?.items ?? [];
2706
+ if (repos.length === 0) return;
2707
+ const current = this.snapshot.prefs.repo;
2708
+ const valid = current !== void 0 && repos.some((repo) => repo.nameWithOwner === current);
2709
+ const chosen = valid ? current : repos[0]?.nameWithOwner;
2710
+ if (chosen === void 0) return;
2711
+ if (chosen !== current) {
2712
+ this.resetMilestoneOptions();
2713
+ this.update({ prefs: { ...this.snapshot.prefs, repo: chosen, milestone: void 0 } });
2714
+ await this.savePrefs({ repo: chosen, milestone: null });
2715
+ }
2716
+ await this.loadRepoMilestones(chosen);
2717
+ await this.pruneMilestone(chosen);
2718
+ }
2719
+ /** The default scope selection used by bootstrap. */
2720
+ async ensureScopeSelection() {
2721
+ await this.ensureOrgSelection();
2722
+ }
2811
2723
  /** Keep the dock's copy of the pinned issue in sync with the loaded list. */
2812
2724
  refreshPinnedCard() {
2813
2725
  const pinned = this.snapshot.prefs.pinned;
@@ -2854,22 +2766,21 @@ var GitHubStore = class {
2854
2766
  await remote.refresh();
2855
2767
  const status = await remote.status().then((result) => unwrap(result));
2856
2768
  this.orgScopes.clear();
2769
+ this.resetMilestoneOptions();
2857
2770
  this.update({
2858
2771
  status,
2859
2772
  catalog: void 0,
2860
- orgProjects: void 0,
2861
2773
  orgRepos: void 0,
2862
- projectsBlocked: status.missingProjectScope,
2774
+ projectsBlocked: false,
2863
2775
  projectsError: void 0
2864
2776
  });
2865
2777
  } catch (error) {
2866
2778
  this.update({ error: asPanelError(error) });
2867
2779
  return;
2868
2780
  }
2869
- const org = this.snapshot.prefs.org;
2870
- if (org !== void 0) void this.loadOrgScope(org);
2781
+ await this.loadCatalog();
2782
+ await this.ensureScopeSelection();
2871
2783
  await this.reloadList();
2872
- void this.loadCatalog();
2873
2784
  })();
2874
2785
  }
2875
2786
  loadMore() {
@@ -2880,7 +2791,6 @@ var GitHubStore = class {
2880
2791
  try {
2881
2792
  const remote = await this.api();
2882
2793
  const next = await remote.listIssues(this.request(page.pageInfo.endCursor)).then((result) => unwrap(result));
2883
- this.rememberMilestones(next.items);
2884
2794
  this.update({
2885
2795
  loadingMore: false,
2886
2796
  list: {
@@ -2896,23 +2806,24 @@ var GitHubStore = class {
2896
2806
  })();
2897
2807
  }
2898
2808
  setOrg(org) {
2809
+ if (org === this.snapshot.prefs.org) return;
2899
2810
  this.resetMilestoneOptions();
2900
- void this.savePrefs({ org: org ?? null, projectId: null, repo: null, milestone: null }, async (saved) => {
2901
- this.update({ orgProjects: void 0, orgRepos: void 0 });
2902
- if (saved.org !== void 0) await this.loadOrgScope(saved.org);
2903
- });
2904
- }
2905
- setProject(projectId) {
2906
- if (projectId !== void 0) this.resetMilestoneOptions();
2907
- void this.savePrefs({
2908
- projectId: projectId ?? null,
2909
- ...projectId === void 0 ? {} : { milestone: null }
2811
+ void this.savePrefs({ org, projectId: null, repo: null, milestone: null }, async (saved) => {
2812
+ this.update({ orgRepos: void 0 });
2813
+ if (saved.org !== void 0) {
2814
+ await this.loadOrgScope(saved.org);
2815
+ await this.ensureRepoSelection();
2816
+ }
2910
2817
  });
2911
2818
  }
2912
2819
  setRepo(repo) {
2820
+ if (repo === this.snapshot.prefs.repo) return;
2913
2821
  this.resetMilestoneOptions();
2914
- void this.savePrefs({ repo: repo ?? null, milestone: null }, async (saved) => {
2915
- if (saved.repo !== void 0) await this.loadRepoMilestones(saved.repo);
2822
+ void this.savePrefs({ repo, milestone: null }, async (saved) => {
2823
+ if (saved.repo !== void 0) {
2824
+ await this.loadRepoMilestones(saved.repo);
2825
+ await this.pruneMilestone(saved.repo);
2826
+ }
2916
2827
  });
2917
2828
  }
2918
2829
  setMilestone(milestone) {
@@ -2922,24 +2833,14 @@ var GitHubStore = class {
2922
2833
  resetMilestoneOptions() {
2923
2834
  if (this.snapshot.milestoneOptions.length !== 0) this.update({ milestoneOptions: [] });
2924
2835
  }
2925
- /** Merge milestones seen in one list page into the picker's options. */
2926
- rememberMilestones(items) {
2927
- const options = [...this.snapshot.milestoneOptions];
2928
- const seen = new Set(options);
2836
+ /** Drop a milestone that the selected repository no longer lists. */
2837
+ async pruneMilestone(repo) {
2929
2838
  const selected = this.snapshot.prefs.milestone;
2930
- let changed = false;
2931
- for (const card of items) {
2932
- const title = card.milestone?.title;
2933
- if (title === void 0 || title === "" || seen.has(title)) continue;
2934
- seen.add(title);
2935
- options.push(title);
2936
- changed = true;
2937
- }
2938
- if (selected !== void 0 && !seen.has(selected)) {
2939
- options.unshift(selected);
2940
- changed = true;
2941
- }
2942
- if (changed) this.update({ milestoneOptions: options });
2839
+ if (selected === void 0 || this.snapshot.prefs.repo !== repo) return;
2840
+ const options = this.snapshot.milestoneOptions;
2841
+ if (options.length === 0) return;
2842
+ if (options.some((option) => option.title === selected)) return;
2843
+ await this.savePrefs({ milestone: null });
2943
2844
  }
2944
2845
  /** Seed the picker from the selected repository's full milestone list. */
2945
2846
  async loadRepoMilestones(repo) {
@@ -2948,11 +2849,11 @@ var GitHubStore = class {
2948
2849
  const result = await remote.repoMilestones(repo).then((response) => unwrap(response));
2949
2850
  if (this.snapshot.prefs.repo !== repo) return;
2950
2851
  const options = [...this.snapshot.milestoneOptions];
2951
- const seen = new Set(options);
2952
- for (const title of result.milestones) {
2953
- if (title === "" || seen.has(title)) continue;
2954
- seen.add(title);
2955
- options.push(title);
2852
+ const seen = new Set(options.map((option) => option.title));
2853
+ for (const option of result.milestones) {
2854
+ if (option.title === "" || seen.has(option.title)) continue;
2855
+ seen.add(option.title);
2856
+ options.push(option);
2956
2857
  }
2957
2858
  this.update({ milestoneOptions: options });
2958
2859
  } catch {
@@ -2995,7 +2896,7 @@ var GitHubStore = class {
2995
2896
  try {
2996
2897
  const remote = await this.api();
2997
2898
  const saved = await remote.savePrefs(patch).then((result) => unwrap(result));
2998
- const affectsList = ["org", "projectId", "repo", "assignee", "state", "milestone"].some((key) => key in patch);
2899
+ const affectsList = ["org", "repo", "assignee", "state", "milestone"].some((key) => key in patch);
2999
2900
  this.update({ prefs: saved });
3000
2901
  if (affectsList) {
3001
2902
  await this.reloadList();
package/lib/controller.js CHANGED
@@ -249,7 +249,7 @@ let GitHubIssuesController = (() => {
249
249
  async issueDetail(repo, number) {
250
250
  return this.withApi(api => api.issueDetail(repo, number));
251
251
  }
252
- /** One repository's milestone titles, for the milestone picker. */
252
+ /** One repository's milestones, for the picker and its list filter. */
253
253
  async repoMilestones(repo) {
254
254
  return this.withApi(api => api.repoMilestones(repo));
255
255
  }
@@ -1 +1 @@
1
- {"version":3,"file":"controller.js","sourceRoot":"","sources":["../src/controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"controller.js","sourceRoot":"","sources":["../src/controller.ts"],"names":[],"mappings":"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"}