@sprucelabs/spruce-cli
Version:
Command line interface for building Spruce skills.
86 lines (67 loc) • 2.35 kB
text/typescript
import { eventResponseUtil } from '@sprucelabs/spruce-event-utils'
import AbstractStore from '../../../stores/AbstractStore'
export default class OrganizationStore extends AbstractStore {
public name = 'organization'
public async isSkillInstalledAtOrg(skillId: string, orgId: string) {
const client = await this.connectToApi()
const results = await client.emit('is-skill-installed::v2020_12_25', {
target: {
organizationId: orgId,
},
payload: {
skillId,
},
})
const { isInstalled } =
eventResponseUtil.getFirstResponseOrThrow(results)
return isInstalled
}
public async installSkillAtOrganization(
skillId: string,
orgId: any
): Promise<void> {
const client = await this.connectToApi()
const results = await client.emit('install-skill::v2020_12_25', {
target: {
organizationId: orgId,
},
payload: {
skillId,
},
})
eventResponseUtil.getFirstResponseOrThrow(results)
}
public async fetchMyOrganizations() {
const client = await this.connectToApi()
const results = await client.emit('list-organizations::v2020_12_25', {
payload: {
shouldOnlyShowMine: true,
},
})
const { organizations } =
eventResponseUtil.getFirstResponseOrThrow(results)
return organizations
}
public async create(values: { name: string; slug?: string }) {
const { name, slug } = values
const client = await this.connectToApi()
const results = await client.emit('create-organization::v2020_12_25', {
payload: {
name,
slug,
},
})
const { organization } =
eventResponseUtil.getFirstResponseOrThrow(results)
return organization
}
public async deleteOrganization(orgId: string) {
const client = await this.connectToApi()
const results = await client.emit('delete-organization::v2020_12_25', {
target: {
organizationId: orgId,
},
})
eventResponseUtil.getFirstResponseOrThrow(results)
}
}