fix(cli): scope active org labels to the active account (#16957)
This commit is contained in:
@@ -11,6 +11,11 @@ const openBrowser = (url: string) => Effect.promise(() => open(url).catch(() =>
|
|||||||
|
|
||||||
const println = (msg: string) => Effect.sync(() => UI.println(msg))
|
const println = (msg: string) => Effect.sync(() => UI.println(msg))
|
||||||
|
|
||||||
|
const isActiveOrgChoice = (
|
||||||
|
active: Option.Option<{ id: AccountID; active_org_id: OrgID | null }>,
|
||||||
|
choice: { accountID: AccountID; orgID: OrgID },
|
||||||
|
) => Option.isSome(active) && active.value.id === choice.accountID && active.value.active_org_id === choice.orgID
|
||||||
|
|
||||||
const loginEffect = Effect.fn("login")(function* (url: string) {
|
const loginEffect = Effect.fn("login")(function* (url: string) {
|
||||||
const service = yield* AccountService
|
const service = yield* AccountService
|
||||||
|
|
||||||
@@ -99,11 +104,10 @@ const switchEffect = Effect.fn("switch")(function* () {
|
|||||||
if (groups.length === 0) return yield* println("Not logged in")
|
if (groups.length === 0) return yield* println("Not logged in")
|
||||||
|
|
||||||
const active = yield* service.active()
|
const active = yield* service.active()
|
||||||
const activeOrgID = Option.flatMap(active, (a) => Option.fromNullishOr(a.active_org_id))
|
|
||||||
|
|
||||||
const opts = groups.flatMap((group) =>
|
const opts = groups.flatMap((group) =>
|
||||||
group.orgs.map((org) => {
|
group.orgs.map((org) => {
|
||||||
const isActive = Option.isSome(activeOrgID) && activeOrgID.value === org.id
|
const isActive = isActiveOrgChoice(active, { accountID: group.account.id, orgID: org.id })
|
||||||
return {
|
return {
|
||||||
value: { orgID: org.id, accountID: group.account.id, label: org.name },
|
value: { orgID: org.id, accountID: group.account.id, label: org.name },
|
||||||
label: isActive
|
label: isActive
|
||||||
@@ -132,11 +136,10 @@ const orgsEffect = Effect.fn("orgs")(function* () {
|
|||||||
if (!groups.some((group) => group.orgs.length > 0)) return yield* println("No orgs found")
|
if (!groups.some((group) => group.orgs.length > 0)) return yield* println("No orgs found")
|
||||||
|
|
||||||
const active = yield* service.active()
|
const active = yield* service.active()
|
||||||
const activeOrgID = Option.flatMap(active, (a) => Option.fromNullishOr(a.active_org_id))
|
|
||||||
|
|
||||||
for (const group of groups) {
|
for (const group of groups) {
|
||||||
for (const org of group.orgs) {
|
for (const org of group.orgs) {
|
||||||
const isActive = Option.isSome(activeOrgID) && activeOrgID.value === org.id
|
const isActive = isActiveOrgChoice(active, { accountID: group.account.id, orgID: org.id })
|
||||||
const dot = isActive ? UI.Style.TEXT_SUCCESS + "●" + UI.Style.TEXT_NORMAL : " "
|
const dot = isActive ? UI.Style.TEXT_SUCCESS + "●" + UI.Style.TEXT_NORMAL : " "
|
||||||
const name = isActive ? UI.Style.TEXT_HIGHLIGHT_BOLD + org.name + UI.Style.TEXT_NORMAL : org.name
|
const name = isActive ? UI.Style.TEXT_HIGHLIGHT_BOLD + org.name + UI.Style.TEXT_NORMAL : org.name
|
||||||
const email = UI.Style.TEXT_DIM + group.account.email + UI.Style.TEXT_NORMAL
|
const email = UI.Style.TEXT_DIM + group.account.email + UI.Style.TEXT_NORMAL
|
||||||
|
|||||||
Reference in New Issue
Block a user